diff --git a/AMDiS/src/PeriodicBC.cc b/AMDiS/src/PeriodicBC.cc
index 3fd4f9dee50f5cc6895a438063ccabcffe57399b..37383a050d65b169fd5703a809126ed639b8c920 100644
--- a/AMDiS/src/PeriodicBC.cc
+++ b/AMDiS/src/PeriodicBC.cc
@@ -205,6 +205,8 @@ namespace AMDiS {
   {
     FUNCNAME("PeriodicBC::exitMatrix()");
 
+    ERROR_EXIT("Not yet implemented, if you have an idea how to do it, than make it!!!\n");
+
     TEST_EXIT(matrix)("no matrix\n");
 
     if (matrix == masterMatrix_) {
@@ -215,6 +217,8 @@ namespace AMDiS {
 
     using namespace mtl;
 
+    associated_->print();
+
     // Compute reorder matrix (newRow and newCol yields transposed!!!)
     matrix::traits::reorder<>::type       R= matrix::reorder(*associated_);
     DOFMatrix::base_matrix_type           &A= matrix->getBaseMatrix(), B, D, E, TR;
diff --git a/AMDiS/src/ProblemScal.cc b/AMDiS/src/ProblemScal.cc
index a91f59858f538cc316bbffd9f2bc3fd36297a4ae..cd9cf55b677731f2e3731930ccda9d1e2499e144 100644
--- a/AMDiS/src/ProblemScal.cc
+++ b/AMDiS/src/ProblemScal.cc
@@ -605,6 +605,7 @@ namespace AMDiS {
 
     systemMatrix->removeRowsWithDBC(systemMatrix->getApplyDBCs());
 
+    // TODO: ExitMatrix should be called after finishInsertion!
     if (systemMatrix->getBoundaryManager())
       systemMatrix->getBoundaryManager()->exitMatrix(systemMatrix);
     if (rhs->getBoundaryManager())
@@ -612,9 +613,10 @@ namespace AMDiS {
     if (solution->getBoundaryManager())
       solution->getBoundaryManager()->exitVector(solution);
 
-    INFO(info, 8)("buildAfterCoarsen needed %.5f seconds\n", TIME_USED(first,clock()));
     systemMatrix->finishInsertion();
 
+    INFO(info, 8)("buildAfterCoarsen needed %.5f seconds\n", TIME_USED(first,clock()));
+
 #ifdef HAVE_PARALLEL_AMDIS
 //     PetscErrorCode ierr;
 //     Mat A;
diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc
index 4cd9d2cca6b9b1ce8ff6ef70b78e56df00a32aa1..2d5c97889c9a020501397144ad102d60cd57db2f 100644
--- a/AMDiS/src/ProblemVec.cc
+++ b/AMDiS/src/ProblemVec.cc
@@ -778,8 +778,9 @@ namespace AMDiS {
 	  ERROR_EXIT("Not yet implemented!\n");
 	}
 
-	if (assembleMatrix && matrix->getBoundaryManager())
-	  matrix->getBoundaryManager()->exitMatrix(matrix);	  
+	// TODO: ExitMatrix should be called after finishInsertion!
+ 	if (assembleMatrix && matrix->getBoundaryManager())
+ 	  matrix->getBoundaryManager()->exitMatrix(matrix);	  
 	
 	assembledMatrix[i][j] = true;
       }
@@ -794,13 +795,13 @@ namespace AMDiS {
     // Finish insertion
     for (int i = 0; i < nComponents; i++) 
       for (int j = 0; j < nComponents; j++) 
- 	if ((*systemMatrix)[i][j]) 
- 	  (*systemMatrix)[i][j]->finishInsertion();
+ 	if ((*systemMatrix)[i][j])
+ 	  (*systemMatrix)[i][j]->finishInsertion(); 
 
 //     clock_t first1 = clock();
-//     solverMatrix.setMatrix(*systemMatrix);
+    solverMatrix.setMatrix(*systemMatrix);
 //     clock_t first2 = clock();
-//     createPrecon();
+    createPrecon();
 //     clock_t first3 = clock();
 
 //     std::cout << "T1 = " << TIME_USED(first1, first2) << std::endl;