diff --git a/AMDiS/src/ArhWriter.cc b/AMDiS/src/ArhWriter.cc
index 8420771d7bed9b68499f39717e292cdf5b8897ce..c8eacac4213284d3beb7a64b135081db4376aeda 100644
--- a/AMDiS/src/ArhWriter.cc
+++ b/AMDiS/src/ArhWriter.cc
@@ -53,7 +53,7 @@ namespace AMDiS {
     file.write(reinterpret_cast<char*>(&nValueVectors), 4);
 
     uint32_t nAllValues = 
-      (vecs.size() > 0 ? vecs[0]->getFeSpace()->getAdmin()->getUsedDOFs() : 0);
+      (vecs.size() > 0 ? vecs[0]->getFeSpace()->getAdmin()->getUsedDofs() : 0);
     file.write(reinterpret_cast<char*>(&nAllValues), 4);
 
     MeshStructure elementStructure;
diff --git a/AMDiS/src/BasisFunction.cc b/AMDiS/src/BasisFunction.cc
index 8308005bec412573037c7c0320f5f02bcdf941ee..70fa2a02965fa8c2b43ca8d6fd26c141492c92f4 100644
--- a/AMDiS/src/BasisFunction.cc
+++ b/AMDiS/src/BasisFunction.cc
@@ -143,7 +143,7 @@ namespace AMDiS {
   }
 
 
-  int BasisFunction::getNumberOfDOFs(int i) const
+  int BasisFunction::getNumberOfDofs(int i) const
   { 
     return (*nDOF)[i];
   }
diff --git a/AMDiS/src/BasisFunction.h b/AMDiS/src/BasisFunction.h
index ddee6895707e2f402b6e208d15b265a40c38fde2..b4fe87bfa1e564b14e2691f5c9f47dde9d042e4c 100644
--- a/AMDiS/src/BasisFunction.h
+++ b/AMDiS/src/BasisFunction.h
@@ -161,10 +161,10 @@ namespace AMDiS {
     }
 
     /// Returns \ref nDOF[i]
-    int getNumberOfDOFs(int i) const;
+    int getNumberOfDofs(int i) const;
 
     /// Returns \ref nDOF
-    inline DimVec<int>* getNumberOfDOFs() const 
+    inline DimVec<int>* getNumberOfDofs() const 
     { 
       return nDOF; 
     }
diff --git a/AMDiS/src/CoarseningManager1d.cc b/AMDiS/src/CoarseningManager1d.cc
index f425cb684683d297971c6d088da03094e350e0dd..07714f53e5636c4110c921a0992baa5e486aafbb 100644
--- a/AMDiS/src/CoarseningManager1d.cc
+++ b/AMDiS/src/CoarseningManager1d.cc
@@ -68,13 +68,13 @@ namespace AMDiS {
       /*--- hand DOFs from children to parent, and add DOF at center           ---*/
       /*--------------------------------------------------------------------------*/
 
-      if (mesh->getNumberOfDOFs(VERTEX) && !mesh->queryCoarseDOFs()) {
+      if (mesh->getNumberOfDofs(VERTEX) && !mesh->queryCoarseDOFs()) {
 	int node = mesh->getNode(VERTEX);
 	parent->setDof(node+0, const_cast<int*>( child[0]->getDof(node+0)));
 	parent->setDof(node+1, const_cast<int*>( child[1]->getDof(node+1)));
       }
 
-      if (mesh->getNumberOfDOFs(CENTER) && !mesh->queryCoarseDOFs()) {
+      if (mesh->getNumberOfDofs(CENTER) && !mesh->queryCoarseDOFs()) {
 	parent->setDof(mesh->getNode(CENTER), mesh->getDof(CENTER));
       }
 
@@ -89,7 +89,7 @@ namespace AMDiS {
       int nrAdmin = mesh->getNumberOfDOFAdmin();
       for(iadmin = 0; iadmin < nrAdmin; iadmin++) {
 	std::list<DOFIndexedBase*>::iterator it;
-	DOFAdmin* admin = const_cast<DOFAdmin*>(&(mesh->getDOFAdmin(iadmin)));
+	DOFAdmin* admin = const_cast<DOFAdmin*>(&(mesh->getDofAdmin(iadmin)));
 	std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed();
 	for(it = admin->beginDOFIndexed(); it != end; ++it)
 	  (*it)->coarseRestrict(coarsenList, 1);
@@ -100,12 +100,12 @@ namespace AMDiS {
       /*--- remove all DOFs of children that are not used anymore              ---*/
       /*--------------------------------------------------------------------------*/
 
-      if (mesh->getNumberOfDOFs(VERTEX))    /*---  midpoint of parent          ---*/
+      if (mesh->getNumberOfDofs(VERTEX))    /*---  midpoint of parent          ---*/
 	{
 	  mesh->freeDof(const_cast<int*>( child[1]->getDof(mesh->getNode(VERTEX))), VERTEX);
 	}
 
-      if (mesh->getNumberOfDOFs(CENTER))    /*--- center of the children       ---*/
+      if (mesh->getNumberOfDofs(CENTER))    /*--- center of the children       ---*/
 	{
 	  mesh->freeDof(const_cast<int*>( child[0]->getDof(mesh->getNode(CENTER))), CENTER);
 	  mesh->freeDof(const_cast<int*>( child[1]->getDof(mesh->getNode(CENTER))), CENTER);
diff --git a/AMDiS/src/CoarseningManager2d.cc b/AMDiS/src/CoarseningManager2d.cc
index d29ea119bbbf3fa8c6e8d3aba0c28bd904108cd2..e3d321cb5ee2112be97f3e0e148a2216e0f18248 100644
--- a/AMDiS/src/CoarseningManager2d.cc
+++ b/AMDiS/src/CoarseningManager2d.cc
@@ -30,11 +30,11 @@ namespace AMDiS {
        el->getIndex(), child[0]->getIndex(), child[1]->getIndex());
 
     // remove dof from common edge of child[0] and child[1]  
-    if (mesh->getNumberOfDOFs(EDGE))
+    if (mesh->getNumberOfDofs(EDGE))
       mesh->freeDof(const_cast<int*>(child[0]->getDof(4)), EDGE);
 
     // remove dof from the barycenters of child[0] and child[1] 
-    if (mesh->getNumberOfDOFs(CENTER)) {
+    if (mesh->getNumberOfDofs(CENTER)) {
       int node = mesh->getNode(CENTER);
       
       mesh->freeDof(const_cast<int*>(child[0]->getDof(node)), CENTER);
@@ -72,14 +72,14 @@ namespace AMDiS {
     DegreeOfFreedom *dof[3];
 
     dof[0] = const_cast<int*>(el->getChild(0)->getDof(2));
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       dof[1] = const_cast<int*>(el->getChild(0)->getDof(3));
       dof[2] = const_cast<int*>(el->getChild(1)->getDof(4));
     } else {
       dof[1] = dof[2] = 0;
     }
 
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       int node = mesh->getNode(EDGE);
       // get new dof on el at the midpoint of the coarsening edge
 
@@ -90,14 +90,14 @@ namespace AMDiS {
       }
     }
 
-    if (mesh->getNumberOfDOFs(EDGE) || mesh->getNumberOfDOFs(CENTER))
+    if (mesh->getNumberOfDofs(EDGE) || mesh->getNumberOfDofs(CENTER))
       coarsenList->addDOFParents(n_neigh);    
 
     // restrict dof vectors to the parents on the patch 
 
     int nrAdmin = mesh->getNumberOfDOFAdmin();
     for (int iadmin = 0; iadmin < nrAdmin; iadmin++) {
-      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin));
+      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin));
       for (std::list<DOFIndexedBase*>::iterator it = admin->beginDOFIndexed(); 
 	   it != admin->endDOFIndexed(); ++it)	
 	(*it)->coarseRestrict(*coarsenList, n_neigh);            
@@ -111,7 +111,7 @@ namespace AMDiS {
     // now, remove those dofs in the coarcening edge 
 
     mesh->freeDof(dof[0], VERTEX);
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       mesh->freeDof(dof[1], EDGE);
       mesh->freeDof(dof[2], EDGE);
     }
diff --git a/AMDiS/src/CoarseningManager3d.cc b/AMDiS/src/CoarseningManager3d.cc
index 33ea7db262d133446dfb5438f1c55e3694ce1035..051fccb2809e105df310530ac91bfb92aad79202 100644
--- a/AMDiS/src/CoarseningManager3d.cc
+++ b/AMDiS/src/CoarseningManager3d.cc
@@ -133,11 +133,11 @@ namespace AMDiS {
 	/*  boundary face or  neigh has been coarsend: free the dof's in the face   */
 	/****************************************************************************/
 
-	if (mesh->getNumberOfDOFs(EDGE)) {
+	if (mesh->getNumberOfDofs(EDGE)) {
 	  node = mesh->getNode(EDGE) + Tetrahedron::nChildEdge[el_type][0][dir];
 	  mesh->freeDof(const_cast<int*>( child[0]->getDof(node)), EDGE);
 	}
-	if (mesh->getNumberOfDOFs(FACE)) {
+	if (mesh->getNumberOfDofs(FACE)) {
 	  node = mesh->getNode(FACE) + Tetrahedron::nChildFace[el_type][0][dir];
 	  mesh->freeDof(const_cast<int*>( child[0]->getDof(node)), FACE);
 	  node = mesh->getNode(FACE) + Tetrahedron::nChildFace[el_type][1][dir];
@@ -151,13 +151,13 @@ namespace AMDiS {
     /*  child[1] and at the two barycenter                                      */
     /****************************************************************************/
 
-    if (mesh->getNumberOfDOFs(FACE)) {
+    if (mesh->getNumberOfDofs(FACE)) {
       node = mesh->getNode(FACE);
       mesh->freeDof(const_cast<int*>( child[0]->getDof(node)), FACE);
     }
 
 
-    if (mesh->getNumberOfDOFs(CENTER)) {
+    if (mesh->getNumberOfDofs(CENTER)) {
       node = mesh->getNode(CENTER);
       for (i = 0; i < 2; i++)
 	mesh->freeDof(const_cast<int*>( child[i]->getDof(node)), CENTER);
@@ -318,7 +318,7 @@ namespace AMDiS {
     int i, node;
     DegreeOfFreedom *dof;
 
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       /****************************************************************************/
       /*  get dof for coarsening edge                                             */
       /****************************************************************************/
@@ -329,9 +329,9 @@ namespace AMDiS {
       dof = NULL;
     }
 
-    if (mesh->getNumberOfDOFs(EDGE) || 
-	mesh->getNumberOfDOFs(FACE) || 
-	mesh->getNumberOfDOFs(CENTER)) {     
+    if (mesh->getNumberOfDofs(EDGE) || 
+	mesh->getNumberOfDofs(FACE) || 
+	mesh->getNumberOfDofs(CENTER)) {     
       for (i = 0; i < n_neigh; i++)
 	coarsenList->addDOFParent(i, dof);
     }
@@ -344,7 +344,7 @@ namespace AMDiS {
     int nrAdmin = mesh->getNumberOfDOFAdmin();
     for (int iadmin = 0; iadmin < nrAdmin; iadmin++) {
       std::list<DOFIndexedBase*>::iterator it;
-      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin));
+      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin));
       std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed();
       for (it = admin->beginDOFIndexed(); it != end; ++it)
 	(*it)->coarseRestrict(*coarsenList, n_neigh);
@@ -359,7 +359,7 @@ namespace AMDiS {
     mesh->freeDof(const_cast<int*>( el->getChild(0)->getDof(3)), VERTEX);
     mesh->incrementNumberOfVertices(-1);
 
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       node = mesh->getNode(EDGE) + 2;
       mesh->freeDof(const_cast<int*>( el->getChild(0)->getDof(node)), EDGE);
       mesh->freeDof(const_cast<int*>( el->getChild(1)->getDof(node)), EDGE);
diff --git a/AMDiS/src/DOFAdmin.h b/AMDiS/src/DOFAdmin.h
index ca146fe2f61719ce7dfe96e908e69793b6ebb4b0..07f9b8e08d2eedec78d1818a9ec9ce254b099572 100644
--- a/AMDiS/src/DOFAdmin.h
+++ b/AMDiS/src/DOFAdmin.h
@@ -133,7 +133,7 @@ namespace AMDiS {
     }
 
     /// Returns \ref usedCount
-    inline const int getUsedDOFs() const 
+    inline const int getUsedDofs() const 
     { 
       return usedCount; 
     }
@@ -151,13 +151,13 @@ namespace AMDiS {
     }
 
     /// Returns \ref nrDOF[i], i.e., the number of dofs for the position i.
-    inline const int getNumberOfDOFs(int i) const 
+    inline const int getNumberOfDofs(int i) const 
     {
       return nrDOF[i];
     }
  
     /// Returns \ref nrDOF
-    inline const DimVec<int>& getNumberOfDOFs() const 
+    inline const DimVec<int>& getNumberOfDofs() const 
     { 
       return nrDOF; 
     }
diff --git a/AMDiS/src/DOFVector.cc b/AMDiS/src/DOFVector.cc
index 415e93742b7fabb628ece04f1831d8af64a2d647..6e178b4779b7663b86a88fca48402f58024e673b 100644
--- a/AMDiS/src/DOFVector.cc
+++ b/AMDiS/src/DOFVector.cc
@@ -91,7 +91,7 @@ namespace AMDiS {
       int nPositions = mesh->getGeo(geoIndex);
       int numPreDOFs = admin->getNumberOfPreDOFs(i);
       for (int j = 0; j < nPositions; j++) {
-	int dofs = basFcts->getNumberOfDOFs(geoIndex);
+	int dofs = basFcts->getNumberOfDofs(geoIndex);
 	numNodeDOFs.push_back(dofs);
 	nDofs += dofs;
 	numNodePreDOFs.push_back(numPreDOFs);
@@ -651,7 +651,7 @@ namespace AMDiS {
       int numPositionNodes = mesh->getGeo(geoIndex);
       int numPreDOFs = admin->getNumberOfPreDOFs(i);
       for (int j = 0; j < numPositionNodes; j++) {
-	int dofs = basFcts->getNumberOfDOFs(geoIndex);
+	int dofs = basFcts->getNumberOfDofs(geoIndex);
 	numNodeDOFs.push_back(dofs);
 	nDofs += dofs;
 	numNodePreDOFs.push_back(numPreDOFs);
diff --git a/AMDiS/src/DataCollector.cc b/AMDiS/src/DataCollector.cc
index 99d04294fc49a852515861de97cd80249afba77f..325be21f53c8c23898bb1b22dc48158ec12438bc 100644
--- a/AMDiS/src/DataCollector.cc
+++ b/AMDiS/src/DataCollector.cc
@@ -208,6 +208,9 @@ namespace AMDiS {
     DegreeOfFreedom vertexDOF;
     WorldVector<double> vertexCoords;
 
+    MSG("ELEMENT: %d\n", elInfo->getElement()->getIndex());
+    MSG("DOFs: %d %d %d\n", dof[0][0], dof[1][0], dof[2][0]);
+
     // create ElementInfo
     ElementInfo elementInfo(dim);
     
diff --git a/AMDiS/src/Element.cc b/AMDiS/src/Element.cc
index 652479aaeb6586d688df6046158706742fdcb544..73307c619c862004808e67ea5ab5a9a0decf9e95 100644
--- a/AMDiS/src/Element.cc
+++ b/AMDiS/src/Element.cc
@@ -102,7 +102,7 @@ namespace AMDiS {
       int ndof = 0;
      
       for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++)
-	ndof += mesh->getDOFAdmin(i).getNumberOfDOFs(position);
+	ndof += mesh->getDofAdmin(i).getNumberOfDofs(position);
 
       if (ndof > 0) {
 	for (int i = 0; i < mesh->getGeo(position); i++) {
@@ -158,7 +158,7 @@ namespace AMDiS {
       int ndof = 0;
 
       for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++)
-	ndof += mesh->getDOFAdmin(i).getNumberOfDOFs(position);
+	ndof += mesh->getDofAdmin(i).getNumberOfDofs(position);
 
       if (ndof > 0) {
 	for (int i = 0; i < mesh->getGeo(position); i++) {
@@ -226,7 +226,7 @@ namespace AMDiS {
     int edges = mesh->getGeo(EDGE); 
     int faces = mesh->getGeo(FACE);
 
-    if ((nd = admin->getNumberOfDOFs(VERTEX)))  {
+    if ((nd = admin->getNumberOfDofs(VERTEX)))  {
       nd0 = admin->getNumberOfPreDOFs(VERTEX);
       n0 = admin->getMesh()->getNode(VERTEX);
       for (int i = 0; i < vertices; i++) {
@@ -235,7 +235,7 @@ namespace AMDiS {
     }
 
     if (mesh->getDim() > 1) {
-      if ((nd = admin->getNumberOfDOFs(EDGE)))  {
+      if ((nd = admin->getNumberOfDofs(EDGE)))  {
 	nd0 = admin->getNumberOfPreDOFs(EDGE);
 	n0 = admin->getMesh()->getNode(EDGE);
 	for (int i = 0; i < edges; i++) {
@@ -245,7 +245,7 @@ namespace AMDiS {
     }
 
     if (mesh->getDim() == 3) {
-      if ((nd = admin->getNumberOfDOFs(FACE)))  {
+      if ((nd = admin->getNumberOfDofs(FACE)))  {
 	nd0 = admin->getNumberOfPreDOFs(FACE);
 	n0 = admin->getMesh()->getNode(FACE);
 	for (int i = 0; i < faces; i++) {
@@ -254,7 +254,7 @@ namespace AMDiS {
       }
     }
 
-    if ((nd = admin->getNumberOfDOFs(CENTER)))  {
+    if ((nd = admin->getNumberOfDofs(CENTER)))  {
       nd0 = admin->getNumberOfPreDOFs(CENTER);
       n0 = admin->getMesh()->getNode(CENTER);
       int i = 0;          /* only one center */
@@ -271,7 +271,7 @@ namespace AMDiS {
     int edges = mesh->getGeo(EDGE); 
     int faces = mesh->getGeo(FACE);
 
-    int nd = admin->getNumberOfDOFs(VERTEX);
+    int nd = admin->getNumberOfDofs(VERTEX);
     if (nd) {
       nd0 = admin->getNumberOfPreDOFs(VERTEX);
       n0 = admin->getMesh()->getNode(VERTEX);
@@ -281,7 +281,7 @@ namespace AMDiS {
     }
 
     if (mesh->getDim() > 1) {
-      nd = admin->getNumberOfDOFs(EDGE);
+      nd = admin->getNumberOfDofs(EDGE);
       if (nd) {
 	nd0 = admin->getNumberOfPreDOFs(EDGE);
 	n0 = admin->getMesh()->getNode(EDGE);
@@ -292,7 +292,7 @@ namespace AMDiS {
     }
 
     if (mesh->getDim() == 3) {
-      nd = admin->getNumberOfDOFs(FACE);
+      nd = admin->getNumberOfDofs(FACE);
       if (nd) {
 	nd0 = admin->getNumberOfPreDOFs(FACE);
 	n0 = admin->getMesh()->getNode(FACE);
@@ -302,7 +302,7 @@ namespace AMDiS {
       }
     }
 
-    nd = admin->getNumberOfDOFs(CENTER);
+    nd = admin->getNumberOfDofs(CENTER);
     if (nd) {
       nd0 = admin->getNumberOfPreDOFs(CENTER);
       n0 = admin->getMesh()->getNode(CENTER);
@@ -400,7 +400,7 @@ namespace AMDiS {
       int ndof = 0;
 
       for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++)
-	ndof += mesh->getDOFAdmin(i).getNumberOfDOFs(position);	      
+	ndof += mesh->getDofAdmin(i).getNumberOfDofs(position);	      
 
       if (ndof > 0) {
 	for (int i = 0; i < mesh->getGeo(position); i++) {
diff --git a/AMDiS/src/ElementDofIterator.cc b/AMDiS/src/ElementDofIterator.cc
index 005e46001d57b34504dd87d8eb67c92fa9eaf8c0..bf397f38ad9b844bd67e2861e17054afeb072482 100644
--- a/AMDiS/src/ElementDofIterator.cc
+++ b/AMDiS/src/ElementDofIterator.cc
@@ -25,7 +25,7 @@ namespace AMDiS {
     // Get geo index of vertices in the given dimension.
     posIndex = INDEX_OF_DIM(pos, dim);
     // Get number of dofs per vertex (should be one in all cases).
-    nDofs = admin->getNumberOfDOFs(posIndex);
+    nDofs = admin->getNumberOfDofs(posIndex);
 
     TEST_EXIT_DBG(nDofs != 0)("Mh, I've to think about this situation!\n");
 
@@ -65,7 +65,7 @@ namespace AMDiS {
 	  // Get geo index posistion.
 	  posIndex = INDEX_OF_DIM(pos, dim);
 	  // Get number of dofs in this position.
-	  nDofs = admin->getNumberOfDOFs(posIndex);
+	  nDofs = admin->getNumberOfDofs(posIndex);
 	} while (nDofs == 0 && pos < dim);
 
 	if (nDofs > 0 && pos <= dim) {
diff --git a/AMDiS/src/FiniteElemSpace.cc b/AMDiS/src/FiniteElemSpace.cc
index cc75ccf07b9926e33baf4a334302aa802dbf2a23..249df623c1ebcf7084bdeba44bea782fe7c503ac 100644
--- a/AMDiS/src/FiniteElemSpace.cc
+++ b/AMDiS/src/FiniteElemSpace.cc
@@ -26,13 +26,13 @@ namespace AMDiS {
     if (!admin) {
       const DOFAdmin *admin_local = NULL;
       const DimVec<int> *ndof = NULL;
-      ndof = basFcts->getNumberOfDOFs();
+      ndof = basFcts->getNumberOfDofs();
       TEST_EXIT(ndof)("no n_dof or basFcts->n_dof\n");
       for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++) {
-	admin_local = &(mesh->getDOFAdmin(i));
+	admin_local = &(mesh->getDofAdmin(i));
 	int j = 0;
 	for (; j <= mesh->getDim(); j++)
-	  if (admin_local->getNumberOfDOFs(j) != (*ndof)[j]) 
+	  if (admin_local->getNumberOfDofs(j) != (*ndof)[j]) 
 	    break;
 	if (j > mesh->getDim()) 
 	  break;
@@ -60,10 +60,10 @@ namespace AMDiS {
 
     mesh = new Mesh(feSpace.mesh->getName(), feSpace.mesh->getDim());
     *mesh = *(feSpace.mesh);
-    admin = &(const_cast<DOFAdmin&>(mesh->getDOFAdmin(0)));
+    admin = &(const_cast<DOFAdmin&>(mesh->getDofAdmin(0)));
     basFcts = feSpace.basFcts;
 
-    TEST_EXIT(feSpace.admin == &(feSpace.mesh->getDOFAdmin(0)))
+    TEST_EXIT(feSpace.admin == &(feSpace.mesh->getDofAdmin(0)))
       ("Gut, dass muss ich mir noch mal ueberlegen!\n");
 
     return *this;
diff --git a/AMDiS/src/Lagrange.cc b/AMDiS/src/Lagrange.cc
index 9e981ddbe062bd3e60296ff91686291ac6d35a96..25135dc27877d92099e66c61ea20415ff165b6dc 100644
--- a/AMDiS/src/Lagrange.cc
+++ b/AMDiS/src/Lagrange.cc
@@ -192,7 +192,7 @@ namespace AMDiS {
 	(*ndofDimDegree[dim][degree])[VERTEX] = 0;      
 
       for (int i = 1; i < dim + 1; i++) {
-	nBasFcts = getNumberOfDOFs(i, degree);
+	nBasFcts = getNumberOfDofs(i, degree);
 	(*ndofDimDegree[dim][degree])[INDEX_OF_DIM(i, dim)] = nBasFcts;
 	for (int j = 0; j < i; j++) {
 	  (*ndofDimDegree[dim][degree])[INDEX_OF_DIM(i, dim)] -= 
@@ -674,7 +674,7 @@ namespace AMDiS {
     }
   }
 
-  int Lagrange::getNumberOfDOFs(int dim, int degree)
+  int Lagrange::getNumberOfDofs(int dim, int degree)
   {
     int result = 0;
     for (int i = 0; i <= degree; i++)
@@ -936,7 +936,7 @@ namespace AMDiS {
 
     for (int pos = 0, j = 0; pos <= dim; pos++) {
       posIndex = INDEX_OF_DIM(pos, dim);
-      nrDOFs = admin->getNumberOfDOFs(posIndex);
+      nrDOFs = admin->getNumberOfDofs(posIndex);
 
       if (nrDOFs) {
 	n0 = admin->getNumberOfPreDOFs(posIndex);
@@ -968,7 +968,7 @@ namespace AMDiS {
 
     for (int pos = 0, j = 0; pos <= dim; pos++) {
       posIndex = INDEX_OF_DIM(pos, dim);
-      nrDOFs = admin->getNumberOfDOFs(posIndex);
+      nrDOFs = admin->getNumberOfDofs(posIndex);
 
       if (nrDOFs) {
 	n0 = admin->getNumberOfPreDOFs(posIndex);
diff --git a/AMDiS/src/Lagrange.h b/AMDiS/src/Lagrange.h
index f4a7bddbbfab202a9e03f2d756f1b040b7ceced4..4eb3b1ad5d0c185a0452dce2fc17b0f3817ab7e6 100644
--- a/AMDiS/src/Lagrange.h
+++ b/AMDiS/src/Lagrange.h
@@ -165,7 +165,7 @@ namespace AMDiS {
 				int positionIndex) const;
 
     /// Calculates the number of DOFs needed for Lagrange of the given dim and degree.
-    static int getNumberOfDOFs(int dim, int degree);
+    static int getNumberOfDofs(int dim, int degree);
 
   private:
     /// barycentric coordinates of the locations of all basis functions
diff --git a/AMDiS/src/MacroReader.cc b/AMDiS/src/MacroReader.cc
index 535b9e5b915df42bd8b6f0f5b43f8177d07ce713..c693f7487ab7645e2c4be2734bc3db0945fcf8f6 100644
--- a/AMDiS/src/MacroReader.cc
+++ b/AMDiS/src/MacroReader.cc
@@ -284,7 +284,7 @@ namespace AMDiS {
 
     macroInfo->fillBoundaryInfo(mesh);
 
-    if (mesh->getNumberOfDOFs(CENTER)) {
+    if (mesh->getNumberOfDofs(CENTER)) {
       for (int i = 0; i < mesh->getNumberOfMacros(); i++)
 	const_cast<Element*>(mel[i]->getElement())->
 	  setDof(mesh->getNode(CENTER), mesh->getDof(CENTER));
@@ -444,7 +444,7 @@ namespace AMDiS {
 
 	    mesh->incrementNumberOfEdges(1);
 
-	    if (mesh->getNumberOfDOFs(EDGE)) {
+	    if (mesh->getNumberOfDofs(EDGE)) {
 	      dof = mesh->getDof(EDGE);
 	      el->setDof(lnode + i, dof);
       
@@ -505,7 +505,7 @@ namespace AMDiS {
 	
 	  mesh->incrementNumberOfFaces(1);
 	
-	  if (mesh->getNumberOfDOFs(FACE)) {
+	  if (mesh->getNumberOfDofs(FACE)) {
 	    TEST_EXIT(!(*(mel + i))->getElement()->getDof(lnode + k))
 	      ("dof %d on element %d already set\n", 
 	       lnode + k, (*(mel + i))->getIndex());
@@ -696,7 +696,7 @@ namespace AMDiS {
     list_bound[0] = &(mel->boundary[mesh->getGeo(FACE)+edge_no]);
     list_project[0] = &(mel->projection[mesh->getGeo(FACE)+edge_no]);
 
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       node = mesh->getNode(EDGE);
       if (el->getDof(node+edge_no)) {
 	/****************************************************************************/
@@ -742,12 +742,12 @@ namespace AMDiS {
 	break;
       }
 
-      if (mesh->getNumberOfDOFs(EDGE)) {
+      if (mesh->getNumberOfDofs(EDGE)) {
 	TEST_EXIT(nei->index > mel_index)
 	  ("neighbour index %d < element index %d\n", nei->getIndex(), mel_index);
       }
 
-      if (!mesh->getNumberOfDOFs(EDGE) && nei->getIndex() < mel_index) 
+      if (!mesh->getNumberOfDofs(EDGE) && nei->getIndex() < mel_index) 
 	return false;
     
       edge_no = Tetrahedron::edgeOfDofs[j][k];
@@ -761,7 +761,7 @@ namespace AMDiS {
       list_project[(*n_neigh)++] = 
 	&(nei->projection[mesh->getGeo(FACE)+edge_no]);
 
-      if (mesh->getNumberOfDOFs(EDGE))
+      if (mesh->getNumberOfDofs(EDGE))
 	nei->element->setDof(node+edge_no,edge_dof);      
 
       if (next_el[edge_no][0] != opp_v) {
@@ -823,7 +823,7 @@ namespace AMDiS {
 	if (j == 4 || k == 4)
 	  return false;
 	
-	if (mesh->getNumberOfDOFs(EDGE)) {
+	if (mesh->getNumberOfDofs(EDGE)) {
 	  TEST_EXIT(nei->getIndex() > mel_index)
 	    ("neighbour index %d < element index %d\n", nei->getIndex(),
 	     mel_index);
@@ -839,7 +839,7 @@ namespace AMDiS {
 	list_bound[(*n_neigh)] = &(nei->boundary[mesh->getGeo(FACE) + edge_no]);
 	list_project[(*n_neigh)++] = &(nei->projection[mesh->getGeo(FACE) + edge_no]);
 
-	if (mesh->getNumberOfDOFs(EDGE)) {
+	if (mesh->getNumberOfDofs(EDGE)) {
 	  TEST_EXIT(!nei->getElement()->getDof(node+edge_no))
 	    ("dof %d on element %d is already set, but not on element %d\n",
 	     node + edge_no, nei->getIndex(), mel_index);
@@ -964,7 +964,7 @@ namespace AMDiS {
 	me->setOppVertex(2,macr->getOppVertex(1));
 
 
-	if (mesh->getNumberOfDOFs(VERTEX)) {                /* Ecken */
+	if (mesh->getNumberOfDofs(VERTEX)) {                /* Ecken */
 	  n0 = mesh->getNode(VERTEX);              
         
 	  const_cast<Element*>(me->getElement())->setDof(n0,d[n0+2]);     
@@ -972,7 +972,7 @@ namespace AMDiS {
 	  const_cast<Element*>(me->getElement())->setDof(n0+2,d[n0+1]);   
 	}
  
-	if (mesh->getNumberOfDOFs(EDGE)) {                  /* Kanten */
+	if (mesh->getNumberOfDofs(EDGE)) {                  /* Kanten */
 	  n0 = mesh->getNode(EDGE);    
        
 	  const_cast<Element*>(me->getElement())->setDof(n0,d[n0+2]);  
@@ -1000,7 +1000,7 @@ namespace AMDiS {
 	me->setOppVertex(1,macr->getOppVertex(2));
 	me->setOppVertex(2,macr->getOppVertex(0));
     
-	if (mesh->getNumberOfDOFs(VERTEX)) {                /* Ecken */
+	if (mesh->getNumberOfDofs(VERTEX)) {                /* Ecken */
 	  n0 = mesh->getNode(VERTEX);              
         
 	  const_cast<Element*>(me->getElement())->setDof(n0,d[n0+1]);     
@@ -1008,7 +1008,7 @@ namespace AMDiS {
 	  const_cast<Element*>(me->getElement())->setDof(n0+2,d[n0]);   
 	}
  
-	if (mesh->getNumberOfDOFs(EDGE)) {                  /* Kanten */
+	if (mesh->getNumberOfDofs(EDGE)) {                  /* Kanten */
 	  n0 = mesh->getNode(EDGE);    
        
 	  const_cast<Element*>(me->getElement())->setDof(n0,d[n0+1]);  
@@ -1240,9 +1240,9 @@ namespace AMDiS {
 	TEST(nused + nfree == localAdmin->getSize())
 	  ("nused = %d, nfree = %d, admin.size = %d ????\n",
 	   nused, nfree, localAdmin->getSize());
-	TEST(nused == localAdmin->getUsedDOFs())
+	TEST(nused == localAdmin->getUsedDofs())
 	  ("nused = %d, admin.used_count = %d ?????\n",
-	   nused, localAdmin->getUsedDOFs());
+	   nused, localAdmin->getUsedDofs());
       }
     }
 
@@ -1337,19 +1337,19 @@ namespace AMDiS {
     FUNCNAME("MacroReader::basicDOFCheckFct()");
     
     Element* el = elinfo->getElement();
-    const DOFAdmin& admin = mesh->getDOFAdmin(iadmin);
+    const DOFAdmin& admin = mesh->getDofAdmin(iadmin);
     const Element *neig;
     const DegreeOfFreedom *dof;
 
     if (0 == mesh->dof_used.size()) 
       return;
 
-    int ndof = admin.getNumberOfDOFs(VERTEX);
+    int ndof = admin.getNumberOfDofs(VERTEX);
     if (ndof) {
       int j0 = admin.getNumberOfPreDOFs(VERTEX);
-      TEST_EXIT(j0 + ndof <= mesh->getNumberOfDOFs(VERTEX))
+      TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(VERTEX))
 	("admin.getNumberOfPreDOFs(VERTEX) %d + nDOF %d > mesh->nDOF %d\n",
-	 j0, ndof, mesh->getNumberOfDOFs(VERTEX));
+	 j0, ndof, mesh->getNumberOfDofs(VERTEX));
       int i0 = mesh->getNode(VERTEX);
       for (int i = 0; i < mesh->getGeo(VERTEX); i++) {
 	if ((dof = el->getDof(i0+i)) == NULL) {
@@ -1368,13 +1368,13 @@ namespace AMDiS {
 
   
     if (mesh->getDim() > 1) {
-      ndof = admin.getNumberOfDOFs(EDGE);
+      ndof = admin.getNumberOfDofs(EDGE);
       if (ndof) {
 	int j0 = admin.getNumberOfPreDOFs(EDGE);
 
-	TEST_EXIT(j0 + ndof <= mesh->getNumberOfDOFs(EDGE))
+	TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(EDGE))
 	  ("admin.getNumberOfPreDOFs(EDGE) %d + nDOF %d > mesh->nDOF %d\n",
-	   j0, ndof, mesh->getNumberOfDOFs(EDGE));
+	   j0, ndof, mesh->getNumberOfDofs(EDGE));
 
 	int i0 = mesh->getNode(EDGE);
 	
@@ -1423,12 +1423,12 @@ namespace AMDiS {
     }
 
     if (mesh->getDim() == 3) {
-      ndof = admin.getNumberOfDOFs(FACE);
+      ndof = admin.getNumberOfDofs(FACE);
       if (ndof) {
 	int j0 = admin.getNumberOfPreDOFs(FACE);
-	TEST_EXIT(j0 + ndof <= mesh->getNumberOfDOFs(FACE))
+	TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(FACE))
 	  ("admin->n0_dof[FACE] %d + nDOF %d > mesh->nDOF %d\n",
-	   j0, ndof, mesh->getNumberOfDOFs(FACE));
+	   j0, ndof, mesh->getNumberOfDofs(FACE));
 	int i0 = mesh->getNode(FACE);
 	for (int i = 0; i < mesh->getGeo(FACE); i++) {
 	  TEST(dof = el->getDof(i0 + i))("no face dof %d ???\n", i);
@@ -1453,14 +1453,14 @@ namespace AMDiS {
       }
     }
 
-    ndof = admin.getNumberOfDOFs(CENTER);
+    ndof = admin.getNumberOfDofs(CENTER);
     if (ndof) {
       int i0 = mesh->getNode(CENTER);
       TEST(dof = el->getDof(i0))("no center dof???\n");
       int j0 = admin.getNumberOfPreDOFs(CENTER);
-      TEST_EXIT(j0 + ndof <= mesh->getNumberOfDOFs(CENTER))
+      TEST_EXIT(j0 + ndof <= mesh->getNumberOfDofs(CENTER))
 	("admin.getNumberOfPreDOFs(CENTER) %d + nDOF %d > mesh->nDOF %d\n",
-	 j0, ndof, mesh->getNumberOfDOFs(CENTER));
+	 j0, ndof, mesh->getNumberOfDofs(CENTER));
       for (int j = 0; j < ndof; j++) {
 	int jdof = dof[j0 + j];
 	TEST(jdof >= 0 && jdof < static_cast<int>(mesh->dof_used.size()))
diff --git a/AMDiS/src/Mesh.cc b/AMDiS/src/Mesh.cc
index 285a1993e89fbf43a18c0e483c9a6e499a085640..170237c6f4707cf9c7d13798bb867d7c6b9bba41 100644
--- a/AMDiS/src/Mesh.cc
+++ b/AMDiS/src/Mesh.cc
@@ -83,8 +83,8 @@ namespace AMDiS {
       nElements(0),
       parametric(NULL), 
       preserveCoarseDOFs(false),
-      nDOFEl(0),
-      nDOF(dimension, DEFAULT_VALUE, 0),
+      nDofEl(0),
+      nDof(dimension, DEFAULT_VALUE, 0),
       nNodeEl(0),
       node(dimension, DEFAULT_VALUE, 0),
       elementPrototype(NULL),
@@ -155,8 +155,8 @@ namespace AMDiS {
     parametric = NULL;
 
     preserveCoarseDOFs = m.preserveCoarseDOFs;
-    nDOFEl = m.nDOFEl;
-    nDOF = m.nDOF;
+    nDofEl = m.nDofEl;
+    nDof = m.nDof;
     nNodeEl = m.nNodeEl;
     node = m.node;
     newDOF = m.newDOF;
@@ -405,44 +405,44 @@ namespace AMDiS {
 
     admin.push_back(localAdmin);
 
-    nDOFEl = 0;
+    nDofEl = 0;
 
-    localAdmin->setNumberOfPreDOFs(VERTEX,nDOF[VERTEX]);
-    nDOF[VERTEX] += localAdmin->getNumberOfDOFs(VERTEX);
-    nDOFEl += getGeo(VERTEX) * nDOF[VERTEX];
+    localAdmin->setNumberOfPreDOFs(VERTEX,nDof[VERTEX]);
+    nDof[VERTEX] += localAdmin->getNumberOfDofs(VERTEX);
+    nDofEl += getGeo(VERTEX) * nDof[VERTEX];
 
     if (dim > 1) {
-      localAdmin->setNumberOfPreDOFs(EDGE,nDOF[EDGE]);
-      nDOF[EDGE] += localAdmin->getNumberOfDOFs(EDGE);
-      nDOFEl += getGeo(EDGE) * nDOF[EDGE];
+      localAdmin->setNumberOfPreDOFs(EDGE,nDof[EDGE]);
+      nDof[EDGE] += localAdmin->getNumberOfDofs(EDGE);
+      nDofEl += getGeo(EDGE) * nDof[EDGE];
     }
 
-    localAdmin->setNumberOfPreDOFs(CENTER,nDOF[CENTER]);
-    nDOF[CENTER]  += localAdmin->getNumberOfDOFs(CENTER);
-    nDOFEl += nDOF[CENTER];
+    localAdmin->setNumberOfPreDOFs(CENTER,nDof[CENTER]);
+    nDof[CENTER]  += localAdmin->getNumberOfDofs(CENTER);
+    nDofEl += nDof[CENTER];
 
-    TEST_EXIT_DBG(nDOF[VERTEX] > 0)("no vertex dofs\n");
+    TEST_EXIT_DBG(nDof[VERTEX] > 0)("no vertex dofs\n");
 
     node[VERTEX] = 0;
     nNodeEl = getGeo(VERTEX);
 
     if (dim > 1) {
       node[EDGE] = nNodeEl;
-      if (nDOF[EDGE] > 0) 
+      if (nDof[EDGE] > 0) 
 	nNodeEl += getGeo(EDGE);
     }
 
     if (dim == 3) {
-      localAdmin->setNumberOfPreDOFs(FACE,nDOF[FACE]);
-      nDOF[FACE] += localAdmin->getNumberOfDOFs(FACE);
-      nDOFEl += getGeo(FACE) * nDOF[FACE];
+      localAdmin->setNumberOfPreDOFs(FACE,nDof[FACE]);
+      nDof[FACE] += localAdmin->getNumberOfDofs(FACE);
+      nDofEl += getGeo(FACE) * nDof[FACE];
       node[FACE] = nNodeEl;
-      if (nDOF[FACE] > 0) 
+      if (nDof[FACE] > 0) 
 	nNodeEl += getGeo(FACE);
     }
 
     node[CENTER] = nNodeEl;
-    if (nDOF[CENTER] > 0)
+    if (nDof[CENTER] > 0)
       nNodeEl += 1;
   }
 
@@ -458,7 +458,7 @@ namespace AMDiS {
       
       int size = compressAdmin->getSize();
       if (size < 1 || 
-	  compressAdmin->getUsedDOFs() < 1 || 
+	  compressAdmin->getUsedDofs() < 1 || 
 	  compressAdmin->getHoleCount() < 1)    
 	continue;
 
@@ -494,17 +494,17 @@ namespace AMDiS {
     TEST_EXIT_DBG(position >= CENTER && position <= FACE)
       ("unknown position %d\n", position);
 
-    int ndof = getNumberOfDOFs(position);
+    int ndof = getNumberOfDofs(position);
     if (ndof <= 0) 
       return NULL;
 
     DegreeOfFreedom *dof = new DegreeOfFreedom[ndof];
 
     for (int i = 0; i < getNumberOfDOFAdmin(); i++) {
-      const DOFAdmin *localAdmin = &getDOFAdmin(i);
+      const DOFAdmin *localAdmin = &getDofAdmin(i);
       TEST_EXIT_DBG(localAdmin)("no admin[%d]\n", i);
       
-      int n  = localAdmin->getNumberOfDOFs(position);
+      int n  = localAdmin->getNumberOfDofs(position);
       int n0 = localAdmin->getNumberOfPreDOFs(position);
       
       TEST_EXIT_DBG(n + n0 <= ndof)("n=%d, n0=%d too large: ndof=%d\n", n, n0, ndof);
@@ -532,9 +532,9 @@ namespace AMDiS {
   }
 
 
-  void Mesh::freeDOFPtrs(DegreeOfFreedom **ptrs)
+  void Mesh::freeDofPtrs(DegreeOfFreedom **ptrs)
   {
-    FUNCNAME("Mesh::freeDOFPtrs()");
+    FUNCNAME("Mesh::freeDofPtrs()");
 
     TEST_EXIT_DBG(ptrs)("ptrs is NULL!\n");
 
@@ -545,14 +545,14 @@ namespace AMDiS {
   }
 
 
-  const DOFAdmin *Mesh::createDOFAdmin(std::string lname, DimVec<int> lnDOF)
+  const DOFAdmin *Mesh::createDOFAdmin(std::string lname, DimVec<int> lnDof)
   {
     FUNCNAME("Mesh::createDOFAdmin()");
 
     DOFAdmin *localAdmin = new DOFAdmin(this, lname);
 
     for (int i = 0; i < dim + 1; i++)
-      localAdmin->setNumberOfDOFs(i, lnDOF[i]);
+      localAdmin->setNumberOfDOFs(i, lnDof[i]);
 
     addDOFAdmin(localAdmin);
 
@@ -565,7 +565,7 @@ namespace AMDiS {
     const DOFAdmin *localAdmin = NULL;
 
     for (int i = 0; i < static_cast<int>(admin.size()); i++) {
-      if (admin[i]->getNumberOfDOFs(VERTEX)) {
+      if (admin[i]->getNumberOfDofs(VERTEX)) {
 	if (!localAdmin)  
 	  localAdmin = admin[i];
 	else if (admin[i]->getSize() < localAdmin->getSize())
@@ -584,7 +584,7 @@ namespace AMDiS {
     TEST_EXIT_DBG(position >= CENTER && position <= FACE)
       ("unknown position %d\n", position);
 
-    int ndof = nDOF[position];
+    int ndof = nDof[position];
     if (ndof) {
       if (!dof) {
 	MSG("dof = NULL, but ndof = %d\n", ndof);
@@ -602,7 +602,7 @@ namespace AMDiS {
 
     for (unsigned int i = 0; i < admin.size(); i++) {
       DOFAdmin *localAdmin = admin[i];
-      int n = localAdmin->getNumberOfDOFs(position);
+      int n = localAdmin->getNumberOfDofs(position);
       int n0 = localAdmin->getNumberOfPreDOFs(position);
       
       TEST_EXIT_DBG(n + n0 <= ndof)
@@ -618,7 +618,7 @@ namespace AMDiS {
 
   void Mesh::freeElement(Element* el)
   {
-    freeDOFPtrs(const_cast<DegreeOfFreedom**>(el->getDof()));
+    freeDofPtrs(const_cast<DegreeOfFreedom**>(el->getDof()));
     delete el;
   }
 
@@ -970,9 +970,9 @@ namespace AMDiS {
     diam.serialize(out);
 
     SerUtil::serialize(out, preserveCoarseDOFs);
-    SerUtil::serialize(out, nDOFEl);
+    SerUtil::serialize(out, nDofEl);
 
-    nDOF.serialize(out);
+    nDof.serialize(out);
 
     SerUtil::serialize(out, nNodeEl);
 
@@ -1049,11 +1049,11 @@ namespace AMDiS {
 
     SerUtil::deserialize(in, preserveCoarseDOFs);
 
-    oldVal = nDOFEl;
-    SerUtil::deserialize(in, nDOFEl);
-    TEST_EXIT_DBG(oldVal == 0 || nDOFEl == oldVal)("Invalid nDOFEl!\n");
+    oldVal = nDofEl;
+    SerUtil::deserialize(in, nDofEl);
+    TEST_EXIT_DBG(oldVal == 0 || nDofEl == oldVal)("Invalid nDofEl!\n");
 
-    nDOF.deserialize(in);
+    nDof.deserialize(in);
 
     oldVal = nNodeEl;
     SerUtil::deserialize(in, nNodeEl);
@@ -1212,7 +1212,7 @@ namespace AMDiS {
     Mesh testMesh(name, dim);
     testMesh.setElementDataPrototype(new LeafDataEstimatableVec(new LeafDataCoarsenableVec));
     DOFAdmin *localAdmin = new DOFAdmin(&testMesh, admin[0]->getName());
-    localAdmin->setNumberOfDOFs(admin[0]->getNumberOfDOFs());
+    localAdmin->setNumberOfDOFs(admin[0]->getNumberOfDofs());
     testMesh.addDOFAdmin(localAdmin);
     
     MacroInfo *testMacroInfo = 
@@ -1420,7 +1420,7 @@ namespace AMDiS {
   {
     int result = sizeof(Mesh);
 
-    result += nDOFEl;
+    result += nDofEl;
     for (int i = 0; i < static_cast<int>(admin.size()); i++) {
       result += admin[i]->calcMemoryUsage();
       result += admin[i]->getUsedSize() * sizeof(DegreeOfFreedom);
diff --git a/AMDiS/src/Mesh.h b/AMDiS/src/Mesh.h
index 9a307e2e6dafaf1761939a6158a9ec54c4a668a9..d7071db7807148ca61e9376197cd52bc760a4291 100644
--- a/AMDiS/src/Mesh.h
+++ b/AMDiS/src/Mesh.h
@@ -93,10 +93,10 @@ namespace AMDiS {
       return dim; 
     }
 
-    /// Returns \ref nDOFEl of the mesh
-    inline const int getNumberOfAllDOFs() const 
+    /// Returns \ref nDofEl of the mesh
+    inline const int getNumberOfAllDofs() const 
     { 
-      return nDOFEl; 
+      return nDofEl; 
     }
 
     /// Returns \ref nNodeEl of the mesh
@@ -153,10 +153,10 @@ namespace AMDiS {
       return diam; 
     }
 
-    /// Returns nDOF[i] of the mesh
-    inline const int getNumberOfDOFs(int i) const 
+    /// Returns nDof[i] of the mesh
+    inline const int getNumberOfDofs(int i) const 
     { 
-      return nDOF[i]; 
+      return nDof[i]; 
     }
 
     /// Returns \ref elementPrototype of the mesh
@@ -186,17 +186,17 @@ namespace AMDiS {
     DegreeOfFreedom *getDof(GeoIndex position);
 
     /// Returns *(\ref admin[i]) of the mesh
-    inline const DOFAdmin& getDOFAdmin(int i) const 
+    inline const DOFAdmin& getDofAdmin(int i) const 
     {
       return *(admin[i]);
     }
 
     /** \brief
-     * Creates a DOFAdmin with name lname. nDOF specifies how many DOFs 
+     * Creates a DOFAdmin with name lname. nDof specifies how many DOFs 
      * are needed at the different positions (see \ref DOFAdmin::nrDOF).
      * A pointer to the created DOFAdmin is returned.
      */
-    const DOFAdmin* createDOFAdmin(std::string lname, DimVec<int> nDOF);
+    const DOFAdmin* createDOFAdmin(std::string lname, DimVec<int> nDof);
 
     /** \brief
      * Returns the size of \ref admin which is the number of the DOFAdmins
@@ -413,7 +413,7 @@ namespace AMDiS {
 			     const FiniteElemSpace* feSpace);
 
     /// Frees the array of DOF pointers (see \ref createDofPtrs)
-    void freeDOFPtrs(DegreeOfFreedom **ptrs);
+    void freeDofPtrs(DegreeOfFreedom **ptrs);
 
     /// Used by \ref findElementAtPoint. 
     bool findElInfoAtPoint(const WorldVector<double>& xy,
@@ -759,24 +759,24 @@ namespace AMDiS {
     bool preserveCoarseDOFs;
 
     /// Number of all DOFs on a single element
-    int nDOFEl;
+    int nDofEl;
 
     /** \brief
      * Number of DOFs at the different positions VERTEX, EDGE, (FACE,) CENTER on
      * an element:
      *
-     * - nDOF[VERTEX]: number of DOFs at a vertex (>= 1)
+     * - nDof[VERTEX]: number of DOFs at a vertex (>= 1)
      *
-     * - nDOF[EDGE]: number of DOFs at an edge; if no DOFs are associated to
+     * - nDof[EDGE]: number of DOFs at an edge; if no DOFs are associated to
      *   edges, then this value is 0
      *
-     * - nDOF[FACE]: number of DOFs at a face; if no DOFs are associated to
+     * - nDof[FACE]: number of DOFs at a face; if no DOFs are associated to
      *   faces, then this value is 0 (only 3d)
      *
-     * - nDOF[CENTER]: number of DOFs at the barycenter; if no DOFs are 
+     * - nDof[CENTER]: number of DOFs at the barycenter; if no DOFs are 
      *   associated to the barycenter, then this value is 0
      */
-    DimVec<int> nDOF;
+    DimVec<int> nDof;
 
     /** \brief
      * Number of nodes on a single element where DOFs are located; needed for 
diff --git a/AMDiS/src/ProblemScal.cc b/AMDiS/src/ProblemScal.cc
index e8fa317e0f17e6d0ddf445605b04b20b25eed488..9e9f90ac18fc71adddaa2e325e57cb44f2481e59 100644
--- a/AMDiS/src/ProblemScal.cc
+++ b/AMDiS/src/ProblemScal.cc
@@ -438,7 +438,7 @@ namespace AMDiS {
 					       name + "->feSpace");  
 
     // create dof admin for vertex dofs if neccessary
-    if (mesh->getNumberOfDOFs(VERTEX) == 0) {
+    if (mesh->getNumberOfDofs(VERTEX) == 0) {
       DimVec<int> ln_dof(mesh->getDim(), DEFAULT_VALUE, 0);
       ln_dof[VERTEX]= 1;
       mesh->createDOFAdmin("vertex dofs", ln_dof);
@@ -542,7 +542,7 @@ namespace AMDiS {
 #endif
 
     MSG("%d DOFs for %s\n", 
-	feSpace->getAdmin()->getUsedDOFs(), feSpace->getName().c_str());
+	feSpace->getAdmin()->getUsedDofs(), feSpace->getName().c_str());
 
     rhs->set(0.0);
 
diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc
index 03124f81f818e0fcfeda8adb34eb2825b576823e..e917dddd2a3c3415c2e6bc60eca1c1be9e2adf73 100644
--- a/AMDiS/src/ProblemVec.cc
+++ b/AMDiS/src/ProblemVec.cc
@@ -316,7 +316,7 @@ namespace AMDiS {
 
     // create dof admin for vertex dofs if neccessary
     for (int i = 0; i < static_cast<int>(meshes.size()); i++) {
-      if (meshes[i]->getNumberOfDOFs(VERTEX) == 0) {
+      if (meshes[i]->getNumberOfDofs(VERTEX) == 0) {
 	DimVec<int> ln_dof(meshes[i]->getDim(), DEFAULT_VALUE, 0);
 	ln_dof[VERTEX] = 1;
 	meshes[i]->createDOFAdmin("vertex dofs", ln_dof);      
@@ -665,7 +665,7 @@ namespace AMDiS {
     for (int i = 0; i < nComponents; i++) {
 
       MSG("%d DOFs for %s\n", 
-	  componentSpaces[i]->getAdmin()->getUsedSize(), 
+	  componentSpaces[i]->getAdmin()->getUsedDofs(), 
 	  componentSpaces[i]->getName().c_str());
 
       rhs->getDOFVector(i)->set(0.0);
diff --git a/AMDiS/src/RCNeighbourList.cc b/AMDiS/src/RCNeighbourList.cc
index dce07e57f8df9dd78c332f9228017606135ba291..4cc0ce8a0be08d6f61bf22ba081f1987e92342c5 100644
--- a/AMDiS/src/RCNeighbourList.cc
+++ b/AMDiS/src/RCNeighbourList.cc
@@ -139,7 +139,7 @@ namespace AMDiS {
     Mesh *coarse_mesh = coarseningManager->getMesh();
     RCListElement *coarse_list = rclist[elIndex];
   
-    if (coarse_mesh->getNumberOfDOFs(EDGE)) {
+    if (coarse_mesh->getNumberOfDofs(EDGE)) {
       int node = coarse_mesh->getNode(EDGE);
 
       /****************************************************************************/
@@ -165,7 +165,7 @@ namespace AMDiS {
       }
     }
 
-    if (coarse_mesh->getNumberOfDOFs(FACE)) {
+    if (coarse_mesh->getNumberOfDofs(FACE)) {
       int node = coarse_mesh->getNode(FACE);
       /****************************************************************************/
       /*  dof's at the faces within the patch: add new dof's if it is a boundary  */
@@ -201,7 +201,7 @@ namespace AMDiS {
       el->setDof(node + 1, const_cast<int*>(el->getFirstChild()->getDof(node + 3)));
     }
     
-    if (coarse_mesh->getNumberOfDOFs(CENTER)) {
+    if (coarse_mesh->getNumberOfDofs(CENTER)) {
       int node = coarse_mesh->getNode(CENTER);
       if (!el->getDof(node))
 	el->setDof(node, const_cast<int*>(coarse_mesh->getDof(CENTER)));
@@ -212,7 +212,7 @@ namespace AMDiS {
   {
     Mesh *coarse_mesh = coarseningManager->getMesh();
 
-    if (coarse_mesh->getNumberOfDOFs(EDGE)) {
+    if (coarse_mesh->getNumberOfDofs(EDGE)) {
       int node = coarse_mesh->getNode(EDGE);
       
       /****************************************************************************/
@@ -224,7 +224,7 @@ namespace AMDiS {
       }
     }
 
-    if (coarse_mesh->getNumberOfDOFs(CENTER)) {
+    if (coarse_mesh->getNumberOfDofs(CENTER)) {
       int node = coarse_mesh->getNode(CENTER);
       
       /****************************************************************************/
@@ -242,7 +242,7 @@ namespace AMDiS {
     Mesh *mesh = rclist[0]->el->getMesh();
     int edges = mesh->getGeo(EDGE);
 
-    if (mesh->getNumberOfDOFs(EDGE)) {      
+    if (mesh->getNumberOfDofs(EDGE)) {      
       int node = mesh->getNode(EDGE);
 
 	for (int i = 0; i < n_neigh; i++)
@@ -250,7 +250,7 @@ namespace AMDiS {
 	    rclist[i]->el->setDof(node + j, NULL);
     }
 
-    if (mesh->getNumberOfDOFs(CENTER)) {
+    if (mesh->getNumberOfDofs(CENTER)) {
       int node = mesh->getNode(CENTER);
       for (int i = 0; i < n_neigh; i++) {
 	mesh->freeDof(const_cast<int*>(rclist[i]->el->getDof(node)), CENTER);
@@ -268,13 +268,13 @@ namespace AMDiS {
     int faces = mesh->getGeo(FACE);
 
 
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       int node = mesh->getNode(EDGE);
       for (int j = 0; j < edges; j++)
 	el->setDof(node + j, NULL);
     }
 
-    if (mesh->getNumberOfDOFs(FACE)) {
+    if (mesh->getNumberOfDofs(FACE)) {
       int node = mesh->getNode(FACE);
       RCListElement *neigh = rclist[index]->neigh[0];
 
@@ -291,7 +291,7 @@ namespace AMDiS {
 	el->setDof(node + j, NULL);
     }
   
-    if (mesh->getNumberOfDOFs(CENTER)) {
+    if (mesh->getNumberOfDofs(CENTER)) {
       int node = mesh->getNode(CENTER);
       mesh->freeDof(const_cast<int*>(el->getDof(node)), CENTER);
       el->setDof(node, NULL);
diff --git a/AMDiS/src/Recovery.cc b/AMDiS/src/Recovery.cc
index 659b93ba1d35651e3e42e476c40f7e06b4d9cbe0..27425a341c1eb46e20854e93087d76fe64f4258c 100644
--- a/AMDiS/src/Recovery.cc
+++ b/AMDiS/src/Recovery.cc
@@ -475,7 +475,7 @@ void Recovery::fill_struct_vec(DOFVector<double> *uh,
 
   // Information concerning the finite element space.
   const BasisFunction *basis_fcts = feSpace->getBasisFcts();
-  DimVec<int> *nDOFs = basis_fcts->getNumberOfDOFs();
+  DimVec<int> *nDOFs = basis_fcts->getNumberOfDofs();
 
   // Information from DOFAdmin.
   const DOFAdmin *admin = feSpace->getAdmin();
diff --git a/AMDiS/src/RefinementManager1d.cc b/AMDiS/src/RefinementManager1d.cc
index 5761302fcc027a09d7c7029d2ee8fe38d0799069..9197fe71e7e9c6b8ba6b04ecce1c4812999b4a6b 100644
--- a/AMDiS/src/RefinementManager1d.cc
+++ b/AMDiS/src/RefinementManager1d.cc
@@ -65,7 +65,7 @@ namespace AMDiS {
     mesh->incrementNumberOfVertices(1);
     mesh->incrementNumberOfElements(2);
 
-    if (mesh->getNumberOfDOFs(CENTER)) {
+    if (mesh->getNumberOfDofs(CENTER)) {
       /*--------------------------------------------------------------------------*/
       /* there are dofs at the barycenter of the triangles                        */
       /*--------------------------------------------------------------------------*/
@@ -83,13 +83,13 @@ namespace AMDiS {
     int nrAdmin = mesh->getNumberOfDOFAdmin();
     for (int iadmin = 0; iadmin < nrAdmin; iadmin++) {
       std::list<DOFIndexedBase*>::iterator it;
-      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin));
+      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin));
       std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed();
       for (it = admin->beginDOFIndexed(); it != end; it++)
 	(*it)->refineInterpol(ref_list, 1);
     }
 
-    if (!mesh->queryCoarseDOFs() && mesh->getNumberOfDOFs(CENTER)) {
+    if (!mesh->queryCoarseDOFs() && mesh->getNumberOfDofs(CENTER)) {
       mesh->freeDof(const_cast<int*>( el->getDof(mesh->getNode(CENTER))), CENTER);
       el->setDof(mesh->getNode(CENTER), NULL);
     }
diff --git a/AMDiS/src/RefinementManager2d.cc b/AMDiS/src/RefinementManager2d.cc
index cf57ed17db3af561f1f49de0d65becdf07c1e1dc..5f81b6863836e8b5e2266f05dd88d782d317589c 100644
--- a/AMDiS/src/RefinementManager2d.cc
+++ b/AMDiS/src/RefinementManager2d.cc
@@ -171,7 +171,7 @@ namespace AMDiS {
     mesh->incrementNumberOfVertices(1);
     mesh->incrementNumberOfEdges(1);
 
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       // There are two additional dofs in the refinement edge.
       dof[1] = mesh->getDof(EDGE);
       dof[2] = mesh->getDof(EDGE);
@@ -198,7 +198,7 @@ namespace AMDiS {
   
     int nrAdmin = mesh->getNumberOfDOFAdmin();
     for(int iadmin = 0; iadmin < nrAdmin; iadmin++) {
-      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin));
+      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin));
       std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed();
       for (std::list<DOFIndexedBase*>::iterator it = admin->beginDOFIndexed(); 
 	   it != end; it++)
@@ -209,7 +209,7 @@ namespace AMDiS {
     if (!mesh->queryCoarseDOFs()) {
       // === If there should be no dof information on interior leaf elements ===
       // === remove dofs from edges and the centers of parents.              ===
-      if (mesh->getNumberOfDOFs(EDGE)) {
+      if (mesh->getNumberOfDofs(EDGE)) {
 	int node = mesh->getNode(EDGE);
 	
 	// === The only DOF that can be freed is that in the refinement edge; all ===
@@ -217,7 +217,7 @@ namespace AMDiS {
 	
 	mesh->freeDof(const_cast<int*>(el->getDof(node+2)), EDGE);
       }
-      if (mesh->getNumberOfDOFs(EDGE) || mesh->getNumberOfDOFs(CENTER))
+      if (mesh->getNumberOfDofs(EDGE) || mesh->getNumberOfDofs(CENTER))
 	refineList->removeDOFParents(n_neigh);
     }
 
@@ -269,7 +269,7 @@ namespace AMDiS {
     mesh->incrementNumberOfLeaves(1);
     mesh->incrementNumberOfElements(2);
 
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       DegreeOfFreedom* newEdgeDOFs = mesh->getDof(EDGE);     
 
       // There are dofs in the midpoint of the edges.
@@ -285,7 +285,7 @@ namespace AMDiS {
       child[1]->setDof(4, newDOFs[2]);
     }
     
-    if (mesh->getNumberOfDOFs(CENTER)) {
+    if (mesh->getNumberOfDofs(CENTER)) {
       int node = mesh->getNode(CENTER);
       
       // There are dofs at the barycenter of the triangles.
diff --git a/AMDiS/src/RefinementManager3d.cc b/AMDiS/src/RefinementManager3d.cc
index 1cb9c76b79883fd43790b60577311326be5cd929..efece1b14ea6872a4cfc07354925694aa2ddc2f6 100644
--- a/AMDiS/src/RefinementManager3d.cc
+++ b/AMDiS/src/RefinementManager3d.cc
@@ -68,7 +68,7 @@ namespace AMDiS {
     /* information                                                              */
     /****************************************************************************/
 
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       int node = mesh->getNode(EDGE);
 
       /****************************************************************************/
@@ -107,7 +107,7 @@ namespace AMDiS {
       }
     }
     
-    if (mesh->getNumberOfDOFs(FACE)) {
+    if (mesh->getNumberOfDofs(FACE)) {
       int node = mesh->getNode(FACE);    
       
       /****************************************************************************/
@@ -126,13 +126,13 @@ namespace AMDiS {
       child[1]->setDof(node, static_cast<int*>(newDOF));
     }
     
-    if (mesh->getNumberOfDOFs(CENTER)) {
+    if (mesh->getNumberOfDofs(CENTER)) {
       int node = mesh->getNode(CENTER);
       child[0]->setDof(node, const_cast<int*>(mesh->getDof(CENTER)));
       child[1]->setDof(node, const_cast<int*>(mesh->getDof(CENTER)));
     }
 
-    if (mesh->getNumberOfDOFs(EDGE) || mesh->getNumberOfDOFs(FACE))
+    if (mesh->getNumberOfDofs(EDGE) || mesh->getNumberOfDofs(FACE))
       fillPatchConnectivity(ref_list, index);
   }
 
@@ -163,7 +163,7 @@ namespace AMDiS {
 	/*  adjusted by the neighbour element also (see below)                      */
 	/****************************************************************************/
 
-	if (mesh->getNumberOfDOFs(EDGE)) {
+	if (mesh->getNumberOfDofs(EDGE)) {
 	  node0 = node1 = mesh->getNode(EDGE);
 	  node0 += Tetrahedron::nChildEdge[el_type][0][dir];
 	  node1 += Tetrahedron::nChildEdge[el_type][1][dir];
@@ -171,7 +171,7 @@ namespace AMDiS {
 	  (const_cast<Element*>(el->getFirstChild()))->setDof(node0, newDOF);
 	  (const_cast<Element*>(el->getSecondChild()))->setDof(node1, newDOF);
 	}
-	if (mesh->getNumberOfDOFs(FACE)) {
+	if (mesh->getNumberOfDofs(FACE)) {
 	  node0 = mesh->getNode(FACE) + Tetrahedron::nChildFace[el_type][0][dir];
 	  (const_cast<Element*>(el->getFirstChild()))->setDof(node0, mesh->getDof(FACE));
 	  node1 = mesh->getNode(FACE) + Tetrahedron::nChildFace[el_type][1][dir];
@@ -206,7 +206,7 @@ namespace AMDiS {
 	  /*  the dof pointer in the sub-face child_i-child_j (allocated by neigh!)   */
 	  /****************************************************************************/
 
-	  if (mesh->getNumberOfDOFs(EDGE)) {
+	  if (mesh->getNumberOfDofs(EDGE)) {
 	    node0 = mesh->getNode(EDGE) + Tetrahedron::nChildEdge[el_type][i][dir];
 	    node1 = mesh->getNode(EDGE) + Tetrahedron::nChildEdge[n_type][j][oppVertex - 2];
 
@@ -217,7 +217,7 @@ namespace AMDiS {
 	    (const_cast<Element*>(el->getChild(i)))->
 	      setDof(node0, const_cast<int*>(neigh->getChild(j)->getDof(node1)));
 	  }
-	  if (mesh->getNumberOfDOFs(FACE)) {
+	  if (mesh->getNumberOfDofs(FACE)) {
 	    node0 = mesh->getNode(FACE) + i_neigh;
 	    node1 = mesh->getNode(FACE) + j_neigh;
 
@@ -319,7 +319,7 @@ namespace AMDiS {
     dof[0] = mesh->getDof(VERTEX);
     mesh->incrementNumberOfVertices(1);
   
-    if (mesh->getNumberOfDOFs(EDGE)) {
+    if (mesh->getNumberOfDofs(EDGE)) {
       dof[1] = mesh->getDof(EDGE);
       dof[2] = mesh->getDof(EDGE);
     }
@@ -334,7 +334,7 @@ namespace AMDiS {
     int nrAdmin = mesh->getNumberOfDOFAdmin();
     for (iadmin = 0; iadmin < nrAdmin; iadmin++) {
       std::list<DOFIndexedBase*>::iterator it;
-      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDOFAdmin(iadmin));
+      DOFAdmin* admin = const_cast<DOFAdmin*>(&mesh->getDofAdmin(iadmin));
       std::list<DOFIndexedBase*>::iterator end = admin->endDOFIndexed();
       for (it = admin->beginDOFIndexed(); it != end; it++)
 	(*it)->refineInterpol(*refineList, n_neigh);
@@ -345,7 +345,7 @@ namespace AMDiS {
       /*  if there should be no dof information on interior leaf elements remove  */
       /*  dofs from edges, faces and the centers of parents                       */
       /****************************************************************************/
-      if (mesh->getNumberOfDOFs(EDGE)) {
+      if (mesh->getNumberOfDofs(EDGE)) {
 	/****************************************************************************/
 	/*  remove dof of the midpoint of the common refinement edge                */
 	/****************************************************************************/
@@ -354,9 +354,9 @@ namespace AMDiS {
 	mesh->freeDof(const_cast<int*>(el->getDof(mesh->getNode(EDGE))), EDGE);
       }
       
-      if (mesh->getNumberOfDOFs(EDGE) || 
-	  mesh->getNumberOfDOFs(FACE) ||
-	  mesh->getNumberOfDOFs(CENTER)) {
+      if (mesh->getNumberOfDofs(EDGE) || 
+	  mesh->getNumberOfDofs(FACE) ||
+	  mesh->getNumberOfDofs(CENTER)) {
 	for (int i = 0; i < n_neigh; i++)
 	  refineList->removeDOFParent(i);
       }
diff --git a/AMDiS/src/SolutionDataStorage.h b/AMDiS/src/SolutionDataStorage.h
index 3f89b8232184e691568508b5474be918c6defbfb..054b20343d8f0ac6cb163b1ba3fc694df398e925 100644
--- a/AMDiS/src/SolutionDataStorage.h
+++ b/AMDiS/src/SolutionDataStorage.h
@@ -188,7 +188,7 @@ namespace AMDiS {
 					    Lagrange::getLagrange(dim, degree),
 					    mesh,
 					    name);
-      (*fe)->setAdmin(const_cast<DOFAdmin*>(&(mesh->getDOFAdmin(0))));
+      (*fe)->setAdmin(const_cast<DOFAdmin*>(&(mesh->getDofAdmin(0))));
     }
 
     void deserializeFeSpace(std::ifstream &in, std::vector<FiniteElemSpace*>& fe)
diff --git a/AMDiS/src/parallel/MeshDistributor.cc b/AMDiS/src/parallel/MeshDistributor.cc
index 7ac831b64e809d7c7385b3cdd982c6c949262cc9..8e8c8efc01f263a4ef19662180e36bdbbbf0308f 100644
--- a/AMDiS/src/parallel/MeshDistributor.cc
+++ b/AMDiS/src/parallel/MeshDistributor.cc
@@ -218,7 +218,7 @@ namespace AMDiS {
       
       TEST_EXIT(mesh->getNumberOfDOFAdmin() == 1)
 	("Only meshes with one DOFAdmin are supported!\n");
-      TEST_EXIT(mesh->getDOFAdmin(0).getNumberOfPreDOFs(0) == 0)
+      TEST_EXIT(mesh->getDofAdmin(0).getNumberOfPreDOFs(0) == 0)
 	("Wrong pre dof number for DOFAdmin!\n");
       
       switch (mesh->getDim()) {
@@ -302,7 +302,7 @@ namespace AMDiS {
     FUNCNAME("MeshDistributor::updateDofAdmins()");
 
     for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++) {
-      DOFAdmin& admin = const_cast<DOFAdmin&>(mesh->getDOFAdmin(i));
+      DOFAdmin& admin = const_cast<DOFAdmin&>(mesh->getDofAdmin(i));
 
       // There must be always more allocated DOFs than used DOFs in DOFAdmin. Otherwise,
       // it is not possible to define a first DOF hole.
@@ -469,7 +469,7 @@ namespace AMDiS {
     // Remove periodic vertex associations
     for (std::map<BoundaryType, VertexVector*>::iterator it = mesh->getPeriodicAssociations().begin();
 	 it != mesh->getPeriodicAssociations().end(); ++it)
-      const_cast<DOFAdmin&>(mesh->getDOFAdmin(0)).removeDOFContainer(dynamic_cast<DOFContainer*>(it->second));
+      const_cast<DOFAdmin&>(mesh->getDofAdmin(0)).removeDOFContainer(dynamic_cast<DOFContainer*>(it->second));
     mesh->getPeriodicAssociations().clear();
   }
 
@@ -950,7 +950,7 @@ namespace AMDiS {
     TEST_EXIT(mesh->getNumberOfDOFAdmin() == 1)
       ("Only meshes with one DOFAdmin are supported!\n");
 
-    int nDofs = mesh->getDOFAdmin(0).getUsedDOFs();
+    int nDofs = mesh->getDofAdmin(0).getUsedDofs();
     int repartitioning = 0;
 
     std::vector<int> nDofsInRank(mpiSize);
@@ -983,6 +983,12 @@ namespace AMDiS {
 
     return;
 
+    DOFVector<double> tmpa(feSpace, "tmp");
+    tmpa.set(mpiRank);
+    VtkWriter::writeFile(tmpa, "before-repartition.vtu");
+
+    MSG("USED-SIZE A: %d\n", mesh->getDofAdmin(0).getUsedDofs());
+
     elemWeights.clear();
 
     TraverseStack stack;
@@ -1031,9 +1037,10 @@ namespace AMDiS {
 
     // === Add new macro elements to mesh. ===
 
-    while (!newMacroEl.empty()) {
-      MacroElement *mel = *(newMacroEl.begin());
-      MSG("NEW MACRO EL: %d\n", mel->getIndex());
+    for (std::set<MacroElement*>::iterator it = newMacroEl.begin();
+	 it != newMacroEl.end(); ++it) {
+      MacroElement *mel = *it;
+      //      MSG("NEW MACRO EL: %d\n", mel->getIndex());
 
       for (int i = 0; i < mesh->getGeo(NEIGH); i++)
 	mel->setNeighbour(i, NULL);
@@ -1042,7 +1049,6 @@ namespace AMDiS {
 	mel->getElement()->setDof(i, mesh->getDof(VERTEX));
 
       mesh->getMacroElements().push_back(mel);
-      newMacroEl.erase(newMacroEl.begin());
     }
 
 
@@ -1053,7 +1059,7 @@ namespace AMDiS {
 	 it != partitioner->getSendElements().end(); ++it) {
       for (std::vector<int>::iterator elIt = it->second.begin();
 	   elIt != it->second.end(); ++elIt) {
-	MSG("MAKE EL-STRUC FOR EL %d TO RANK %d\n", *elIt, it->first);
+	//	MSG("MAKE EL-STRUC FOR EL %d TO RANK %d\n", *elIt, it->first);
 	MeshStructure elCode;
 	elCode.init(mesh, *elIt);
 	sendCodes[it->first].push_back(elCode);
@@ -1078,7 +1084,7 @@ namespace AMDiS {
 
       for (std::vector<int>::iterator elIt = it->second.begin();
 	   elIt != it->second.end(); ++elIt) {
-	MSG("RECV EL-STRUC FOR EL %d FROM RANK %d\n", *elIt, it->first);
+	//	MSG("RECV EL-STRUC FOR EL %d FROM RANK %d\n", *elIt, it->first);
 
 	recvCodes[i++].fitMeshToStructure(mesh, refineManager, false, *elIt);
       }
@@ -1114,24 +1120,23 @@ namespace AMDiS {
 	   elIt != it->second.end(); ++elIt) {
 	TEST_EXIT_DBG(elIndexMap.count(*elIt) == 1)
 	  ("Could not find macro element %d\n", *elIt);
-	MSG("DELETE MACRO %d\n", (*elIt));
+	//	MSG("DELETE MACRO %d\n", (*elIt));
 	deleteMacroElements.insert(elIndexMap[*elIt]);
       }
     }
 
-    MSG("REMOVE MACRO ELEMENT!\n");
+    //    MSG("REMOVE MACRO ELEMENT!\n");
     
     mesh->removeMacroElements(deleteMacroElements, feSpace);
 
 
     // === Remove double DOFs. ===
 
-    std::map<int, int> leafInMacroEl;
-
+    std::map<int, MacroElement*> leafInMacroEl;
+    
     elInfo = stack.traverseFirst(mesh, -1, Mesh::CALL_LEAF_EL);
     while (elInfo) {
-      leafInMacroEl[elInfo->getElement()->getIndex()] = 
-	elInfo->getMacroElement()->getIndex();
+      leafInMacroEl[elInfo->getElement()->getIndex()] = elInfo->getMacroElement();
       elInfo = stack.traverseNext(elInfo);
     }
 
@@ -1142,12 +1147,18 @@ namespace AMDiS {
       Element *el = elInfo->getElement();
 
       for (int i = 0; i < mesh->getGeo(NEIGH); i++) {
-	if (!elInfo->getNeighbour(i))
-	  continue;
+	Element *neigh = elInfo->getNeighbour(i);
+
+	if (!neigh)
+	  continue;      
 
 	if (leafInMacroEl[el->getIndex()] != 
-	    leafInMacroEl[elInfo->getNeighbour(i)->getIndex()]) {
-	  Element *neigh = elInfo->getNeighbour(i);
+	    leafInMacroEl[neigh->getIndex()] && 
+	    newMacroEl.count(leafInMacroEl[el->getIndex()]) == 0 &&
+	    newMacroEl.count(leafInMacroEl[neigh->getIndex()]) == 1) {
+
+	  //	  MSG("EL: %d   NEIGH:  %d\n", el->getIndex(), neigh->getIndex());
+
 	  int elEdgeIndex = i;
 	  int neighEdgeIndex = elInfo->getOppVertex(i);
 
@@ -1173,11 +1184,15 @@ namespace AMDiS {
 	      std::swap(neighEdgeDof0, neighEdgeDof1);
 	    }
 
-	    if (neighEdgeDof0 != elEdgeDof0)
+	    if (neighEdgeDof0 != elEdgeDof0) {
 	      mapDelDofs[neigh->getDof(neighEdgeIndex0)] = el->getDof(elEdgeIndex0);
+	      //	      MSG("REPLACE DOF %d by %d\n", neigh->getDof(neighEdgeIndex0, 0), el->getDof(elEdgeIndex0, 0));
+	    }
 
-	    if (neighEdgeDof1 != elEdgeDof1)
+	    if (neighEdgeDof1 != elEdgeDof1) {
 	      mapDelDofs[neigh->getDof(neighEdgeIndex1)] = el->getDof(elEdgeIndex1);
+	      //	      MSG("REPLACE DOF %d by %d\n", neigh->getDof(neighEdgeIndex1, 0), el->getDof(elEdgeIndex1, 0));
+	    }
 	  }
 	}
       }
@@ -1190,10 +1205,10 @@ namespace AMDiS {
     while (elInfo) {
       for (int i = 0; i < mesh->getGeo(VERTEX); i++)
 	if (mapDelDofs.count(elInfo->getElement()->getDof(i)) == 1) {
-	  MSG("SET DOF %d TO DOF %d in EL %d\n",
-	      elInfo->getElement()->getDof(i, 0),
-	      *(mapDelDofs[elInfo->getElement()->getDof(i)]),
-	      elInfo->getElement()->getIndex());
+	  // MSG("SET DOF %d TO DOF %d in EL %d\n",
+	  //     elInfo->getElement()->getDof(i, 0),
+	  //     *(mapDelDofs[elInfo->getElement()->getDof(i)]),
+	  //     elInfo->getElement()->getIndex());
 
 	  elInfo->getElement()->setDof(i, const_cast<DegreeOfFreedom*>(mapDelDofs[elInfo->getElement()->getDof(i)]));
 	}
@@ -1203,22 +1218,23 @@ namespace AMDiS {
 
     for (std::map<const DegreeOfFreedom*, const DegreeOfFreedom*>::iterator it = mapDelDofs.begin();
 	 it != mapDelDofs.end(); ++it) {
-      MSG("DOF TO DEL: %d\n", (*(it->first)));
+      //      MSG("DOF TO DEL: %d\n", (*(it->first)));
 
       mesh->freeDof(const_cast<DegreeOfFreedom*>(it->first), VERTEX);
     }
 
+    mesh->dofCompress();
+
     MSG("WRITE OUTPUT\n");
 
     DOFVector<double> tmp(feSpace, "tmp");
     tmp.set(mpiRank);
-    // stringstream oss;
-    // oss << "repartion-" << mpiRank << ".vtu";
-    VtkWriter::writeFile(tmp, "repartition-.vtu");
+    VtkWriter::writeFile(tmp, "after-repartition.vtu");
 
 
     MSG("DONE!\n");
 
+    MSG("USED-SIZE B: %d\n", mesh->getDofAdmin(0).getUsedDofs());
     exit(0);
 
 #if (DEBUG != 0)
@@ -1360,6 +1376,8 @@ namespace AMDiS {
       stack.traverseFirst(mesh, -1, 
 			  Mesh::CALL_LEAF_EL | Mesh::FILL_NEIGH | Mesh::FILL_BOUND);
     while (elInfo) {
+      TEST_EXIT_DBG(elInfo->getLevel() == 0)("Should not happen!\n");
+
       Element *el = elInfo->getElement();
       elIndexMap[el->getIndex()] = el;
       elIndexTypeMap[el->getIndex()] = elInfo->getType();