diff --git a/AMDiS/src/Estimator.h b/AMDiS/src/Estimator.h
index 5488970cc9f822ee0a887fdfa0a27786ebeb47be..b51717810f950b03f04e73924aa0b546485b9dd0 100755
--- a/AMDiS/src/Estimator.h
+++ b/AMDiS/src/Estimator.h
@@ -53,7 +53,8 @@ namespace AMDiS {
     virtual ~Estimator() {}
 
     /// Returns \ref name of the Estimator
-    inline const std::string& getName() const { 
+    inline const std::string& getName() const 
+    { 
       return name; 
     }
 
@@ -70,37 +71,44 @@ namespace AMDiS {
     virtual void exit(bool output=true) {}
 
     /// Returns \ref est_sum of the Estimator
-    inline double getErrorSum() const { 
+    inline double getErrorSum() const 
+    { 
       return est_sum; 
     }
 
     /// Sets \ref est_sum of the Estimator
-    inline void setErrorSum(double sum) { 
+    inline void setErrorSum(double sum) 
+    { 
       est_sum = sum; 
     }
 
     /// Returns \ref est_max of the Estimator
-    inline double getErrorMax() const { 
+    inline double getErrorMax() const 
+    { 
       return est_max; 
     }
 
     /// Returns the estimated time error.
-    virtual double getTimeEst() const { 
+    virtual double getTimeEst() const 
+    { 
       return est_t_sum; 
     }
 
     /// Returns the maximal time estimation.
-    virtual double getTimeEstMax() const { 
+    virtual double getTimeEstMax() const 
+    { 
       return est_t_max; 
     }
 
     /// Sets \ref est_max of the Estimator
-    inline void setErrorMax(double m) { 
+    inline void setErrorMax(double m) 
+    { 
       est_max = m; 
     }
 
     /// Returns \ref norm.
-    inline Norm getErrorNorm() { 
+    inline Norm getErrorNorm() 
+    { 
       return norm; 
     }
 
@@ -116,6 +124,11 @@ namespace AMDiS {
       uhOld.push_back(uhOld_);
     }
 
+    void setNewMatrix(int i, DOFMatrix *m) 
+    {
+      matrix[i] = m;
+    }
+
     /// Adds pointer to old solution to the given system.
     virtual void addUhOldToSystem(int system, DOFVector<double> *uhOld_) 
     {
@@ -125,19 +138,23 @@ namespace AMDiS {
     }
 
     /// Returns number of systems.
-    inline int getNumSystems() { 
+    inline int getNumSystems() 
+    { 
       return static_cast<int>(matrix.size()); 
     }
 
-    inline Flag getTraverseFlag() { 
+    inline Flag getTraverseFlag() 
+    { 
       return traverseFlag; 
     }
 
-    inline Mesh* getMesh() { 
+    inline Mesh* getMesh() 
+    { 
       return mesh; 
     }
 
-    inline int getRow() { 
+    inline int getRow() 
+    { 
       return row; 
     }
 
diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc
index 6b7bf79b168a255dbf164c181e32eb7e59c23b5b..3f0aa3ad8e785c60315c6c18d8c1de58cc5ca9ed 100644
--- a/AMDiS/src/ProblemVec.cc
+++ b/AMDiS/src/ProblemVec.cc
@@ -878,6 +878,9 @@ namespace AMDiS {
       (*systemMatrix)[i][j]->getBoundaryManager()->
 	setBoundaryConditionMap((*systemMatrix)[i][i]->getBoundaryManager()->
 				getBoundaryConditionMap());
+
+      if (estimator[i])
+	estimator[i]->setNewMatrix(j, (*systemMatrix)[i][j]);
     }    
 
     (*systemMatrix)[i][j]->addOperator(op, factor, estFactor);