diff --git a/__init__.py b/__init__.py
index c3d7a14b2b75bc5cc5e808e1ccfe6d61b4112ce6..de7d10968e5919b169e75f43f8b62cdfc90ebdc9 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1 +1,3 @@
+from .. import common
+
 from ._istl import *
diff --git a/_istl.cc b/_istl.cc
index eaf6418eda715998f38cb89ad9653e1b80b57baa..0d6f3d5ac9e70dde5d6b5f9c90596e8c0f2492f9 100644
--- a/_istl.cc
+++ b/_istl.cc
@@ -9,17 +9,34 @@
 
 #include <dune/corepy/istl/bcrsmatrix.hh>
 #include <dune/corepy/istl/bvector.hh>
+#include <dune/corepy/istl/operators.hh>
+#include <dune/corepy/istl/preconditioners.hh>
+#include <dune/corepy/istl/solvers.hh>
 
 #include <dune/corepy/pybind11/pybind11.h>
 
 PYBIND11_MODULE( _istl, module )
 {
-  Dune::CorePy::registerBCRSMatrix< Dune::BCRSMatrix< Dune::FieldMatrix< double, 1, 1 > > >( module );
-  Dune::CorePy::registerBlockVector< Dune::BlockVector< Dune::FieldVector< double, 1 > > >( module );
-
   // export solver category
   pybind11::enum_< Dune::SolverCategory::Category > solverCategory( module, "SolverCategory" );
   solverCategory.value( "sequential", Dune::SolverCategory::sequential );
   solverCategory.value( "nonoverlapping", Dune::SolverCategory::nonoverlapping );
   solverCategory.value( "overlapping", Dune::SolverCategory::overlapping );
+
+  // export block vector with block size 1
+  typedef Dune::BlockVector< Dune::FieldVector< double, 1 > > Vector;
+  Dune::CorePy::registerBlockVector< Vector >( module );
+
+  // export linear operator, preconditioners, and solvers for blockvectors with block size 1
+  pybind11::class_< Dune::LinearOperator< Vector, Vector > > clsLinearOperator( module, "LinearOperator" );
+  Dune::CorePy::registerLinearOperator( clsLinearOperator );
+  Dune::CorePy::registerPreconditioners( module, clsLinearOperator );
+  Dune::CorePy::registerSolvers( module, clsLinearOperator );
+
+  // export BCRS matrix with block size 1x1
+  typedef Dune::BCRSMatrix< Dune::FieldMatrix< double, 1, 1 > > Matrix;
+  Dune::CorePy::registerBCRSMatrix< Matrix >( module );
+
+  // export matrix-based preconditioners for BCRS matrix with block size 1x1
+  Dune::CorePy::registerMatrixPreconditioners< Matrix >( module, clsLinearOperator );
 }