diff --git a/AMDiS/src/parallel/MeshDistributor.cc b/AMDiS/src/parallel/MeshDistributor.cc
index 4cb5767e188ba4c998bc7a0f2a2071fc28783c7c..d9b282016b83f5ee31999502cc8c0192396dfbc3 100644
--- a/AMDiS/src/parallel/MeshDistributor.cc
+++ b/AMDiS/src/parallel/MeshDistributor.cc
@@ -550,7 +550,7 @@ namespace AMDiS {
 	DOFVector<double> &dofVec = *(vec.getDOFVector(i));
 
 	for (it.beginDofIter(vec.getFeSpace(i)); !it.endDofIter(); it.nextDof())
-	  dofVec[it.getDofIndex()] = 0.0;//stdMpi.getRecvData(rank)[counter++];
+	  dofVec[it.getDofIndex()] = stdMpi.getRecvData(rank)[counter++];
       }
     }
   }
diff --git a/AMDiS/src/parallel/PetscSolverFeti.cc b/AMDiS/src/parallel/PetscSolverFeti.cc
index 9109e2e77668131d51b0ea1afac33a9514d148c8..1fee204c87b92394c8856adae3b0b976b543c61c 100644
--- a/AMDiS/src/parallel/PetscSolverFeti.cc
+++ b/AMDiS/src/parallel/PetscSolverFeti.cc
@@ -1413,19 +1413,14 @@ namespace AMDiS {
       int a = 0;
       levelData.getMpiComm(meshLevel).Allreduce(&tmp, &a, 1, MPI_INT, MPI_SUM);
 
-      MSG("RSTART %d\n", a);
-
       for (DofMap::iterator it = m.begin(); it != m.end(); it++)
 	it->second.global += a;
     } else {
       int groupRowsInterior = localDofMap[vec.getDOFVector(0)->getFeSpace()].nRankDofs;
-      MSG("DA TEST: %d\n", groupRowsInterior);
       int rStart, nGlobal;
       mpi::getDofNumbering(mpiComm, groupRowsInterior, rStart, nGlobal);
       DofMap &m = localDofMap[vec.getDOFVector(0)->getFeSpace()].getMap();
 
-      MSG("RSTART %d\n", rStart);
-
       for (DofMap::iterator it = m.begin(); it != m.end(); it++)
 	it->second.global = it->second.local + rStart;
     }
@@ -1434,8 +1429,8 @@ namespace AMDiS {
 				  localDofMap,
 				  "interior", "dat");
 
-    MPI::Finalize();
-    exit(0);
+//     MPI::Finalize();
+//     exit(0);
 #endif
 
     // tmp_primal0 = M_PiB * inv(K_BB) * f_B
diff --git a/AMDiS/src/parallel/SubDomainSolver.cc b/AMDiS/src/parallel/SubDomainSolver.cc
index aff5e5fa170be175c569b7f13f8536a12c4ed376..268423b11159ccae63051ead2979b0036db66b57 100644
--- a/AMDiS/src/parallel/SubDomainSolver.cc
+++ b/AMDiS/src/parallel/SubDomainSolver.cc
@@ -200,7 +200,7 @@ namespace AMDiS {
 	    if (colsOther.size()) {
 	      int globalRowIndex = interiorMap->getMatIndex(i, *cursor);
 
-	      if (multilevel == false)
+	      if (multilevel)
 		globalRowIndex += rStartInterior;
 
 	      for (unsigned int k = 0; k < colsOther.size(); k++)
@@ -245,6 +245,33 @@ namespace AMDiS {
     KSPSetFromOptions(kspInterior);
 
 
+    if (multilevel == false) {
+      PetscViewer matview;
+      PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_coarse_int.dat", 
+			    FILE_MODE_WRITE, &matview);
+      MatView(matCoarseInt, matview);
+      PetscViewerDestroy(&matview);
+
+      PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_int_coarse.dat", 
+			    FILE_MODE_WRITE, &matview);
+      MatView(matIntCoarse, matview);
+      PetscViewerDestroy(&matview);      
+    } else {
+      PetscViewer matview;
+      PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_coarse_int.dat", 
+			    FILE_MODE_WRITE, &matview);
+      MatView(matCoarseInt, matview);
+      PetscViewerDestroy(&matview);
+
+      PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_int_coarse.dat", 
+			    FILE_MODE_WRITE, &matview);
+      MatView(matIntCoarse, matview);
+      PetscViewerDestroy(&matview);
+    }
+
+//     MPI::Finalize();
+//     exit(0);
+
 #if 0
     PetscViewer matview;
     PetscViewerBinaryOpen(mpiCommCoarseSpace, "mat_primal.dat", 
@@ -316,9 +343,7 @@ namespace AMDiS {
 	  }
 	} else {
 	  if ((*interiorMap)[feSpace].isRankDof(index)) {
-	    int d = index;
 	    index = interiorMap->getMatIndex(i, index) + rStartInterior;
-	    int t = interiorMap->getLocalMatIndex(i, d);
 	    VecSetValue(rhsInterior, index, *dofIt, INSERT_VALUES);
 	  }
 	}