diff --git a/dune/solvers/iterationsteps/mmgstep.cc b/dune/solvers/iterationsteps/mmgstep.cc
index e0e75470efc50dee7aa549aef7d43bb487953361..acc6c2e73cb48d6676a0a339074d2d78fa84151e 100644
--- a/dune/solvers/iterationsteps/mmgstep.cc
+++ b/dune/solvers/iterationsteps/mmgstep.cc
@@ -70,7 +70,7 @@ preprocess()
 
     if (typeid(*this->basesolver_) == typeid(::LoopSolver<VectorType>)) {
 
-        ::LoopSolver<VectorType>* loopBaseSolver = dynamic_cast< ::LoopSolver<VectorType>* > (this->basesolver_);
+        ::LoopSolver<VectorType>* loopBaseSolver = dynamic_cast< ::LoopSolver<VectorType>* > (this->basesolver_.get());
 
         typedef ProjectedBlockGSStep<MatrixType, VectorType> SmootherType;
 
@@ -80,7 +80,7 @@ preprocess()
 #if HAVE_IPOPT
     } else if (typeid(*this->basesolver_) == typeid(QuadraticIPOptSolver<MatrixType,VectorType>)) {
 
-        QuadraticIPOptSolver<MatrixType,VectorType>* ipoptBaseSolver = dynamic_cast<QuadraticIPOptSolver<MatrixType,VectorType>*> (this->basesolver_);
+        QuadraticIPOptSolver<MatrixType,VectorType>* ipoptBaseSolver = dynamic_cast<QuadraticIPOptSolver<MatrixType,VectorType>*> (this->basesolver_.get());
 
         ipoptBaseSolver->obstacles_ = obstacleHierarchy_[0];
 #endif
diff --git a/dune/solvers/test/mmgtest.cc b/dune/solvers/test/mmgtest.cc
index 5d89667208b968785f2197c18bbc7df39b86eaeb..af9bfccf754ae4bdb455517ecd7ec331000b3f4c 100644
--- a/dune/solvers/test/mmgtest.cc
+++ b/dune/solvers/test/mmgtest.cc
@@ -56,7 +56,7 @@ void solveObstacleProblemByMMGSolver(const GridType& grid, const MatrixType& mat
     mmgStep.setProblem(mat,x,rhs);
     mmgStep.setMGType(1, 3, 3);
     mmgStep.setIgnore(ignore);
-    mmgStep.basesolver_        = &baseSolver;
+    mmgStep.setBaseSolver(baseSolver);
     mmgStep.setSmoother(&smoother);
     mmgStep.setObstacleRestrictor(std::make_shared<MandelObstacleRestrictor<VectorType> >());
 
diff --git a/dune/solvers/test/multigridtest.cc b/dune/solvers/test/multigridtest.cc
index a61476aab414719d1166c2a676644b8a167c62f7..a2aefae59807c9624d408938608fa6fdb3e92f4c 100644
--- a/dune/solvers/test/multigridtest.cc
+++ b/dune/solvers/test/multigridtest.cc
@@ -84,7 +84,7 @@ struct MultigridTestSuite
         mgStep.setSmoother(&smoother);
         mgStep.setMGType(1,3,3);
         mgStep.setIgnore(p.ignore);
-        mgStep.basesolver_  = &basesolver;
+        mgStep.setBaseSolver(basesolver);
 
         // create loop solver
         Solver solver(&mgStep, maxIterations, tol, &p.energyNorm, Solver::FULL);