diff --git a/cosserat-continuum.cc b/cosserat-continuum.cc
index dccd3aba36717fe7e0d5623c2ce13a52ced24b91..4475274649b2f734d1d3641488684f3020f0de2c 100644
--- a/cosserat-continuum.cc
+++ b/cosserat-continuum.cc
@@ -314,7 +314,7 @@ int main (int argc, char *argv[]) try
     //   Create a Riemannian trust-region solver
     // /////////////////////////////////////////////////
 
-    RiemannianTrustRegionSolver<GridType,TargetSpace> solver(mpiHelper);
+    RiemannianTrustRegionSolver<GridType,TargetSpace> solver;
     solver.setup(*grid,
                  &assembler,
                  x,
diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc
index 0f57b759815eb8dd014b903c9a8d77e2cbef598d..3853e7eb902277456e9af7aa90cae55eb34f5e11 100644
--- a/dune/gfe/riemanniantrsolver.cc
+++ b/dune/gfe/riemanniantrsolver.cc
@@ -2,6 +2,7 @@
 
 #include <dune/common/bitsetvector.hh>
 #include <dune/common/timer.hh>
+#include <dune/common/parallel/mpihelper.hh>
 
 #include <dune/istl/io.hh>
 
@@ -184,7 +185,10 @@ setup(const GridType& grid,
 template <class GridType, class TargetSpace>
 void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve()
 {
-    int rank = mpiHelper_.rank();
+    int argc = 0;
+    char** argv;
+    Dune::MPIHelper& mpiHelper = Dune::MPIHelper::instance(argc,argv);
+    int rank = mpiHelper.rank();
 
     MonotoneMGStep<MatrixType,CorrectionType>* mgStep = NULL;
 
@@ -217,7 +221,7 @@ void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve()
     // /////////////////////////////////////////////////////
 
     double oldEnergy = assembler_->computeEnergy(x_);
-    oldEnergy = mpiHelper_.getCollectiveCommunication().sum(oldEnergy);
+    oldEnergy = mpiHelper.getCollectiveCommunication().sum(oldEnergy);
 
     bool recomputeGradientHessian = true;
     CorrectionType rhs;
diff --git a/dune/gfe/riemanniantrsolver.hh b/dune/gfe/riemanniantrsolver.hh
index 347b126fb62f382049cb911869620eb82243ab94..88ff62fb25260ade36710e7e079783a0239641cd 100644
--- a/dune/gfe/riemanniantrsolver.hh
+++ b/dune/gfe/riemanniantrsolver.hh
@@ -47,9 +47,8 @@ class RiemannianTrustRegionSolver
 
 public:
 
-    RiemannianTrustRegionSolver(Dune::MPIHelper& mpiHelper)
+    RiemannianTrustRegionSolver()
         : IterativeSolver<std::vector<TargetSpace>, Dune::BitSetVector<blocksize> >(0,100,NumProc::FULL),
-          mpiHelper_(mpiHelper),
           hessianMatrix_(std::auto_ptr<MatrixType>(NULL)), h1SemiNorm_(NULL)
     {}
 
@@ -92,8 +91,6 @@ public:
 
 protected:
 
-    /** \brief Gateway to MPI, for the case that we are working in parallel */
-    Dune::MPIHelper& mpiHelper_;
 
     /** \brief The grid */
     const GridType* grid_;