diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc
index 5622188204eca5581cce562ae7ee569e1eee103b..7c1ed6cc8729fd9db73863315f124e290dadcb8e 100644
--- a/AMDiS/src/ProblemVec.cc
+++ b/AMDiS/src/ProblemVec.cc
@@ -620,6 +620,7 @@ namespace AMDiS {
   {
     FUNCNAME("ProblemVec::buildAfterCoarsen()");
 
+    //    printOpenmpTraverseInfo(this, true);
     //    buildAfterCoarsen_sebastianMode(adaptInfo, flag);
 
     clock_t first = clock();
@@ -1183,7 +1184,7 @@ namespace AMDiS {
     const BasisFunction *basisFcts = feSpace->getBasisFcts();
 
 #ifdef _OPENMP
-    TraverseParallelStack stack;
+    TraverseParallelStack stack(0, 1);
 #else
     TraverseStack stack;
 #endif   
diff --git a/AMDiS/src/TraverseParallel.h b/AMDiS/src/TraverseParallel.h
index 9784478979b251affe84b478f8f1ebbdb7aaca38..c155dfc1d7aa4714cddb594872de607f811b3361 100644
--- a/AMDiS/src/TraverseParallel.h
+++ b/AMDiS/src/TraverseParallel.h
@@ -47,8 +47,13 @@ namespace AMDiS {
       if (parallelMode == 0) {
 	return stacks[omp_get_thread_num()]->traverseNext(elInfoOld);
       } else {
-	
-      }
+	ElInfo *elInfo = stacks[omp_get_thread_num()]->traverseNext(elInfoOld);
+	while (elInfo &&
+	       elInfo->getElement()->getIndex() % nThreads != omp_get_thread_num()) {
+	  elInfo = stacks[omp_get_thread_num()]->traverseNext(elInfo);
+	}
+	return elInfo;
+      }      
     }
 
   private: