diff --git a/dune/solvers/solvers/umfpacksolver.hh b/dune/solvers/solvers/umfpacksolver.hh
index a89bfeb851f828d5772e87407c249aeb494af2ea..7f11280dbf7af942548c7a25b27a5a4cf336b1a6 100644
--- a/dune/solvers/solvers/umfpacksolver.hh
+++ b/dune/solvers/solvers/umfpacksolver.hh
@@ -18,7 +18,7 @@
 #include <dune/istl/io.hh>
 
 #include <dune/solvers/common/canignore.hh>
-#include <dune/solvers/solvers/solver.hh>
+#include <dune/solvers/solvers/linearsolver.hh>
 
 namespace Dune
 {
@@ -29,7 +29,7 @@ namespace Solvers
 /** \brief Wraps the UMFPack sparse direct solver */
 template <class MatrixType, class VectorType>
 class UMFPackSolver
-    : public Solver, public CanIgnore<Dune::BitSetVector<VectorType::block_type::dimension> >
+: public LinearSolver<MatrixType,VectorType>, public CanIgnore<Dune::BitSetVector<VectorType::block_type::dimension> >
 {
   enum {blocksize = VectorType::block_type::dimension};
 
@@ -42,7 +42,7 @@ public:
 
   /** \brief Default constructor */
   UMFPackSolver ()
-  : Solver(NumProc::FULL)
+  : LinearSolver<MatrixType,VectorType>(NumProc::FULL)
   {}
 
   /** \brief Constructor for a linear problem */
@@ -50,7 +50,7 @@ public:
                  VectorType& x,
                  const VectorType& rhs,
                  NumProc::VerbosityMode verbosity=NumProc::FULL)
-  : Solver(verbosity),
+  : LinearSolver<MatrixType,VectorType>(verbosity),
     matrix_(&matrix),
     x_(&x),
     rhs_(&rhs)
@@ -58,7 +58,7 @@ public:
 
   void setProblem(const MatrixType& matrix,
                   VectorType& x,
-                  const VectorType& rhs)
+                  const VectorType& rhs) override
   {
     matrix_ = &matrix;
     x_ = &x;