diff --git a/dune/solvers/iterationsteps/minimalpolynomialextrapolationstep.hh b/dune/solvers/iterationsteps/minimalpolynomialextrapolationstep.hh
index 14cd2cbd1267155574260507e23aeabd77fe6e83..8e453b6398295a5ce6939d029f2d89401fcbd02e 100644
--- a/dune/solvers/iterationsteps/minimalpolynomialextrapolationstep.hh
+++ b/dune/solvers/iterationsteps/minimalpolynomialextrapolationstep.hh
@@ -153,7 +153,17 @@ void MinimalPolynomialExtrapolationStep<VectorType, BitVectorType>::iterate()
         newIterate.axpy(c[i-1]/cSum, xHistory_[i]);
     
     //std::cout << "y:\n" << newIterate << std::endl;
-    
+        
+    // Acceleration methods for nonlinear problems should be restarted
+    // every now and then
+    if (k==restart_) {
+        
+        std::cout << "Restarting MPE..." << std::endl;
+        U_.resize(0);
+        xHistory_.resize(1);
+        xHistory_[0] = *this->x_;
+        
+    }
     
 }