diff --git a/doc/modules/classes.rst b/doc/modules/classes.rst
index 61b17a5a12ab290ba16c8a80ccb383d9317b5e9b..88088ff6e713fa7c7d62bf2d29d851d0471adacc 100644
--- a/doc/modules/classes.rst
+++ b/doc/modules/classes.rst
@@ -390,6 +390,8 @@ Signal Decomposition
    decomposition.fastica
    decomposition.dict_learning
    decomposition.dict_learning_online
+   decomposition.sparse_encode
+   decomposition.sparse_encode_parallel
 
 
 Linear Discriminant Analysis
diff --git a/doc/modules/decomposition.rst b/doc/modules/decomposition.rst
index ed00de58f4bddafc88ee11930e6592509971925b..9565426ad6f19863acaeb24213f692ffb35f86dc 100644
--- a/doc/modules/decomposition.rst
+++ b/doc/modules/decomposition.rst
@@ -263,6 +263,18 @@ dictionary fixed, and then updating the dictionary to best fit the sparse code.
                 \text{subject to\,} & ||V_k||_2 = 1 \text{ for all }
                 0 \leq k < n_{atoms}
 
+
+.. |pca_img| image:: ../auto_examples/decomposition/images/plot_faces_decomposition_2.png
+   :target: ../auto_examples/decomposition/plot_faces_decomposition.html
+   :scale: 60%
+
+.. |dict_img| image:: ../auto_examples/decomposition/images/plot_faces_decomposition_6.png
+   :target: ../auto_examples/decomposition/plot_faces_decomposition.html
+   :scale: 60%
+
+.. centered:: |pca_img| |dict_img|
+
+
 After using such a procedure to fit the dictionary, the fitted object can be 
 used to transform new data. The transformation amounts to a sparse coding
 problem: finding a representation of the data as a linear combination of as few
@@ -310,12 +322,6 @@ extracted from part of the image of Lena looks like.
     :scale: 50%
 
 
-.. figure:: ../auto_examples/decomposition/images/plot_faces_decomposition_6.png
-   :target: ../auto_examples/decomposition/plot_faces_decomposition.html
-   :align: center
-   :scale: 50%
-
-
 .. topic:: Examples:
 
   * :ref:`example_decomposition_plot_image_denoising.py`
diff --git a/sklearn/decomposition/__init__.py b/sklearn/decomposition/__init__.py
index 748832041db71068999a6b3374e6bdb18593c401..63c0bb1bc3bb59c763a58fea6cfb4cc99cebbc6a 100644
--- a/sklearn/decomposition/__init__.py
+++ b/sklearn/decomposition/__init__.py
@@ -8,4 +8,5 @@ from .kernel_pca import KernelPCA
 from .sparse_pca import SparsePCA, MiniBatchSparsePCA
 from .fastica_ import FastICA, fastica
 from .dict_learning import dict_learning, dict_learning_online, \
-                           DictionaryLearning, MiniBatchDictionaryLearning
+                           DictionaryLearning, MiniBatchDictionaryLearning, \
+                           sparse_encode, sparse_encode_parallel
diff --git a/sklearn/decomposition/dict_learning.py b/sklearn/decomposition/dict_learning.py
index b8e74087b68daf0741486602856079e21a6ee73f..a4e71dda33cd356d8cdd332bcfa808b9c12423ba 100644
--- a/sklearn/decomposition/dict_learning.py
+++ b/sklearn/decomposition/dict_learning.py
@@ -80,6 +80,12 @@ def sparse_encode(X, Y, gram=None, cov=None, algorithm='lasso_lars',
     -------
     code: array of shape (n_components, n_features)
         The sparse codes
+
+    See also
+    --------
+    linear_model.lars_path
+    linear_model.orthogonal_mp
+    linear_model.Lasso
     """
     alpha = float(alpha) if alpha is not None else None
     X, Y = map(np.asanyarray, (X, Y))
@@ -223,6 +229,12 @@ def sparse_encode_parallel(X, Y, gram=None, cov=None, algorithm='lasso_lars',
     -------
     code: array of shape (n_components, n_features)
         The sparse codes
+
+    See also
+    --------
+    linear_model.lars_path
+    linear_model.orthogonal_mp
+    linear_model.Lasso
     """
     n_samples, n_features = Y.shape
     n_components = X.shape[1]
diff --git a/sklearn/linear_model/coordinate_descent.py b/sklearn/linear_model/coordinate_descent.py
index 6a19bdb97bf7fa81acb3e78d11703233cf52993e..b124c955136671cc4e1d9fea7577412517656479 100644
--- a/sklearn/linear_model/coordinate_descent.py
+++ b/sklearn/linear_model/coordinate_descent.py
@@ -240,6 +240,8 @@ class Lasso(ElasticNet):
     See also
     --------
     LassoLars
+    decomposition.sparse_encode
+    decomposition.sparse_encode_parallel
 
     Notes
     -----
diff --git a/sklearn/linear_model/least_angle.py b/sklearn/linear_model/least_angle.py
index 1d135a62b571321879061807183b99514d741810..6b79659d2da7490f59e08b8e180f1789f10891ce 100644
--- a/sklearn/linear_model/least_angle.py
+++ b/sklearn/linear_model/least_angle.py
@@ -69,7 +69,10 @@ def lars_path(X, y, Xy=None, Gram=None, max_iter=500,
 
     See also
     --------
-    :ref:`LassoLars`, :ref:`Lars`
+    :ref:`LassoLars`
+    :ref:`Lars`
+    decomposition.sparse_encode
+    decomposition.sparse_encode_parallel
 
     Notes
     ------
@@ -358,6 +361,7 @@ class Lars(LinearModel):
     See also
     --------
     lars_path, LassoLARS, LarsCV, LassoLarsCV
+    decomposition.sparse_encode, decomposition.sparse_encode_parallel
     """
     def __init__(self, fit_intercept=True, verbose=False, normalize=True,
                  precompute='auto', n_nonzero_coefs=500,
diff --git a/sklearn/linear_model/omp.py b/sklearn/linear_model/omp.py
index 81b4f38ed8582e6c71e22747dab6d0c1f62d9fa2..7c7a84c73e7e55dc1124985958032163da4f48f4 100644
--- a/sklearn/linear_model/omp.py
+++ b/sklearn/linear_model/omp.py
@@ -250,6 +250,8 @@ def orthogonal_mp(X, y, n_nonzero_coefs=None, tol=None, precompute_gram=False,
     OrthogonalMatchingPursuit
     orthogonal_mp_gram
     lars_path
+    decomposition.sparse_encode
+    decomposition.sparse_encode_parallel
 
     Notes
     -----
@@ -349,6 +351,8 @@ def orthogonal_mp_gram(Gram, Xy, n_nonzero_coefs=None, tol=None,
     OrthogonalMatchingPursuit
     orthogonal_mp
     lars_path
+    decomposition.sparse_encode
+    decomposition.sparse_encode_parallel
 
     Notes
     -----
@@ -459,6 +463,8 @@ class OrthogonalMatchingPursuit(LinearModel):
     lars_path
     Lars
     LassoLars
+    decomposition.sparse_encode
+    decomposition.sparse_encode_parallel
 
     """
     def __init__(self, overwrite_X=False, overwrite_gram=False,