diff --git a/doc/source/reference/kwant.solvers.common.rst b/doc/source/reference/kwant.solvers.common.rst
index 282b8dddcd5d37ab370a98aec2a0d4343a1b64c4..2d120120128bc959c23dd5672b3f390c6636531f 100644
--- a/doc/source/reference/kwant.solvers.common.rst
+++ b/doc/source/reference/kwant.solvers.common.rst
@@ -1,7 +1,10 @@
 :mod:`kwant.solvers.common` -- common functionality used by solvers
 ===================================================================
 
-.. automodule:: kwant.solvers.common
+.. module:: kwant.solvers.common
+
+This module typically needs not be used directly by the user.  It is rather
+used by the individual solver modules.
 
 .. autosummary::
    :toctree: generated/
diff --git a/doc/source/reference/kwant.solvers.mumps.rst b/doc/source/reference/kwant.solvers.mumps.rst
index 418e54a5aa6d417c68158e3ffba135b3822556eb..de20ccd208a989da0cee9b3cf4c7487fbbe81bbf 100644
--- a/doc/source/reference/kwant.solvers.mumps.rst
+++ b/doc/source/reference/kwant.solvers.mumps.rst
@@ -1,7 +1,24 @@
 :mod:`kwant.solvers.mumps` -- High performance sparse solver based on MUMPS
 ===========================================================================
 
-.. automodule:: kwant.solvers.mumps
+.. module:: kwant.solvers.mumps
+
+A sparse solver that uses `MUMPS <http://graal.ens-lyon.fr/MUMPS/>`_.  (Only
+the sequential, single core version is used.)
+
+MUMPS is a very efficient direct sparse solver that can take advantage of
+memory beyond 3GB for the solution of large problems.  Furthermore, it offers a
+choice of several orderings of the input matrix from which can speed up a
+calculation significantly.
+
+Compared to the generic sparse solver framework, `mumps` adds the following
+control options that may affect performance:
+
+- `ordering`: a fill-in reducing ordering of the matrix
+- `nrhs`: number of right hand sides that should be solved simultaneously
+- `sparse_rhs`: whether to use dense or sparse right hand sides
+
+For more details see `~Solver.options`.
 
 .. autosummary::
    :toctree: generated/
diff --git a/doc/source/reference/kwant.solvers.sparse.rst b/doc/source/reference/kwant.solvers.sparse.rst
index ff10c25070a8517e8cf5abb4d8f2cc510cb7b018..00947d84b71900fe5604281ceb81bca1b50f27fa 100644
--- a/doc/source/reference/kwant.solvers.sparse.rst
+++ b/doc/source/reference/kwant.solvers.sparse.rst
@@ -1,7 +1,18 @@
 :mod:`kwant.solvers.sparse` -- Basic sparse matrix solver
 =========================================================
 
-.. automodule:: kwant.solvers.sparse
+.. module:: kwant.solvers.sparse
+
+A sparse solver that uses `scipy.sparse.linalg
+<http://docs.scipy.org/doc/scipy/reference/sparse.linalg.html>`_.
+
+SciPy currently uses internally either the direct sparse solver UMFPACK or if
+that is not installed, SuperLU. Often, SciPy's SuperLU will give quite poor
+performance and you will be warned if only SuperLU is found.  The module
+variable `uses_umfpack` can be checked to determine if UMFPACK is being used.
+
+`sparse` does not introduce any additional options as compared to the generic
+sparse solver framework.
 
 .. autosummary::
    :toctree: generated/
diff --git a/kwant/solvers/common.py b/kwant/solvers/common.py
index 47ff6fc985b5908b544859c3b069ca15ba7774d3..7da4ad3cb6faaebe828fe4db49ddce9502ec68b0 100644
--- a/kwant/solvers/common.py
+++ b/kwant/solvers/common.py
@@ -1,9 +1,3 @@
-"""Collection of things commonly used by the different solvers.
-
-Typically needs not be called by the user, but is rather used by the
-individual solver modules
-"""
-
 __all__ = ['SparseSolver', 'BlockResult']
 
 from collections import namedtuple
diff --git a/kwant/solvers/mumps.py b/kwant/solvers/mumps.py
index e290d755deb328dca0493d32d4bbb77091665a59..9b3b04ff900161d5678a45d6f00e7ceda17c28b7 100644
--- a/kwant/solvers/mumps.py
+++ b/kwant/solvers/mumps.py
@@ -1,22 +1,3 @@
-"""Implementation of the sparse solver framework using the direct sparse solver
-MUMPS (http://graal.ens-lyon.fr/MUMPS/, only the sequential, single core
-version is used).
-
-MUMPS is a very efficient direct sparse solver that can take advantage of
-memory beyond 3GB for the solution of large problems.  Furthermore, it offers a
-choice of several orderings of the input matrix from which can speed up a
-calculation significantly.
-
-Compared to the generic sparse solver framework, `mumps` adds the following
-control options that may affect performance:
-
-- `ordering`: a fill-in reducing ordering of the matrix
-- `nrhs`: number of right hand sides that should be solved simultaneously
-- `sparse_rhs`: whether to use dense or sparse right hand sides
-
-For more details see `~Solver.options`.
-"""
-
 __all__ = ['solve', 'ldos', 'wave_func', 'options', 'Solver']
 
 import numpy as np
diff --git a/kwant/solvers/sparse.py b/kwant/solvers/sparse.py
index 9d6dfa4f7d8ca1f8988561fee8d948d45da90a19..8192870be5ed6dea1062c98c8e537fec1969df98 100644
--- a/kwant/solvers/sparse.py
+++ b/kwant/solvers/sparse.py
@@ -1,16 +1,3 @@
-"""Implementation of the sparse solver framework using the direct sparse solver
-provided by `scipy.sparse.linalg
-<http://docs.scipy.org/doc/scipy/reference/sparse.linalg.html>`.
-
-SciPy currently uses internally either the direct sparse solver UMFPACK or if
-that is not installed, SuperLU. Often, SciPy's SuperLU will give quite poor
-performance and you will be warned if only SuperLU is found.  The module
-variable `uses_umfpack` can be checked to determine if UMFPACK is being used.
-
-`sparse` does not introduce any additional options as compared to the generic
-sparse solver framework.
-"""
-
 __all__ = ['solve', 'ldos', 'wave_func', 'Solver']
 
 import warnings