diff --git a/dune/solvers/iterationsteps/mmgstep.cc b/dune/solvers/iterationsteps/mmgstep.cc
index 68dfcfdc24a9e52f33f05672f56e698dc6c1bf8d..165284af084359eb0b9465ae57c1b7e88d370ab6 100644
--- a/dune/solvers/iterationsteps/mmgstep.cc
+++ b/dune/solvers/iterationsteps/mmgstep.cc
@@ -16,11 +16,11 @@ preprocess()
     MultigridStep<MatrixType,VectorType>::preprocess();
 
     // Then setup the obstacle flags which specify the subset of entries to be reassembled at each iteration
-     for (size_t i=0; i<hasObstacleHierarchy_.size()-1; i++)
-        if (hasObstacleHierarchy_[i])
+     for (int i=0; i<(int) hasObstacleHierarchy_.size()-1; i++)
+        if (hasObstacleHierarchy_[i] != nullptr)
             delete(hasObstacleHierarchy_[i]);
 
-    hasObstacleHierarchy_.resize(numLevels());
+    hasObstacleHierarchy_.resize(this->numLevels());
     hasObstacleHierarchy_.back() = hasObstacle_;
 
     for (int i=this->mgTransfer_.size()-1; i>=0; i--) {
@@ -38,11 +38,11 @@ preprocess()
     //   Set up base solver
     // /////////////////////////////////////////////
 
-    for (size_t i=0; i<obstacleHierarchy_.size()-1; i++)
-        if (obstacleHierarchy_[i])
+    for (int i=0; i<(int) obstacleHierarchy_.size()-1; i++)
+        if (obstacleHierarchy_[i] != nullptr)
             delete(obstacleHierarchy_[i]);
 
-    obstacleHierarchy_.resize(numLevels());
+    obstacleHierarchy_.resize(this->numLevels());
     obstacleHierarchy_.back() = obstacles_;
 
     for (size_t i=0; i<obstacleHierarchy_.size()-1; i++)
@@ -93,7 +93,7 @@ void MonotoneMGStep<MatrixType, VectorType>::nestedIteration()
         // If we start from an infeasible configuration, the restricted
         // obstacles may be inconsistent.  We do an ad hoc correction here.
         // The true obstacles on the maxlevel are not touched.
-        for (size_t i=0; i<(*obstacles_)[this->level_].size(); i++) {
+        for (size_t i=0; i<obstacleHierarchy_[this->level_]->size(); i++) {
             BoxConstraint<field_type,dim>& cO = (*obstacleHierarchy_[this->level_])[i];
             for (int j=0; j<dim; j++)
                 if (cO.lower(j) > cO.upper(j))
@@ -122,7 +122,7 @@ void MonotoneMGStep<MatrixType, VectorType>::iterate()
     std::vector<std::shared_ptr<const MatrixType> >& mat = this->matrixHierarchy_;
     std::vector<std::shared_ptr<VectorType> >& x   = this->xHierarchy_;
     std::vector<VectorType>& rhs = this->rhsHierarchy_;
-    std::vector<ObstacleVectorType* >& obstacles = obstaclesHierarchy_;
+    std::vector<ObstacleVectorType* >& obstacles = obstacleHierarchy_;
 
     Dune::BitSetVector<dim> critical(x[level]->size(), false);