diff --git a/dune/solvers/iterationsteps/blockgsstep.hh b/dune/solvers/iterationsteps/blockgsstep.hh
index 70353bc038bb716d16ff90cccb6b3cf02d2552b8..2f73df80196d37633b594d5d112d1fa540c2d09f 100644
--- a/dune/solvers/iterationsteps/blockgsstep.hh
+++ b/dune/solvers/iterationsteps/blockgsstep.hh
@@ -28,7 +28,7 @@ template<class OperatorType,
         BlockGSStep() {}
 
         //! Constructor with a linear problem
-        BlockGSStep(const OperatorType& mat, DiscFuncType& x, DiscFuncType& rhs)
+        BlockGSStep(const OperatorType& mat, DiscFuncType& x, const DiscFuncType& rhs)
             : LinearIterationStep<OperatorType,DiscFuncType>(mat, x, rhs)
         {}
 
diff --git a/dune/solvers/iterationsteps/lineariterationstep.hh b/dune/solvers/iterationsteps/lineariterationstep.hh
index 0313a62260bad60f338242330efaf15c5731c334..8157405b135d1175870aa01c8df9fdb773c6787d 100644
--- a/dune/solvers/iterationsteps/lineariterationstep.hh
+++ b/dune/solvers/iterationsteps/lineariterationstep.hh
@@ -20,14 +20,14 @@ public:
     virtual ~LinearIterationStep() {}
     
     //! Constructor being given linear operator, solution and right hand side
-    LinearIterationStep(const MatrixType& mat, VectorType& x, VectorType& rhs) {
+    LinearIterationStep(const MatrixType& mat, VectorType& x, const VectorType& rhs) {
         mat_     = &mat;
         this->x_ = &x;
         rhs_     = &rhs;
     }
     
     //! Set linear operator, solution and right hand side
-    virtual void setProblem(const MatrixType& mat, VectorType& x, VectorType& rhs) {
+    virtual void setProblem(const MatrixType& mat, VectorType& x, const VectorType& rhs) {
         this->x_ = &x;
         rhs_     = &rhs;
         mat_     = &mat;
@@ -57,7 +57,7 @@ public:
     }
     
     //! The container for the right hand side
-    VectorType* rhs_;
+    const VectorType* rhs_;
     
     //! The linear operator
     const MatrixType* mat_;
diff --git a/dune/solvers/iterationsteps/multigridstep.hh b/dune/solvers/iterationsteps/multigridstep.hh
index c18a46132fc89c37910c3bd40a1db1c785b3fb6b..e871019fca6e95b3e6e1eec3d95416f5fa1c63b9 100644
--- a/dune/solvers/iterationsteps/multigridstep.hh
+++ b/dune/solvers/iterationsteps/multigridstep.hh
@@ -133,7 +133,7 @@
 
         virtual void setProblem(const MatrixType& mat, 
                                 VectorType& x, 
-                                VectorType& rhs)
+                                const VectorType& rhs)
         {
             level_ = numLevels_-1;
 
diff --git a/dune/solvers/iterationsteps/projectedblockgsstep.hh b/dune/solvers/iterationsteps/projectedblockgsstep.hh
index 58f7419eb54916c45a16a2335be22f2da5733d25..e5b25414f308ae680279af907fd0f454cd74efd3 100644
--- a/dune/solvers/iterationsteps/projectedblockgsstep.hh
+++ b/dune/solvers/iterationsteps/projectedblockgsstep.hh
@@ -22,7 +22,7 @@ public:
     ProjectedBlockGSStep() {}
     
     //! Constructor with a linear problem
-    ProjectedBlockGSStep(const OperatorType& mat, DiscFuncType& x, DiscFuncType& rhs)
+    ProjectedBlockGSStep(const OperatorType& mat, DiscFuncType& x, const DiscFuncType& rhs)
         : BlockGSStep<OperatorType,DiscFuncType>(mat, x, rhs)
     {}