diff --git a/src/rodsolver.cc b/src/rodsolver.cc
index b1a99ecf3123c39c906eb8286ad27fa37937c901..58382c5e140ac62ba2825475992de32d4d28a4f4 100644
--- a/src/rodsolver.cc
+++ b/src/rodsolver.cc
@@ -95,12 +95,12 @@ void RodSolver<GridType>::setup(const GridType& grid,
 
     EnergyNorm<MatrixType, CorrectionType>* baseEnergyNorm = new EnergyNorm<MatrixType, CorrectionType>(*baseSolverStep);
 
-    IterativeSolver<MatrixType, CorrectionType>* baseSolver = new IterativeSolver<MatrixType, CorrectionType>;
-    baseSolver->iterationStep = baseSolverStep;
-    baseSolver->numIt = baseIt_;
-    baseSolver->verbosity_ = Solver::QUIET;
-    baseSolver->errorNorm_ = baseEnergyNorm;
-    baseSolver->tolerance_ = baseTolerance_;
+    IterativeSolver<MatrixType, CorrectionType>* baseSolver 
+        = new IterativeSolver<MatrixType, CorrectionType>(baseSolverStep,
+                                                          baseIt_,
+                                                          baseTolerance_,
+                                                          baseEnergyNorm,
+                                                          Solver::QUIET);
 
     // Make pre and postsmoothers
     TrustRegionGSStep<MatrixType, CorrectionType>* presmoother  = new TrustRegionGSStep<MatrixType, CorrectionType>;
@@ -121,12 +121,11 @@ void RodSolver<GridType>::setup(const GridType& grid,
 
     EnergyNorm<MatrixType, CorrectionType>* energyNorm = new EnergyNorm<MatrixType, CorrectionType>(*mmgStep);
 
-    mmgSolver_ = new IterativeSolver<MatrixType, CorrectionType>;
-    mmgSolver_->iterationStep = mmgStep;
-    mmgSolver_->numIt         = multigridIterations_;
-    mmgSolver_->verbosity_    = Solver::FULL;
-    mmgSolver_->errorNorm_    = energyNorm;
-    mmgSolver_->tolerance_    = qpTolerance_;
+    mmgSolver_ = new IterativeSolver<MatrixType, CorrectionType>(mmgStep,
+                                                                 multigridIterations_,
+                                                                 qpTolerance_,
+                                                                 energyNorm,
+                                                                 Solver::FULL);
 
     // ////////////////////////////////////////////////////////////
     //    Create Hessian matrix and its occupation structure
@@ -201,11 +200,11 @@ void RodSolver<GridType>::solve()
         setTrustRegionObstacles(trustRegionRadius,
                                 trustRegionObstacles_[grid_->maxLevel()]);
         
-        dynamic_cast<Dune::MultigridStep<MatrixType,CorrectionType>*>(mmgSolver_->iterationStep)->setProblem(*hessianMatrix_, corr, rhs, grid_->maxLevel()+1);
+        dynamic_cast<Dune::MultigridStep<MatrixType,CorrectionType>*>(mmgSolver_->iterationStep_)->setProblem(*hessianMatrix_, corr, rhs, grid_->maxLevel()+1);
         
         mmgSolver_->preprocess();
         
-        dynamic_cast<Dune::MultigridStep<MatrixType,CorrectionType>*>(mmgSolver_->iterationStep)->preprocess();
+        dynamic_cast<Dune::MultigridStep<MatrixType,CorrectionType>*>(mmgSolver_->iterationStep_)->preprocess();
         
         
         // /////////////////////////////
@@ -213,12 +212,12 @@ void RodSolver<GridType>::solve()
         // /////////////////////////////
         mmgSolver_->solve();
         
-        corr = dynamic_cast<Dune::MultigridStep<MatrixType,CorrectionType>*>(mmgSolver_->iterationStep)->getSol();
+        corr = dynamic_cast<Dune::MultigridStep<MatrixType,CorrectionType>*>(mmgSolver_->iterationStep_)->getSol();
         
         std::cout << "Correction: " << std::endl << corr << std::endl;
         
         printf("infinity norm of the correction: %g\n", corr.infinity_norm());
-        if (corr.infinity_norm() < 1e-10) {
+        if (corr.infinity_norm() < 1e-7) {
             std::cout << "CORRECTION IS SMALL ENOUGH" << std::endl;
             break;
         }
@@ -267,8 +266,8 @@ void RodSolver<GridType>::solve()
         
         if (energy >= oldEnergy) {
             printf("Richtung ist keine Abstiegsrichtung!\n");
-            //                  std::cout << "corr[0]\n" << corr[0] << std::endl;
-            //exit(0);
+//             std::cout << "old energy: " << oldEnergy << "   new energy: " << energy << std::endl;
+//             exit(0);
         }
         
         // //////////////////////////////////////////////