diff --git a/AMDiS/src/ElInfo2d.cc b/AMDiS/src/ElInfo2d.cc
index 65e90afaac8564162caf62fae057a0b4431b51f4..7df8e6f2cc253d07b99f8f007f6a9b0b033fbd8f 100644
--- a/AMDiS/src/ElInfo2d.cc
+++ b/AMDiS/src/ElInfo2d.cc
@@ -88,7 +88,7 @@ namespace AMDiS {
 		  neighbourCoord_[i][0] = macroNeighbour->coord[1];
 		  neighbourCoord_[i][1] = macroNeighbour->coord[2];
 		} else {
-		  ERROR_EXIT("should not happen!\n");
+		  ERROR_EXIT("Should not happen!\n");
 		}
 	
 		neighbourCoord_[i][2] = oppCoord_[i];
@@ -102,15 +102,28 @@ namespace AMDiS {
 		  neighbourCoord_[i][0] = macroNeighbour->coord[2];
 		  neighbourCoord_[i][1] = macroNeighbour->coord[0];
 		} else {
-		  ERROR_EXIT("should not happen!\n");
+		  ERROR_EXIT("Should not happen!\n");
 		}
 		
 		neighbourCoord_[i][2] = oppCoord_[i];
 		break;
 		
+	      case 2:
+		if (*(macroNeighbour->getElement()->getDOF(2)) == *(element_->getDOF(0))) {
+		  neighbourCoord_[i][0] = macroNeighbour->coord[2];
+		  neighbourCoord_[i][1] = macroNeighbour->coord[1];
+		} else if (*(macroNeighbour->getElement()->getDOF(2)) == *(element_->getDOF(1))) {
+		  neighbourCoord_[i][0] = macroNeighbour->coord[0];
+		  neighbourCoord_[i][1] = macroNeighbour->coord[2];		 
+		} else {
+		  ERROR_EXIT("Should not happen!\n");
+		}
+		break;
+
 	      default:
 		std::cout << "------------- Error --------------" << std::endl;
-		std::cout << "  Element index = " << element_->getIndex() << "\n\n";
+		std::cout << "  Neighbour counter = " << i << "\n";
+		std::cout << "  Element index     = " << element_->getIndex() << "\n\n";
 		for (int j = 0; j < neighbours; j++) {
 		  if (mel->getNeighbour(j)) {
 		    std::cout << "  Neighbour " << j << ": " 
diff --git a/AMDiS/src/ParallelProblem.cc b/AMDiS/src/ParallelProblem.cc
index 75b96b79498a38f1cc9969c6f340303bcb7a0590..5ca1b8337085358e31381c45bf77e8f8668b9aac 100644
--- a/AMDiS/src/ParallelProblem.cc
+++ b/AMDiS/src/ParallelProblem.cc
@@ -1359,6 +1359,8 @@ namespace AMDiS {
       // and now partition the mesh
       partitionMesh(adaptInfo);
 
+#if 0
+      // 2009-03-31 THOMAS, DO NOT REMOVE THIS BLOCK
       TraverseStack stack;
       ElInfo *elInfo = stack.traverseFirst(mesh, -1, Mesh::CALL_LEAF_EL);
       int nLeaves = 0;
@@ -1377,8 +1379,9 @@ namespace AMDiS {
       }
 
       mesh->setNumberOfLeaves(nLeaves);
+#endif
 
-#if 0
+#if 1
       globalRefineOutOfPartition(adaptInfo);
 
       refineOverlap(adaptInfo);
diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc
index f9fc78990938fd82096ee4a309d19db17e407b05..d3df02329d248e94296352687d05a2ab039242c0 100644
--- a/AMDiS/src/ProblemVec.cc
+++ b/AMDiS/src/ProblemVec.cc
@@ -25,6 +25,7 @@
 #include "Lagrange.h"
 #include "Flag.h"
 #include "TraverseParallel.h"
+#include "VtkWriter.h"
 
 namespace AMDiS {
 
@@ -573,6 +574,8 @@ namespace AMDiS {
   {
     FUNCNAME("ProblemVec::estimate()");
 
+    VtkWriter::writeFile(solution->getDOFVector(0), "test.vtu");
+
     clock_t first = clock();
 
 #ifdef _OPENMP