diff --git a/linelast.cc b/linelast.cc
index c2e9833a35b1488945a3df365c401675822868d7..ffcf7494b360563a15b42d808da5f33343cf4cbf 100644
--- a/linelast.cc
+++ b/linelast.cc
@@ -188,7 +188,7 @@ int main (int argc, char *argv[]) try
 
         EnergyNorm<OperatorType,VectorType> baseEnergyNorm(baseSolverStep);
 
-        IterativeSolver<VectorType> baseSolver(&baseSolverStep,
+        LoopSolver<VectorType> baseSolver(&baseSolverStep,
                                                baseIt,
                                                baseTolerance,
                                                &baseEnergyNorm,
@@ -200,20 +200,20 @@ int main (int argc, char *argv[]) try
         BlockGSStep<OperatorType, VectorType> postsmoother;
         
         
-        MultigridStep<OperatorType, VectorType> multigridStep(stiffnessMatrix, x, rhs, grid.maxLevel()+1);
+        MultigridStep<OperatorType, VectorType> multigridStep(stiffnessMatrix, x, rhs);
         
         multigridStep.setMGType(1, nu1, nu2);
         multigridStep.ignoreNodes_    = &dirichletNodes.back();
         multigridStep.basesolver_     = &baseSolver;
         multigridStep.setSmoother(&presmoother,&postsmoother);    
         
-        multigridStep.mgTransfer_.resize(grid.maxLevel());
-        for (int i=0; i<multigridStep.mgTransfer_.size(); i++) {
-            CompressedMultigridTransfer<VectorType>* newTransferOp = new CompressedMultigridTransfer<VectorType>;
-            newTransferOp->setup(grid, i, i+1);
-            multigridStep.mgTransfer_[i] = newTransferOp;
+        std::vector<CompressedMultigridTransfer<VectorType>* > mgTransfers(grid->maxLevel());
+        for (int i=0; i<mgTransfers.size(); i++) {
+            mgTransfers[i] = new CompressedMultigridTransfer<VectorType>;
+            mgTransfers[i]->setup(*grid, i, i+1);
         }
         
+        multigridStep.setTransferOperators(mgTransfers);
         EnergyNorm<OperatorType, VectorType> energyNorm(multigridStep);
         
         LoopSolver<VectorType> solver(&multigridStep,
@@ -225,7 +225,6 @@ int main (int argc, char *argv[]) try
         
         
         solver.preprocess();
-        multigridStep.preprocess();
         
         // Compute solution
         solver.solve();