diff --git a/dune/alugrid/impl/serial/gitter_tetra_top.cc b/dune/alugrid/impl/serial/gitter_tetra_top.cc
index f1749855f8a236eebb5c313d77ae0241ddb61bed..520cf6230996f1e2448127822f670dcb79ab2290 100644
--- a/dune/alugrid/impl/serial/gitter_tetra_top.cc
+++ b/dune/alugrid/impl/serial/gitter_tetra_top.cc
@@ -406,7 +406,11 @@ namespace ALUGrid
               {
                 //the neighbour may have changed
                 neighbour_t neigh = ( twist < 0 ) ? this->nb.front () : this->nb.rear()  ;
-                neigh.first->refineBalance (r, neigh.second);
+                while(neigh.first->nbLeaf())
+                {
+                  neigh.first->refineBalance (r, neigh.second);
+                  neigh = ( twist < 0 ) ? this->nb.front () : this->nb.rear()  ;
+                }
               }
             }
             else
@@ -605,8 +609,6 @@ namespace ALUGrid
     // es am Aufrufer die Verfeinerung nochmals anzuforern.
 
     alugrid_assert (b == 0) ;
-    if(!this->leaf())
-      return (this->getrule() == r) ;
 
     alugrid_assert (this->leaf ()) ;
     if ( ! this->bndNotifyBalance (r,b) )
@@ -624,11 +626,6 @@ namespace ALUGrid
     else
     {
       myhface_t& face (*(myhface(0)));
-      //if we are using bisection the face may have been refined because
-      //of the recursive nature of the algorithm
-      //so we have to check whether face is also a leaf
-      if(!face.leaf())
-        return (face.getrule() == r);
 
       // refine face according to rule
       face.refineImmediate (r) ;
@@ -703,8 +700,6 @@ namespace ALUGrid
       }
       else {
         myhface_t& face (*(myhface(0)));
-        if(!face.leaf())
-          return (face.getrule() == r);
 
         // Der nachfolgende Test bezieht sich auf die Verfeinerungssituation
         // der Fl"ache, da getrule () auf myhface (0)->getrule () umgeleitet
@@ -2188,18 +2183,8 @@ namespace ALUGrid
         // if there is a loop in the mesh
         if(r != getrule ())
         {
+          alugrid_assert( getrule() == myrule_t::nosplit);
           refineImmediate (r) ;
-          if(r.bisection())
-          {
-            TetraTop < A > * child=this->down() ;
-            //if children are nonconforming
-            for(int i =0; i < 2; ++i )
-            {
-              if(child->markForConformingClosure())
-                child->refine();
-              child = child->next();
-            }
-          }
         }
         _req = myrule_t::nosplit ;
         return true ;