diff --git a/AMDiS/src/FileWriter.cc b/AMDiS/src/FileWriter.cc
index 62db97dcac1c48c82b82a1e3e58552acc430101f..6af8eca9410e3d0adac21e94e7f8f880ca75a248 100644
--- a/AMDiS/src/FileWriter.cc
+++ b/AMDiS/src/FileWriter.cc
@@ -165,7 +165,7 @@ namespace AMDiS {
 			      bool (*writeElem)(ElInfo*))
   {
     FUNCNAME("FileWriter::writeFiles()");
-    
+
     if ((adaptInfo->getTimestepNumber() % tsModulo != 0) && !force) 
       return;
 
diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc
index 2eb64d176f181bf7f482117702ab1bff28730476..76ca18b22fd46a8a8bc442073660bc1c25346864 100644
--- a/AMDiS/src/ProblemVec.cc
+++ b/AMDiS/src/ProblemVec.cc
@@ -763,11 +763,12 @@ namespace AMDiS {
  				 assembleFlag);     
     }
 
-    solverMatrix.setMatrix(*systemMatrix);
-	 
-    createPrecon();
+    if (asmMatrix) {
+      solverMatrix.setMatrix(*systemMatrix);      
+      createPrecon();
 
-    INFO(info, 8)("fillin of assembled matrix: %d\n", nnz);
+      INFO(info, 8)("fillin of assembled matrix: %d\n", nnz);
+    }
 
 #ifdef _OPENMP
     INFO(info, 8)("buildAfterCoarsen needed %.5f seconds system time / %.5f seconds wallclock time\n",
diff --git a/AMDiS/src/UmfPackSolver.h b/AMDiS/src/UmfPackSolver.h
index 2ec4eb20182cd6522493173c9a37abd9b301e21c..91213a9c27c800d029c45e3feb217d6a070a648d 100644
--- a/AMDiS/src/UmfPackSolver.h
+++ b/AMDiS/src/UmfPackSolver.h
@@ -86,11 +86,11 @@ namespace AMDiS {
 	else
 	  solver = new mtl::matrix::umfpack::solver<matrix_type>(A, UMFPACK_STRATEGY_SYMMETRIC);
       } else {
-	//	if (!multipleRhs)
+	if (!multipleRhs)
  	  if (store_symbolic)
  	    solver->update_numeric();
  	  else
-	    solver->update();
+	    solver->update();	
       }
      
       int code= (*solver)(x, b);