diff --git a/dune/solvers/iterationsteps/mmgstep.cc b/dune/solvers/iterationsteps/mmgstep.cc
index e649092f4d8be930d5dc9cf63e0740619286d39d..b3faa68148950ad97fcd3db0bd5fd444449b1161 100644
--- a/dune/solvers/iterationsteps/mmgstep.cc
+++ b/dune/solvers/iterationsteps/mmgstep.cc
@@ -24,8 +24,8 @@ preprocess()
     hasObstacleHierarchy_.back() = hasObstacle_;
 
     for (int i=this->mgTransfer_.size()-1; i>=0; i--) {
-        hasObstacleHierarchy_[i] = new Dune::BitSetVector<1>();
-        this->mgTransfer_[i]->restrictScalarBitField(*hasObstacleHierarchy_[i+1], *hasObstacleHierarchy_[i]);
+        hasObstacleHierarchy_[i] = new Dune::BitSetVector<dim>();
+        this->mgTransfer_[i]->restrict(*hasObstacleHierarchy_[i+1], *hasObstacleHierarchy_[i]);
         for (size_t j=0; j<hasObstacleHierarchy_[i]->size(); j++)
             if ((*this->ignoreNodesHierarchy_[i])[j].any())
                 (*hasObstacleHierarchy_[i])[j][0]=false;
diff --git a/dune/solvers/iterationsteps/mmgstep.hh b/dune/solvers/iterationsteps/mmgstep.hh
index 3cbd0cb6106bb0846d810ce059c9d1bd835f7e84..cd373fa08a069cc3953054022e31920d0e34b52d 100644
--- a/dune/solvers/iterationsteps/mmgstep.hh
+++ b/dune/solvers/iterationsteps/mmgstep.hh
@@ -51,7 +51,7 @@ public:
     ObstacleRestrictor<VectorType>* obstacleRestrictor_;
 
     //! Bitfield determining which fine grid nodes have an obstacle 
-    Dune::BitSetVector<1>* hasObstacle_;
+    Dune::BitSetVector<dim>* hasObstacle_;
 
     //! Vector containing the obstacle values of the fine grid nodes
     ObstacleVectorType * obstacles_;
@@ -62,7 +62,7 @@ public:
 
 protected:
     //! Bitfield hierarchy containing the coarse obstacle nodes
-    std::vector<Dune::BitSetVector<1>* > hasObstacleHierarchy_;
+    std::vector<Dune::BitSetVector<dim>* > hasObstacleHierarchy_;
 
     //! Hierarchy containing the obstacle values of the coarse obstacles
     std::vector<ObstacleVectorType*>  obstacleHierarchy_;