diff --git a/AMDiS/src/parallel/ElementObjectDatabase.cc b/AMDiS/src/parallel/ElementObjectDatabase.cc
index 1554531a4afb81af6a2efcf71aad6c200b245bee..7f6cc65c7af950bb71c3ad5bfeb94318c9f494fd 100644
--- a/AMDiS/src/parallel/ElementObjectDatabase.cc
+++ b/AMDiS/src/parallel/ElementObjectDatabase.cc
@@ -399,11 +399,7 @@ namespace AMDiS {
 	if (it2->elIndex > vertexInRank[it->first][elementInRank].elIndex)
 	  vertexInRank[it->first][elementInRank] = *it2;
 
-	for (int level = 0; level < nLevel; level++) {
-	  int levelId = levelData.getLevelId(level, elementInRank);
-	  vertexOwner[it->first][level] = 
-	    std::max(vertexOwner[it->first][level], levelId);
-	}
+	vertexOwner[it->first] = std::max(vertexOwner[it->first], elementInRank);
 
 	ranksInLevel[0].insert(elementInRank);
 	for (int level = 1; level < nLevel; level++)
@@ -434,11 +430,7 @@ namespace AMDiS {
 	if (it2->elIndex > edgeInRank[it->first][elementInRank].elIndex)
 	  edgeInRank[it->first][elementInRank] = *it2;
 
-	for (int level = 0; level < nLevel; level++) {
-	  int levelId = levelData.getLevelId(level, elementInRank);
-	  edgeOwner[it->first][level] = 
-	    std::max(edgeOwner[it->first][level], levelId);
-	}
+	edgeOwner[it->first] = std::max(edgeOwner[it->first], elementInRank);
 
 	ranksInLevel[0].insert(elementInRank);
 	for (int level = 1; level < nLevel; level++)
@@ -469,11 +461,7 @@ namespace AMDiS {
 	if (it2->elIndex > faceInRank[it->first][elementInRank].elIndex)
 	  faceInRank[it->first][elementInRank] = *it2;
 
-	for (int level = 0; level < nLevel; level++) {
-	  int levelId = levelData.getLevelId(level, elementInRank);
-	  faceOwner[it->first][level] = 
-	    std::max(faceOwner[it->first][level], levelId);
-	}
+	faceOwner[it->first] = std::max(faceOwner[it->first], elementInRank);
 
 	ranksInLevel[0].insert(elementInRank);
 	for (int level = 1; level < nLevel; level++)
diff --git a/AMDiS/src/parallel/ElementObjectDatabase.h b/AMDiS/src/parallel/ElementObjectDatabase.h
index 96164cb1ec37146b824891a327f34e2ebf88f3b2..051e57bc3cb3988f2b9452bcae2928818e113cdc 100644
--- a/AMDiS/src/parallel/ElementObjectDatabase.h
+++ b/AMDiS/src/parallel/ElementObjectDatabase.h
@@ -259,17 +259,17 @@ namespace AMDiS {
 
 
     /// Returns the rank owner of the current iterator position.
-    int getIterateOwner(int level)
+    int getIterateOwner()
     {
       switch (iterGeoPos) {
       case VERTEX:
-	return vertexOwner[vertexIter->first][level];
+	return vertexOwner[vertexIter->first];
 	break;
       case EDGE:
-	return edgeOwner[edgeIter->first][level];
+	return edgeOwner[edgeIter->first];
 	break;
       case FACE:
-	return faceOwner[faceIter->first][level];
+	return faceOwner[faceIter->first];
 	break;
       default:
 	ERROR_EXIT("Should not happen!\n");
@@ -301,21 +301,21 @@ namespace AMDiS {
     }
 
     /// Returns the rank owner of a vertex DOF.
-    int getOwner(DegreeOfFreedom vertex, int level)
+    int getOwner(DegreeOfFreedom vertex)
     {
-      return vertexOwner[vertex][level];
+      return vertexOwner[vertex];
     }
 
     /// Returns the rank owner of an edge.
-    int getOwner(DofEdge edge, int level)
+    int getOwner(DofEdge edge)
     {
-      return edgeOwner[edge][level];
+      return edgeOwner[edge];
     }
 
     /// Returns the rank owner of an face.
     int getOwner(DofFace face, int level)
     {
-      return faceOwner[face][level];
+      return faceOwner[face];
     }
 
 
@@ -562,17 +562,14 @@ namespace AMDiS {
     /// Maps to an element object the corresponding face.
     map<ElementObjectData, DofFace> faceLocalMap;
 
-    /// Maps from level to rank number
-    typedef map<int, int> LevelRank;
-
     /// Defines for all vertex DOFs the rank that ownes this vertex DOF.
-    map<DegreeOfFreedom, LevelRank> vertexOwner;
+    map<DegreeOfFreedom, int> vertexOwner;
 
     /// Defines for all edges the rank that ownes this edge.
-    map<DofEdge, LevelRank> edgeOwner;
+    map<DofEdge, int> edgeOwner;
 
     /// Defines for all faces the rank that ownes this face.
-    map<DofFace, LevelRank> faceOwner;
+    map<DofFace, int> faceOwner;
 
     
     map<DegreeOfFreedom, int> vertexMaxLevel;
diff --git a/AMDiS/src/parallel/MeshDistributor.cc b/AMDiS/src/parallel/MeshDistributor.cc
index ea6040ea03267eed17dbbbe324883bc9ce4a936f..46df2f1ba7ca4d79271921d7689569f1860ceb77 100644
--- a/AMDiS/src/parallel/MeshDistributor.cc
+++ b/AMDiS/src/parallel/MeshDistributor.cc
@@ -847,6 +847,8 @@ namespace AMDiS {
 
     levelData.init(neighbours);
 
+    MSG("INIT MESH LEVEL %d\n", levelData.getLevelNumber());
+
     bool multiLevelTest = false;
     Parameters::get("parallel->multi level test", multiLevelTest);
     if (multiLevelTest) {
@@ -1590,7 +1592,7 @@ namespace AMDiS {
 	if (!(objData.count(mpiRank) && objData.size() > 1))
 	  continue;
 
-	int owner = elObjDb.getIterateOwner(0);
+	int owner = elObjDb.getIterateOwner();
 	ElementObjectData& rankBoundEl = objData[mpiRank];
 	
 	AtomicBoundary bound;
diff --git a/AMDiS/src/parallel/MeshLevelData.cc b/AMDiS/src/parallel/MeshLevelData.cc
index e0170a9de5616983e5ca8a6f5f0646eb376da735..cea8577b1dca347f86d99265c757edd46f3e1aed 100644
--- a/AMDiS/src/parallel/MeshLevelData.cc
+++ b/AMDiS/src/parallel/MeshLevelData.cc
@@ -19,6 +19,13 @@ namespace AMDiS {
   using namespace std;
 
 
+  MeshLevelData::MeshLevelData()
+  {
+    std::set<int> neighbours;
+    init(neighbours);
+  }
+
+
   void MeshLevelData::init(std::set<int> &neighbourRanks)
   {
     levelRanks.resize(1);
diff --git a/AMDiS/src/parallel/MeshLevelData.h b/AMDiS/src/parallel/MeshLevelData.h
index 0bb461756e455a665ffed8030c1be4b57d4e2fa0..babd55106095def445c4d49faaa209c81e4249c1 100644
--- a/AMDiS/src/parallel/MeshLevelData.h
+++ b/AMDiS/src/parallel/MeshLevelData.h
@@ -37,9 +37,7 @@ namespace AMDiS {
   class MeshLevelData 
   {
   public:
-    MeshLevelData()
-      : nLevel(0)
-    {}
+    MeshLevelData();
 
     void init(std::set<int> &neighbourRanks);
 
diff --git a/AMDiS/src/parallel/SubDomainSolver.cc b/AMDiS/src/parallel/SubDomainSolver.cc
index 9d0f7a879b3a8a87f19ebbc518b3208d3c021382..366ccb4ba0163e19c34550d2e3ef711d86106716 100644
--- a/AMDiS/src/parallel/SubDomainSolver.cc
+++ b/AMDiS/src/parallel/SubDomainSolver.cc
@@ -266,7 +266,11 @@ namespace AMDiS {
   {
     FUNCNAME("SubDomainSolver::solveGlobal()");
 
-    ERROR_EXIT("BLUB!\n");
+    int ml = 0;
+    Parameters::get("parallel->multi level test", ml);
+
+    if (ml > 0)
+      ERROR_EXIT("BLUB!\n");
 
     Vec tmp;
     VecCreateSeq(PETSC_COMM_SELF, interiorMap->getRankDofs(level), &tmp);