Index: src/Tesselation/BoundaryLineSet.cpp
===================================================================
--- src/Tesselation/BoundaryLineSet.cpp	(revision dfe0549d4ce8433fde1acf2f7886d20fc1f0174a)
+++ src/Tesselation/BoundaryLineSet.cpp	(revision b8d21539ab1899769efb705f4de59ef647f234b1)
@@ -309,5 +309,6 @@
 ostream & operator <<(ostream &ost, const BoundaryLineSet &a)
 {
-  ost << "[" << a.Nr << "|" << a.endpoints[0]->node->getName() << " at " << a.endpoints[0]->node->getPosition() << "," << a.endpoints[1]->node->getName() << " at " << a.endpoints[1]->node->getPosition() << "]";
+  ost << "[" << a.Nr << "|" << a.endpoints[0]->node->getName() << "," << a.endpoints[1]->node->getName() << "]";
+  //ost << "[" << a.Nr << "|" << a.endpoints[0]->node->getName() << " at " << a.endpoints[0]->node->getPosition() << "," << a.endpoints[1]->node->getName() << " at " << a.endpoints[1]->node->getPosition() << "]";
   return ost;
 }
Index: src/Tesselation/BoundaryPointSet.cpp
===================================================================
--- src/Tesselation/BoundaryPointSet.cpp	(revision dfe0549d4ce8433fde1acf2f7886d20fc1f0174a)
+++ src/Tesselation/BoundaryPointSet.cpp	(revision b8d21539ab1899769efb705f4de59ef647f234b1)
@@ -133,5 +133,5 @@
 ostream & operator <<(ostream &ost, const BoundaryPointSet &a)
 {
-  ost << "[" << a.Nr << "|" << a.getName() << " at " << a.getPosition() << "]";
+  ost << "[" << a.Nr << "|" << a.getName() << "]"; // " at " << a.getPosition() << "]";
   return ost;
 }
Index: src/Tesselation/BoundaryTriangleSet.cpp
===================================================================
--- src/Tesselation/BoundaryTriangleSet.cpp	(revision dfe0549d4ce8433fde1acf2f7886d20fc1f0174a)
+++ src/Tesselation/BoundaryTriangleSet.cpp	(revision b8d21539ab1899769efb705f4de59ef647f234b1)
@@ -94,8 +94,8 @@
   // set endpoints
   int Counter = 0;
-  LOG(4, "DEBUG: New triangle " << Nr << " with end points: ");
+  LOG(4, "DEBUG: New triangle " << Nr << " with end points ... and lines:");
   for (PointMap::iterator runner = OrderMap.begin(); runner != OrderMap.end(); runner++) {
     endpoints[Counter] = runner->second;
-    LOG(4, "DEBUG:    " << *endpoints[Counter]);
+    LOG(4, "DEBUG:    " << *endpoints[Counter] << "\t\t" << *lines[Counter]);
     Counter++;
   }
@@ -246,6 +246,6 @@
 
   // 1. get intersection with plane
-  LOG(3, "DEBUG: Looking for closest point of triangle " << *this << " to " << x << ".");
-  LOG(3, "DEBUG: endpoints are " << endpoints[0]->node->getPosition() << ","
+  LOG(4, "DEBUG: Looking for closest point of triangle " << *this << " to " << x << ".");
+  LOG(5, "DEBUG: endpoints are " << endpoints[0]->node->getPosition() << ","
       << endpoints[1]->node->getPosition() << ", and " << endpoints[2]->node->getPosition() << ".");
   try {
@@ -256,5 +256,5 @@
   }
   Vector InPlane(ClosestPoint); // points from plane intersection to straight-down point
-  LOG(4, "DEBUG: Closest point on triangle plane is " << ClosestPoint << ".");
+  LOG(5, "DEBUG: Closest point on triangle plane is " << ClosestPoint << ".");
 
   // 2. Calculate in plane part of line (x, intersection)
@@ -269,12 +269,12 @@
     CrossPoint[i] = l.getClosestPoint(InPlane);
     // NOTE: direction of line is normalized, hence s must not necessarily be in [0,1] for the baseline
-    LOG(4, "DEBUG: Closest point on line from " << (endpoints[(i+1)%3]->node->getPosition())
+    LOG(5, "DEBUG: Closest point on line from " << (endpoints[(i+1)%3]->node->getPosition())
         << " to " << (endpoints[i%3]->node->getPosition()) << " is " << CrossPoint[i] << ".");
     CrossPoint[i] -= (endpoints[(i+1)%3]->node->getPosition());  // cross point was returned as absolute vector
     const double s = CrossPoint[i].ScalarProduct(Direction)/Direction.NormSquared();
-    LOG(5, "DEBUG: Factor s is " << s << ".");
+    LOG(6, "DEBUG: Factor s is " << s << ".");
     if ((s >= -MYEPSILON) && ((s-1.) <= MYEPSILON)) {
       CrossPoint[i] += (endpoints[(i+1)%3]->node->getPosition());  // make cross point absolute again
-      LOG(5, "DEBUG: Crosspoint is " << CrossPoint[i] << ", intersecting BoundaryLine between "
+      LOG(6, "DEBUG: Crosspoint is " << CrossPoint[i] << ", intersecting BoundaryLine between "
           << endpoints[i % 3]->node->getPosition() << " and "
           << endpoints[(i + 1) % 3]->node->getPosition() << ".");
@@ -285,5 +285,5 @@
       else
         CrossPoint[i] = (endpoints[i%3]->node->getPosition());
-      LOG(5, "DEBUG: Crosspoint is " << CrossPoint[i] << ", intersecting outside of BoundaryLine between "
+      LOG(6, "DEBUG: Crosspoint is " << CrossPoint[i] << ", intersecting outside of BoundaryLine between "
           << endpoints[i % 3]->node->getPosition() << " and "
           << endpoints[(i + 1) % 3]->node->getPosition() << ".");
@@ -312,5 +312,5 @@
     ShortestDistance = InPlane.DistanceSquared(x);
   }
-  LOG(3, "DEBUG: Closest Point is " << ClosestPoint << " with shortest squared distance is " << ShortestDistance << ".");
+  LOG(4, "DEBUG: Closest Point is " << ClosestPoint << " with shortest squared distance is " << ShortestDistance << ".");
 
   return ShortestDistance;
@@ -367,6 +367,9 @@
 {
   //Info FunctionInfo(__func__);
-  LOG(1, "INFO: Checking " << Points[0] << "," << Points[1] << "," << Points[2] << " against " << endpoints[0] << "," << endpoints[1] << "," << endpoints[2] << ".");
-  return (((endpoints[0] == Points[0]) || (endpoints[0] == Points[1]) || (endpoints[0] == Points[2])) && ((endpoints[1] == Points[0]) || (endpoints[1] == Points[1]) || (endpoints[1] == Points[2])) && ((endpoints[2] == Points[0]) || (endpoints[2] == Points[1]) || (endpoints[2] == Points[2])
+  LOG(5, "DEBUG: Checking " << *Points[0] << "," << *Points[1] << "," << *Points[2]
+      << " against " << *this); //*endpoints[0] << "," << *endpoints[1] << "," << *endpoints[2] << ".");
+  return (((endpoints[0] == Points[0]) || (endpoints[0] == Points[1]) || (endpoints[0] == Points[2]))
+      && ((endpoints[1] == Points[0]) || (endpoints[1] == Points[1]) || (endpoints[1] == Points[2]))
+      && ((endpoints[2] == Points[0]) || (endpoints[2] == Points[1]) || (endpoints[2] == Points[2])
 
   ));
Index: src/Tesselation/CandidateForTesselation.cpp
===================================================================
--- src/Tesselation/CandidateForTesselation.cpp	(revision dfe0549d4ce8433fde1acf2f7886d20fc1f0174a)
+++ src/Tesselation/CandidateForTesselation.cpp	(revision b8d21539ab1899769efb705f4de59ef647f234b1)
@@ -108,7 +108,7 @@
 
   if (!pointlist.empty())
-    LOG(3, "DEBUG: Checking whether sphere contains candidate list and baseline " << *BaseLine->endpoints[0] << "<->" << *BaseLine->endpoints[1] << " only ...");
+    LOG(3, "DEBUG: Checking validity whether sphere contains candidate list and baseline " << *BaseLine->endpoints[0] << "<->" << *BaseLine->endpoints[1] << " only ...");
   else
-    LOG(3, "DEBUG: Checking whether sphere with no candidates contains baseline " << *BaseLine->endpoints[0] << "<->" << *BaseLine->endpoints[1] << " only ...");
+    LOG(3, "DEBUG: Checking validity whether sphere with no candidates contains baseline " << *BaseLine->endpoints[0] << "<->" << *BaseLine->endpoints[1] << " only ...");
   // check baseline for OptCenter and OtherOptCenter being on sphere's surface
   for (list<const Vector *>::const_iterator VRunner = VectorList.begin(); VRunner != VectorList.end(); ++VRunner) {
@@ -131,10 +131,10 @@
         return false;
       } else {
-        LOG(3, "DEBUG: Candidate " << *Walker << " is inside by " << distance << ".");
+        LOG(4, "DEBUG: Candidate " << *Walker << " is inside by " << distance << ".");
       }
     }
   }
 
-  LOG(2, "DEBUG: Checking whether sphere contains no others points ...");
+  LOG(3, "DEBUG: Checking validity whether sphere contains no others points ...");
   bool flag = true;
   for (list<const Vector *>::const_iterator VRunner = VectorList.begin(); VRunner != VectorList.end(); ++VRunner) {
@@ -143,16 +143,16 @@
 
     {
-      LOG(3, "DEBUG: The following atoms are inside sphere at " << (*VRunner) << ":");
+      LOG(4, "DEBUG: The following atoms are inside sphere at " << (*VRunner) << ":");
       for (TesselPointList::const_iterator Runner = ListofPoints->begin(); Runner != ListofPoints->end(); ++Runner)
-        LOG(3, "DEBUG:  " << *(*Runner) << " with distance " << (*Runner)->distance(*(*VRunner)) << ".");
+        LOG(4, "DEBUG:  " << *(*Runner) << " with distance " << (*Runner)->distance(*(*VRunner)) << ".");
     }
 
     // remove baseline's endpoints and candidates
     for (int i = 0; i < 2; i++) {
-      LOG(3, "DEBUG: removing baseline tesselpoint " << *BaseLine->endpoints[i]->node << ".");
+      LOG(5, "DEBUG: removing baseline tesselpoint " << *BaseLine->endpoints[i]->node << ".");
       ListofPoints->remove(BaseLine->endpoints[i]->node);
     }
     for (TesselPointList::const_iterator Runner = pointlist.begin(); Runner != pointlist.end(); ++Runner) {
-      LOG(3, "DEBUG: removing candidate tesselpoint " << *(*Runner) << ".");
+      LOG(5, "DEBUG: removing candidate tesselpoint " << *(*Runner) << ".");
       ListofPoints->remove(*Runner);
     }
Index: src/Tesselation/boundary.cpp
===================================================================
--- src/Tesselation/boundary.cpp	(revision dfe0549d4ce8433fde1acf2f7886d20fc1f0174a)
+++ src/Tesselation/boundary.cpp	(revision b8d21539ab1899769efb705f4de59ef647f234b1)
@@ -535,4 +535,7 @@
   }
 
+  LOG(1, "INFO: Making tesselated surface with " << TesselStruct->TrianglesOnBoundaryCount
+      << " convex ...");
+
   // First step: RemovePointFromTesselatedSurface
   do {
@@ -547,8 +550,8 @@
       PointAdvance++;
       point = PointRunner->second;
-      LOG(1, "INFO: Current point is " << *point << ".");
+      LOG(2, "INFO: Current point is " << *point << ".");
       for (LineMap::iterator LineRunner = point->lines.begin(); LineRunner != point->lines.end(); LineRunner++) {
         line = LineRunner->second;
-        LOG(1, "INFO: Current line of point " << *point << " is " << *line << ".");
+        LOG(3, "INFO: Current line of point " << *point << " is " << *line << ".");
         if (!line->CheckConvexityCriterion()) {
           // remove the point if needed
@@ -766,5 +769,5 @@
 //  status = CheckListOfBaselines(TesselStruct);
 
-  cout << "before correction" << endl;
+//  cout << "before correction" << endl;
 
   // store before correction
@@ -779,5 +782,5 @@
   // write final envelope
   CalculateConcavityPerBoundaryPoint(TesselStruct);
-  cout << "after correction" << endl;
+//  cout << "after correction" << endl;
   StoreTrianglesinFile(mol, TesselStruct, filename, "");
 
Index: src/Tesselation/tesselation.cpp
===================================================================
--- src/Tesselation/tesselation.cpp	(revision dfe0549d4ce8433fde1acf2f7886d20fc1f0174a)
+++ src/Tesselation/tesselation.cpp	(revision b8d21539ab1899769efb705f4de59ef647f234b1)
@@ -69,9 +69,9 @@
 class molecule;
 
-const char *TecplotSuffix=".dat";
-const char *Raster3DSuffix=".r3d";
-const char *VRMLSUffix=".wrl";
-
-const double ParallelEpsilon=1e-3;
+const char *TecplotSuffix = ".dat";
+const char *Raster3DSuffix = ".r3d";
+const char *VRMLSUffix = ".wrl";
+
+const double ParallelEpsilon = 1e-3;
 const double Tesselation::HULLEPSILON = 1e-9;
 
@@ -79,10 +79,5 @@
  */
 Tesselation::Tesselation() :
-  PointsOnBoundaryCount(0),
-  LinesOnBoundaryCount(0),
-  TrianglesOnBoundaryCount(0),
-  LastTriangle(NULL),
-  TriangleFilesWritten(0),
-  InternalPointer(PointsOnBoundary.begin())
+    PointsOnBoundaryCount(0), LinesOnBoundaryCount(0), TrianglesOnBoundaryCount(0), LastTriangle(NULL), TriangleFilesWritten(0), InternalPointer(PointsOnBoundary.begin())
 {
   //Info FunctionInfo(__func__);
@@ -116,11 +111,11 @@
 {
   // create linkedcell
-	LinkedCell_deprecated *LinkedList = new LinkedCell_deprecated(cloud, 2.*SPHERERADIUS);
-
-	// check for at least three points
-	{
-	  bool ThreePointsFound = true;
-	  cloud.GoToFirst();
-    for (size_t i=0;i<3;++i, cloud.GoToNext())
+  LinkedCell_deprecated *LinkedList = new LinkedCell_deprecated(cloud, 2. * SPHERERADIUS);
+
+  // check for at least three points
+  {
+    bool ThreePointsFound = true;
+    cloud.GoToFirst();
+    for (size_t i = 0; i < 3; ++i, cloud.GoToNext())
       ThreePointsFound &= (!cloud.IsEnd());
     cloud.GoToFirst();
@@ -129,7 +124,7 @@
       return;
     }
-	}
-
-	// find a starting triangle
+  }
+
+  // find a starting triangle
   FindStartingTriangle(SPHERERADIUS, LinkedList);
 
@@ -145,11 +140,10 @@
         //the line is there, so there is a triangle, but only one.
         const bool TesselationFailFlag = FindNextSuitableTriangle(*baseline, *T, SPHERERADIUS, LinkedList);
-        ASSERT( TesselationFailFlag,
-            "Tesselation::operator() - no suitable candidate triangle found.");
+        ASSERT(TesselationFailFlag, "Tesselation::operator() - no suitable candidate triangle found.");
       }
     }
 
     // 2b. search for smallest ShortestAngle among all candidates
-    double ShortestAngle = 4.*M_PI;
+    double ShortestAngle = 4. * M_PI;
     for (CandidateMap::iterator Runner = OpenLines.begin(); Runner != OpenLines.end(); Runner++) {
       if (Runner->second->ShortestAngle < ShortestAngle) {
@@ -158,5 +152,5 @@
       }
     }
-    if ((ShortestAngle == 4.*M_PI) || (baseline->pointlist.empty()))
+    if ((ShortestAngle == 4. * M_PI) || (baseline->pointlist.empty()))
       OneLoopWithoutSuccessFlag = false;
     else {
@@ -180,20 +174,15 @@
 
   // 6a. Every triangle forms a pyramid with the center of gravity as its peak, sum up the volumes
-  for (TriangleMap::const_iterator runner = TrianglesOnBoundary.begin(); runner != TrianglesOnBoundary.end(); runner++)
-    { // go through every triangle, calculate volume of its pyramid with CoG as peak
-      x = runner->second->getEndpoint(0) - runner->second->getEndpoint(1);
-      const double G = runner->second->getArea();
-      x = runner->second->getPlane().getNormal();
-      x.Scale(runner->second->getEndpoint(1).ScalarProduct(x));
-      const double h = x.Norm(); // distance of CoG to triangle
-      const double PyramidVolume = (1. / 3.) * G * h; // this formula holds for _all_ pyramids (independent of n-edge base or (not) centered peak)
-      LOG(1, "INFO: Area of triangle is " << setprecision(10) << G << " "
-          << (IsAngstroem ? "angstrom" : "atomiclength") << "^2, height is "
-          << h << " and the volume is " << PyramidVolume << " "
-          << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
-      volume += PyramidVolume;
-    }
-  LOG(0, "RESULT: The summed volume is " << setprecision(6)
-      << volume << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
+  for (TriangleMap::const_iterator runner = TrianglesOnBoundary.begin(); runner != TrianglesOnBoundary.end(); runner++) { // go through every triangle, calculate volume of its pyramid with CoG as peak
+    x = runner->second->getEndpoint(0) - runner->second->getEndpoint(1);
+    const double G = runner->second->getArea();
+    x = runner->second->getPlane().getNormal();
+    x.Scale(runner->second->getEndpoint(1).ScalarProduct(x));
+    const double h = x.Norm(); // distance of CoG to triangle
+    const double PyramidVolume = (1. / 3.) * G * h; // this formula holds for _all_ pyramids (independent of n-edge base or (not) centered peak)
+    LOG(1, "INFO: Area of triangle is " << setprecision(10) << G << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^2, height is " << h << " and the volume is " << PyramidVolume << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
+    volume += PyramidVolume;
+  }
+  LOG(0, "RESULT: The summed volume is " << setprecision(6) << volume << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
 
   return volume;
@@ -212,17 +201,13 @@
 
   // 6a. Every triangle forms a pyramid with the center of gravity as its peak, sum up the volumes
-  for (TriangleMap::const_iterator runner = TrianglesOnBoundary.begin(); runner != TrianglesOnBoundary.end(); runner++)
-    { // go through every triangle, calculate volume of its pyramid with CoG as peak
-  		const double area = runner->second->getArea();
-  		LOG(1, "INFO: Area of triangle is " << setprecision(10) << area << " "
-          << (IsAngstroem ? "angstrom" : "atomiclength") << "^2.");
-      surfacearea += area;
-    }
-  LOG(0, "RESULT: The summed surface area is " << setprecision(6)
-      << surfacearea << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
+  for (TriangleMap::const_iterator runner = TrianglesOnBoundary.begin(); runner != TrianglesOnBoundary.end(); runner++) { // go through every triangle, calculate volume of its pyramid with CoG as peak
+    const double area = runner->second->getArea();
+    LOG(1, "INFO: Area of triangle is " << setprecision(10) << area << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^2.");
+    surfacearea += area;
+  }
+  LOG(0, "RESULT: The summed surface area is " << setprecision(6) << surfacearea << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
 
   return surfacearea;
 }
-
 
 /** Gueses first starting triangle of the convex envelope.
@@ -256,5 +241,5 @@
         tmp = B->second->node->DistanceSquared(C->second->node->getPosition());
         distance += tmp * tmp;
-        DistanceMMap.insert(DistanceMultiMapPair(distance, pair<PointMap::iterator, PointMap::iterator> (B, C)));
+        DistanceMMap.insert(DistanceMultiMapPair(distance, pair<PointMap::iterator, PointMap::iterator>(B, C)));
       }
     }
@@ -276,7 +261,5 @@
     // 2. next, we have to check whether all points reside on only one side of the triangle
     // 3. construct plane vector
-    PlaneVector = Plane(A->second->node->getPosition(),
-                        baseline->second.first->second->node->getPosition(),
-                        baseline->second.second->second->node->getPosition()).getNormal();
+    PlaneVector = Plane(A->second->node->getPosition(), baseline->second.first->second->node->getPosition(), baseline->second.second->second->node->getPosition()).getNormal();
     LOG(2, "Plane vector of candidate triangle is " << PlaneVector);
     // 4. loop over all points
@@ -393,6 +376,5 @@
         // prepare some auxiliary vectors
         Vector BaseLineCenter, BaseLine;
-        BaseLineCenter = 0.5 * ((baseline->second->endpoints[0]->node->getPosition()) +
-                                (baseline->second->endpoints[1]->node->getPosition()));
+        BaseLineCenter = 0.5 * ((baseline->second->endpoints[0]->node->getPosition()) + (baseline->second->endpoints[1]->node->getPosition()));
         BaseLine = (baseline->second->endpoints[0]->node->getPosition()) - (baseline->second->endpoints[1]->node->getPosition());
 
@@ -412,5 +394,5 @@
         // vector in propagation direction (out of triangle)
         // project center vector onto triangle plane (points from intersection plane-NormalVector to plane-CenterVector intersection)
-        PropagationVector = Plane(BaseLine, NormalVector,0).getNormal();
+        PropagationVector = Plane(BaseLine, NormalVector, 0).getNormal();
         TempVector = CenterVector - (baseline->second->endpoints[0]->node->getPosition()); // TempVector is vector on triangle plane pointing from one baseline egde towards center!
         //LOG(0, "Projection of propagation onto temp: " << PropagationVector.Projection(&TempVector) << ".");
@@ -465,10 +447,6 @@
             // in case NOT both were found, create virtually this triangle, get its normal vector, calculate angle
             flag = true;
-            VirtualNormalVector = Plane((baseline->second->endpoints[0]->node->getPosition()),
-                                        (baseline->second->endpoints[1]->node->getPosition()),
-                                        (target->second->node->getPosition())).getNormal();
-            TempVector = (1./3.) * ((baseline->second->endpoints[0]->node->getPosition()) +
-                                    (baseline->second->endpoints[1]->node->getPosition()) +
-                                    (target->second->node->getPosition()));
+            VirtualNormalVector = Plane((baseline->second->endpoints[0]->node->getPosition()), (baseline->second->endpoints[1]->node->getPosition()), (target->second->node->getPosition())).getNormal();
+            TempVector = (1. / 3.) * ((baseline->second->endpoints[0]->node->getPosition()) + (baseline->second->endpoints[1]->node->getPosition()) + (target->second->node->getPosition()));
             TempVector -= (*Center);
             // make it always point outward
@@ -482,23 +460,24 @@
               winner = target;
               LOG(5, "DEBUG: New winner " << *winner->second->node << " due to smaller angle between normal vectors.");
-            } else if (fabs(SmallestAngle - TempAngle) < MYEPSILON) { // check the angle to propagation, both possible targets are in one plane! (their normals have same angle)
-              // hence, check the angles to some normal direction from our base line but in this common plane of both targets...
-              helper = (target->second->node->getPosition()) - BaseLineCenter;
-              helper.ProjectOntoPlane(BaseLine);
-              // ...the one with the smaller angle is the better candidate
-              TempVector = (target->second->node->getPosition()) - BaseLineCenter;
-              TempVector.ProjectOntoPlane(VirtualNormalVector);
-              TempAngle = TempVector.Angle(helper);
-              TempVector = (winner->second->node->getPosition()) - BaseLineCenter;
-              TempVector.ProjectOntoPlane(VirtualNormalVector);
-              if (TempAngle < TempVector.Angle(helper)) {
-                TempAngle = NormalVector.Angle(VirtualNormalVector);
-                SmallestAngle = TempAngle;
-                winner = target;
-                LOG(5, "DEBUG: New winner " << *winner->second->node << " due to smaller angle " << TempAngle << " to propagation direction.");
+            } else
+              if (fabs(SmallestAngle - TempAngle) < MYEPSILON) { // check the angle to propagation, both possible targets are in one plane! (their normals have same angle)
+                // hence, check the angles to some normal direction from our base line but in this common plane of both targets...
+                helper = (target->second->node->getPosition()) - BaseLineCenter;
+                helper.ProjectOntoPlane(BaseLine);
+                // ...the one with the smaller angle is the better candidate
+                TempVector = (target->second->node->getPosition()) - BaseLineCenter;
+                TempVector.ProjectOntoPlane(VirtualNormalVector);
+                TempAngle = TempVector.Angle(helper);
+                TempVector = (winner->second->node->getPosition()) - BaseLineCenter;
+                TempVector.ProjectOntoPlane(VirtualNormalVector);
+                if (TempAngle < TempVector.Angle(helper)) {
+                  TempAngle = NormalVector.Angle(VirtualNormalVector);
+                  SmallestAngle = TempAngle;
+                  winner = target;
+                  LOG(5, "DEBUG: New winner " << *winner->second->node << " due to smaller angle " << TempAngle << " to propagation direction.");
+                } else
+                  LOG(5, "DEBUG: Keeping old winner " << *winner->second->node << " due to smaller angle to propagation direction.");
               } else
-                LOG(5, "DEBUG: Keeping old winner " << *winner->second->node << " due to smaller angle to propagation direction.");
-            } else
-              LOG(5, "DEBUG: Keeping old winner " << *winner->second->node << " due to smaller angle between normal vectors.");
+                LOG(5, "DEBUG: Keeping old winner " << *winner->second->node << " due to smaller angle between normal vectors.");
           }
         } // end of loop over all boundary points
@@ -567,5 +546,5 @@
 
   cloud.GoToFirst();
-  PointCloudAdaptor< Tesselation, MapValueIterator<Tesselation::iterator> > newcloud(this, cloud.GetName());
+  PointCloudAdaptor<Tesselation, MapValueIterator<Tesselation::iterator> > newcloud(this, cloud.GetName());
   BoundaryPoints = new LinkedCell_deprecated(newcloud, 5.);
   while (!cloud.IsEnd()) { // we only have to go once through all points, as boundary can become only bigger
@@ -752,7 +731,5 @@
       if (FindLine->second->triangles.size() == 1) {
         CandidateMap::iterator Finder = OpenLines.find(FindLine->second);
-        ASSERT( Finder != OpenLines.end(),
-            "Tesselation::AddTesselationLine() - "+toString(*FindLine->second)
-            +" is not a new line and not in OpenLines.");
+        ASSERT(Finder != OpenLines.end(), "Tesselation::AddTesselationLine() - " + toString(*FindLine->second) + " is not a new line and not in OpenLines.");
         if (Finder->second != NULL) {
           if (!Finder->second->pointlist.empty())
@@ -765,5 +742,5 @@
           // get open line
           for (TesselPointList::const_iterator CandidateChecker = Finder->second->pointlist.begin(); CandidateChecker != Finder->second->pointlist.end(); ++CandidateChecker) {
-            if ((*(CandidateChecker) == candidate->node) && (OptCenter == NULL || OptCenter->DistanceSquared(Finder->second->OptCenter) < MYEPSILON )) { // stop searching if candidate matches
+            if ((*(CandidateChecker) == candidate->node) && (OptCenter == NULL || OptCenter->DistanceSquared(Finder->second->OptCenter) < MYEPSILON)) { // stop searching if candidate matches
               LOG(4, "ACCEPT: Candidate " << *(*CandidateChecker) << " has the right center " << Finder->second->OptCenter << ".");
               insertNewLine = false;
@@ -814,5 +791,5 @@
   // also add to open lines
   CandidateForTesselation *CFT = new CandidateForTesselation(BLS[n]);
-  OpenLines.insert(pair<BoundaryLineSet *, CandidateForTesselation *> (BLS[n], CFT));
+  OpenLines.insert(pair<BoundaryLineSet *, CandidateForTesselation *>(BLS[n], CFT));
 }
 ;
@@ -905,5 +882,5 @@
         for (TriangleMap::iterator TriangleRunner = triangle->lines[i]->triangles.begin(); TriangleRunner != triangle->lines[i]->triangles.end(); TriangleRunner++)
           output << "\t[" << (TriangleRunner->second)->Nr << "|" << *((TriangleRunner->second)->endpoints[0]) << ", " << *((TriangleRunner->second)->endpoints[1]) << ", " << *((TriangleRunner->second)->endpoints[2]) << "] \t";
-        OpenLines.insert(pair<BoundaryLineSet *, CandidateForTesselation *> (triangle->lines[i], NULL));
+        OpenLines.insert(pair<BoundaryLineSet *, CandidateForTesselation *>(triangle->lines[i], NULL));
       }
       LOG(3, "DEBUG: " << output.str());
@@ -964,11 +941,12 @@
         LOG(4, "DEBUG: " << *line->endpoints[i] << " has no more lines it's attached to, erasing.");
         RemoveTesselationPoint(line->endpoints[i]);
-      } else if (DoLog(0)) {
-        std::stringstream output;
-        output << "DEBUG: " << *line->endpoints[i] << " has still lines it's attached to: ";
-        for (LineMap::iterator LineRunner = line->endpoints[i]->lines.begin(); LineRunner != line->endpoints[i]->lines.end(); LineRunner++)
-          output << "[" << *(LineRunner->second) << "] \t";
-        LOG(4, output.str());
-      }
+      } else
+        if (DoLog(0)) {
+          std::stringstream output;
+          output << "DEBUG: " << *line->endpoints[i] << " has still lines it's attached to: ";
+          for (LineMap::iterator LineRunner = line->endpoints[i]->lines.begin(); LineRunner != line->endpoints[i]->lines.end(); LineRunner++)
+            output << "[" << *(LineRunner->second) << "] \t";
+          LOG(4, output.str());
+        }
       line->endpoints[i] = NULL; // free'd or not: disconnect
     } else
@@ -1012,5 +990,5 @@
   //Info FunctionInfo(__func__);
 
-  LOG(3, "DEBUG: Checking whether sphere contains no others points ...");
+  LOG(3, "DEBUG: Checking degeneracy by whether sphere contains no others points ...");
   bool flag = true;
 
@@ -1019,7 +997,8 @@
   TesselPointList *ListofPoints = LC->GetPointsInsideSphere(RADIUS, &CandidateLine.OtherOptCenter);
 
-  LOG(3, "DEBUG: The following atoms are inside sphere at " << CandidateLine.OtherOptCenter << ":");
+  LOG(3, "DEBUG: CheckDegeneracy: There are " << ListofPoints->size() << " points inside the sphere.");
+  LOG(4, "DEBUG: The following atoms are inside sphere at " << CandidateLine.OtherOptCenter << ":");
   for (TesselPointList::const_iterator Runner = ListofPoints->begin(); Runner != ListofPoints->end(); ++Runner)
-    LOG(3, "DEBUG:   " << *(*Runner) << " with distance " << (*Runner)->distance(CandidateLine.OtherOptCenter) << ".");
+    LOG(4, "DEBUG:   " << *(*Runner) << " with distance " << (*Runner)->distance(CandidateLine.OtherOptCenter) << ".");
 
   // remove triangles's endpoints
@@ -1035,7 +1014,7 @@
     LOG(3, "DEBUG: CheckDegeneracy: There are still " << ListofPoints->size() << " points inside the sphere.");
     flag = false;
-    LOG(3, "DEBUG: External atoms inside of sphere at " << CandidateLine.OtherOptCenter << ":");
+    LOG(4, "DEBUG: External atoms inside of sphere at " << CandidateLine.OtherOptCenter << ":");
     for (TesselPointList::const_iterator Runner = ListofPoints->begin(); Runner != ListofPoints->end(); ++Runner)
-      LOG(3, "DEBUG:   " << *(*Runner) << " with distance " << (*Runner)->distance(CandidateLine.OtherOptCenter) << ".");
+      LOG(4, "DEBUG:   " << *(*Runner) << " with distance " << (*Runner)->distance(CandidateLine.OtherOptCenter) << ".");
   }
   delete ListofPoints;
@@ -1182,4 +1161,5 @@
 
   // 1. searching topmost point with respect to each axis
+  LOG(2, "INFO: Searching for topmost pointer from each axis.");
   for (int i = 0; i < NDIM; i++) { // each axis
     LC->n[i] = LC->N[i] - 1; // current axis is topmost cell
@@ -1203,5 +1183,5 @@
   }
 
-  if (DoLog(1)) {
+  if (DoLog(3)) {
     std::stringstream output;
     output << "Found maximum coordinates: ";
@@ -1217,5 +1197,5 @@
     BaseLine = new BoundaryLineSet();
     BaseLine->endpoints[0] = new BoundaryPointSet(MaxPoint[k]);
-    LOG(2, "DEBUG: Coordinates of start node at " << *BaseLine->endpoints[0]->node << ".");
+    LOG(2, "INFO: Coordinates of start node at " << *BaseLine->endpoints[0]->node << ".");
 
     double ShortestAngle;
@@ -1230,13 +1210,13 @@
     }
     BaseLine->endpoints[1] = new BoundaryPointSet(Temporary);
-    LOG(1, "INFO: Second node is at " << *Temporary << ".");
+    LOG(2, "INFO: Second node is at " << *Temporary << ".");
 
     // construct center of circle
     CircleCenter = 0.5 * ((BaseLine->endpoints[0]->node->getPosition()) + (BaseLine->endpoints[1]->node->getPosition()));
-    LOG(1, "INFO: CircleCenter is at " << CircleCenter << ".");
+    LOG(4, "DEBUG: CircleCenter is at " << CircleCenter << ".");
 
     // construct normal vector of circle
     CirclePlaneNormal = (BaseLine->endpoints[0]->node->getPosition()) - (BaseLine->endpoints[1]->node->getPosition());
-    LOG(1, "INFO: CirclePlaneNormal is at " << CirclePlaneNormal << ".");
+    LOG(4, "DEBUG: CirclePlaneNormal is at " << CirclePlaneNormal << ".");
 
     double radius = CirclePlaneNormal.NormSquared();
@@ -1245,16 +1225,15 @@
     NormalVector.ProjectOntoPlane(CirclePlaneNormal);
     NormalVector.Normalize();
-    LOG(1, "INFO: NormalVector is at " << NormalVector << ".");
+    LOG(4, "DEBUG: NormalVector is at " << NormalVector << ".");
     ShortestAngle = 2. * M_PI; // This will indicate the quadrant.
 
-    SphereCenter = (CircleRadius * NormalVector) +  CircleCenter;
+    SphereCenter = (CircleRadius * NormalVector) + CircleCenter;
     // Now, NormalVector and SphereCenter are two orthonormalized vectors in the plane defined by CirclePlaneNormal (not normalized)
 
     // look in one direction of baseline for initial candidate
     try {
-      SearchDirection = Plane(CirclePlaneNormal, NormalVector,0).getNormal();  // whether we look "left" first or "right" first is not important ...
-    } catch(LinearAlgebraException) {
-      ELOG(1, "Vectors are linear dependent: "
-          << CirclePlaneNormal << ", " << NormalVector << ".");
+      SearchDirection = Plane(CirclePlaneNormal, NormalVector, 0).getNormal(); // whether we look "left" first or "right" first is not important ...
+    } catch (LinearAlgebraException) {
+      ELOG(1, "Vectors are linear dependent: " << CirclePlaneNormal << ", " << NormalVector << ".");
       delete BaseLine;
       continue;
@@ -1262,5 +1241,5 @@
 
     // adding point 1 and point 2 and add the line between them
-    LOG(2, "DEBUG: Found second point is at " << *BaseLine->endpoints[1]->node << ".");
+    LOG(3, "DEBUG: Found second point is at " << *BaseLine->endpoints[1]->node << ".");
 
     //LOG(1, "INFO: OldSphereCenter is at " << helper << ".");
@@ -1271,5 +1250,5 @@
       for (TesselPointList::iterator it = OptCandidates.pointlist.begin(); it != OptCandidates.pointlist.end(); it++)
         output << *(*it);
-      LOG(2, "DEBUG: List of third Points is: " << output.str());
+      LOG(3, "DEBUG: List of third Points is: " << output.str());
     }
     if (!OptCandidates.pointlist.empty()) {
@@ -1433,5 +1412,4 @@
 //  return result;
 //};
-
 /** This function finds a triangle to a line, adjacent to an existing one.
  * @param out output stream for debugging
@@ -1465,10 +1443,8 @@
 
   // construct center of circle
-  CircleCenter = 0.5 * ((CandidateLine.BaseLine->endpoints[0]->node->getPosition()) +
-                        (CandidateLine.BaseLine->endpoints[1]->node->getPosition()));
+  CircleCenter = 0.5 * ((CandidateLine.BaseLine->endpoints[0]->node->getPosition()) + (CandidateLine.BaseLine->endpoints[1]->node->getPosition()));
 
   // construct normal vector of circle
-  CirclePlaneNormal = (CandidateLine.BaseLine->endpoints[0]->node->getPosition()) -
-                      (CandidateLine.BaseLine->endpoints[1]->node->getPosition());
+  CirclePlaneNormal = (CandidateLine.BaseLine->endpoints[0]->node->getPosition()) - (CandidateLine.BaseLine->endpoints[1]->node->getPosition());
 
   // calculate squared radius of circle
@@ -1480,14 +1456,14 @@
     CircleRadius = RADIUS * RADIUS - radius / 4.;
     CirclePlaneNormal.Normalize();
-    LOG(3, "DEBUG: CircleCenter is at " << CircleCenter << ", CirclePlaneNormal is " << CirclePlaneNormal << " with circle radius " << sqrt(CircleRadius) << ".");
-
-    LOG(3, "DEBUG: OldSphereCenter is at " << T.SphereCenter << ".");
+    LOG(4, "DEBUG: CircleCenter is at " << CircleCenter << ", CirclePlaneNormal is " << CirclePlaneNormal << " with circle radius " << sqrt(CircleRadius) << ".");
+
+    LOG(4, "DEBUG: OldSphereCenter is at " << T.SphereCenter << ".");
 
     // construct SearchDirection and an "outward pointer"
-    SearchDirection = Plane(RelativeSphereCenter, CirclePlaneNormal,0).getNormal();
+    SearchDirection = Plane(RelativeSphereCenter, CirclePlaneNormal, 0).getNormal();
     helper = CircleCenter - (ThirdPoint->node->getPosition());
-    if (helper.ScalarProduct(SearchDirection) < -HULLEPSILON)// ohoh, SearchDirection points inwards!
+    if (helper.ScalarProduct(SearchDirection) < -HULLEPSILON) // ohoh, SearchDirection points inwards!
       SearchDirection.Scale(-1.);
-    LOG(3, "DEBUG: SearchDirection is " << SearchDirection << ".");
+    LOG(4, "DEBUG: SearchDirection is " << SearchDirection << ".");
     if (fabs(RelativeSphereCenter.ScalarProduct(SearchDirection)) > HULLEPSILON) {
       // rotated the wrong way!
@@ -1499,5 +1475,5 @@
 
   } else {
-    LOG(3, "DEBUG: Circumcircle for base line " << *CandidateLine.BaseLine << " and base triangle " << T << " is too big!");
+    LOG(4, "DEBUG: Circumcircle for base line " << *CandidateLine.BaseLine << " and base triangle " << T << " is too big!");
   }
 
@@ -1532,5 +1508,5 @@
     baseline = Runner->second;
     if (baseline->pointlist.empty()) {
-      ASSERT((baseline->BaseLine->triangles.size() == 1),"Open line without exactly one attached triangle");
+      ASSERT((baseline->BaseLine->triangles.size() == 1), "Open line without exactly one attached triangle");
       T = (((baseline->BaseLine->triangles.begin()))->second);
       LOG(4, "DEBUG: Finding best candidate for open line " << *baseline->BaseLine << " of triangle " << *T);
@@ -1565,9 +1541,9 @@
   TesselPointList *connectedClosestPoints = GetCircleOfSetOfPoints(&SetOfNeighbours, TurningPoint, CandidateLine.BaseLine->endpoints[1]->node->getPosition());
 
-  {
+  if (DoLog(3)) {
     std::stringstream output;
     for (TesselPointList::iterator TesselRunner = connectedClosestPoints->begin(); TesselRunner != connectedClosestPoints->end(); ++TesselRunner)
       output << **TesselRunner;
-    LOG(3, "DEBUG: List of Candidates for Turning Point " << *TurningPoint << ":");
+    LOG(3, "DEBUG: List of Candidates for Turning Point " << *TurningPoint << ":" << output.str());
   }
 
@@ -1610,5 +1586,6 @@
   }
   delete (connectedClosestPoints);
-};
+}
+;
 
 /** for polygons (multiple candidates for a baseline) sets internal edges to the correct next candidate.
@@ -1630,5 +1607,5 @@
       else {
         LOG(4, "DEBUG: line " << *(FindLine->second) << " is open with no candidate, setting to next Sprinter" << (*Sprinter));
-        Finder->second->T = BTS;  // is last triangle
+        Finder->second->T = BTS; // is last triangle
         Finder->second->pointlist.push_back(Sprinter);
         Finder->second->ShortestAngle = 0.;
@@ -1637,5 +1614,6 @@
     }
   }
-};
+}
+;
 
 /** If a given \a *triangle is degenerated, this adds both sides.
@@ -1673,7 +1651,7 @@
   // give some verbose output about the whole procedure
   if (CandidateLine.T != NULL)
-    LOG(2, "DEBUG: --> New triangle with " << *BTS << " and normal vector " << BTS->NormalVector << ", from " << *CandidateLine.T << " and angle " << CandidateLine.ShortestAngle << ".");
+    LOG(2, "INFO: --> New triangle with " << *BTS << " and normal vector " << BTS->NormalVector << ", from " << *CandidateLine.T << " and angle " << CandidateLine.ShortestAngle << ".");
   else
-    LOG(2, "DEBUG: --> New starting triangle with " << *BTS << " and normal vector " << BTS->NormalVector << " and no top triangle.");
+    LOG(2, "INFO: --> New starting triangle with " << *BTS << " and normal vector " << BTS->NormalVector << " and no top triangle.");
   triangle = BTS;
 
@@ -1895,5 +1873,5 @@
     }
     for (TriangleMap::iterator runner = Base->triangles.begin(); runner != Base->triangles.end(); runner++) {
-    LOG(4, "DEBUG: Adding NormalVector " << runner->second->NormalVector << " of triangle " << *(runner->second) << ".");
+      LOG(4, "DEBUG: Adding NormalVector " << runner->second->NormalVector << " of triangle " << *(runner->second) << ".");
       BaseLineNormal += (runner->second->NormalVector);
     }
@@ -1935,5 +1913,5 @@
   }
   for (TriangleMap::iterator runner = Base->triangles.begin(); runner != Base->triangles.end(); runner++) {
-    LOG(1, "INFO: Adding NormalVector " << runner->second->NormalVector << " of triangle " << *(runner->second) << ".");
+    LOG(5, "INFO: Adding NormalVector " << runner->second->NormalVector << " of triangle " << *(runner->second) << ".");
     BaseLineNormal += (runner->second->NormalVector);
   }
@@ -1998,9 +1976,9 @@
   m = 0;
   // first obtain all triangle to delete ... (otherwise we pull the carpet (Base) from under the for-loop's feet)
-  list <BoundaryTriangleSet *> TrianglesOfBase;
+  list<BoundaryTriangleSet *> TrianglesOfBase;
   for (TriangleMap::iterator runner = Base->triangles.begin(); runner != Base->triangles.end(); ++runner)
     TrianglesOfBase.push_back(runner->second);
   // .. then delete each triangle (which deletes the line as well)
-  for (list <BoundaryTriangleSet *>::iterator runner = TrianglesOfBase.begin(); !TrianglesOfBase.empty(); runner = TrianglesOfBase.begin()) {
+  for (list<BoundaryTriangleSet *>::iterator runner = TrianglesOfBase.begin(); !TrianglesOfBase.empty(); runner = TrianglesOfBase.begin()) {
     LOG(3, "DEBUG: Deleting triangle " << *(*runner) << ".");
     OldTriangleNrs[m++] = (*runner)->Nr;
@@ -2182,5 +2160,5 @@
   TesselPoint *Candidate = NULL;
 
-  LOG(3, "DEBUG: NormalVector of BaseTriangle is " << NormalVector << ".");
+  LOG(4, "DEBUG: NormalVector of BaseTriangle is " << NormalVector << ".");
 
   // copy old center
@@ -2190,10 +2168,8 @@
 
   // construct center of circle
-  CircleCenter = 0.5 * ((CandidateLine.BaseLine->endpoints[0]->node->getPosition()) +
-                        (CandidateLine.BaseLine->endpoints[1]->node->getPosition()));
+  CircleCenter = 0.5 * ((CandidateLine.BaseLine->endpoints[0]->node->getPosition()) + (CandidateLine.BaseLine->endpoints[1]->node->getPosition()));
 
   // construct normal vector of circle
-  CirclePlaneNormal = (CandidateLine.BaseLine->endpoints[0]->node->getPosition()) -
-                      (CandidateLine.BaseLine->endpoints[1]->node->getPosition());
+  CirclePlaneNormal = (CandidateLine.BaseLine->endpoints[0]->node->getPosition()) - (CandidateLine.BaseLine->endpoints[1]->node->getPosition());
 
   RelativeOldSphereCenter = OldSphereCenter - CircleCenter;
@@ -2204,5 +2180,5 @@
     CircleRadius = RADIUS * RADIUS - radius;
     CirclePlaneNormal.Normalize();
-    LOG(3, "DEBUG: CircleCenter is at " << CircleCenter << ", CirclePlaneNormal is " << CirclePlaneNormal << " with circle radius " << sqrt(CircleRadius) << ".");
+    LOG(4, "DEBUG: CircleCenter is at " << CircleCenter << ", CirclePlaneNormal is " << CirclePlaneNormal << " with circle radius " << sqrt(CircleRadius) << ".");
 
     // test whether old center is on the band's plane
@@ -2213,8 +2189,8 @@
     radius = RelativeOldSphereCenter.NormSquared();
     if (fabs(radius - CircleRadius) < HULLEPSILON) {
-      LOG(3, "DEBUG: RelativeOldSphereCenter is at " << RelativeOldSphereCenter << ".");
+      LOG(4, "DEBUG: RelativeOldSphereCenter is at " << RelativeOldSphereCenter << ".");
 
       // check SearchDirection
-      LOG(3, "DEBUG: SearchDirection is " << SearchDirection << ".");
+      LOG(4, "DEBUG: SearchDirection is " << SearchDirection << ".");
       if (fabs(RelativeOldSphereCenter.ScalarProduct(SearchDirection)) > HULLEPSILON) { // rotated the wrong way!
         ELOG(1, "SearchDirection and RelativeOldSphereCenter are not orthogonal!");
@@ -2257,15 +2233,13 @@
                   // find center on the plane
                   GetCenterofCircumcircle(NewPlaneCenter, CandidateLine.BaseLine->endpoints[0]->node->getPosition(), CandidateLine.BaseLine->endpoints[1]->node->getPosition(), Candidate->getPosition());
-                  LOG(3, "DEBUG: NewPlaneCenter is " << NewPlaneCenter << ".");
+                  LOG(5, "DEBUG: NewPlaneCenter is " << NewPlaneCenter << ".");
 
                   try {
-                    NewNormalVector = Plane((CandidateLine.BaseLine->endpoints[0]->node->getPosition()),
-                                            (CandidateLine.BaseLine->endpoints[1]->node->getPosition()),
-                                            (Candidate->getPosition())).getNormal();
-                    LOG(3, "DEBUG: NewNormalVector is " << NewNormalVector << ".");
+                    NewNormalVector = Plane((CandidateLine.BaseLine->endpoints[0]->node->getPosition()), (CandidateLine.BaseLine->endpoints[1]->node->getPosition()), (Candidate->getPosition())).getNormal();
+                    LOG(5, "DEBUG: NewNormalVector is " << NewNormalVector << ".");
                     radius = CandidateLine.BaseLine->endpoints[0]->node->DistanceSquared(NewPlaneCenter);
-                    LOG(3, "DEBUG: CircleCenter is at " << CircleCenter << ", CirclePlaneNormal is " << CirclePlaneNormal << " with circle radius " << sqrt(CircleRadius) << ".");
-                    LOG(3, "DEBUG: SearchDirection is " << SearchDirection << ".");
-                    LOG(3, "DEBUG: Radius of CircumCenterCircle is " << radius << ".");
+                    LOG(5, "DEBUG: CircleCenter is at " << CircleCenter << ", CirclePlaneNormal is " << CirclePlaneNormal << " with circle radius " << sqrt(CircleRadius) << ".");
+                    LOG(5, "DEBUG: SearchDirection is " << SearchDirection << ".");
+                    LOG(5, "DEBUG: Radius of CircumCenterCircle is " << radius << ".");
                     if (radius < RADIUS * RADIUS) {
                       otherradius = CandidateLine.BaseLine->endpoints[1]->node->DistanceSquared(NewPlaneCenter);
@@ -2273,14 +2247,14 @@
                         // construct both new centers
                         NewSphereCenter = NewPlaneCenter;
-                        OtherNewSphereCenter= NewPlaneCenter;
+                        OtherNewSphereCenter = NewPlaneCenter;
                         helper = NewNormalVector;
                         helper.Scale(sqrt(RADIUS * RADIUS - radius));
-                        LOG(4, "DEBUG: Distance of NewPlaneCenter " << NewPlaneCenter << " to either NewSphereCenter is " << helper.Norm() << " of vector " << helper << " with sphere radius " << RADIUS << ".");
+                        LOG(5, "DEBUG: Distance of NewPlaneCenter " << NewPlaneCenter << " to either NewSphereCenter is " << helper.Norm() << " of vector " << helper << " with sphere radius " << RADIUS << ".");
                         NewSphereCenter += helper;
-                        LOG(4, "DEBUG: NewSphereCenter is at " << NewSphereCenter << ".");
+                        LOG(5, "DEBUG: NewSphereCenter is at " << NewSphereCenter << ".");
                         // OtherNewSphereCenter is created by the same vector just in the other direction
                         helper.Scale(-1.);
                         OtherNewSphereCenter += helper;
-                        LOG(4, "DEBUG: OtherNewSphereCenter is at " << OtherNewSphereCenter << ".");
+                        LOG(5, "DEBUG: OtherNewSphereCenter is at " << OtherNewSphereCenter << ".");
                         alpha = GetPathLengthonCircumCircle(CircleCenter, CirclePlaneNormal, CircleRadius, NewSphereCenter, OldSphereCenter, NormalVector, SearchDirection, HULLEPSILON);
                         Otheralpha = GetPathLengthonCircumCircle(CircleCenter, CirclePlaneNormal, CircleRadius, OtherNewSphereCenter, OldSphereCenter, NormalVector, SearchDirection, HULLEPSILON);
@@ -2303,36 +2277,35 @@
                           if ((CandidateLine.ShortestAngle - HULLEPSILON) < alpha) {
                             CandidateLine.pointlist.push_back(Candidate);
-                            LOG(2, "ACCEPT: We have found an equally good candidate: " << *(Candidate) << " with " << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << ".");
+                            LOG(3, "ACCEPT: We have found an equally good candidate: " << *(Candidate) << " with " << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << ".");
                           } else {
                             // remove all candidates from the list and then the list itself
                             CandidateLine.pointlist.clear();
                             CandidateLine.pointlist.push_back(Candidate);
-                            LOG(2, "ACCEPT: We have found a better candidate: " << *(Candidate) << " with " << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << ".");
+                            LOG(3, "ACCEPT: We have found a better candidate: " << *(Candidate) << " with " << alpha << " and circumsphere's center at " << CandidateLine.OptCenter << ".");
                           }
                           CandidateLine.ShortestAngle = alpha;
-                          LOG(2, "DEBUG: There are " << CandidateLine.pointlist.size() << " candidates in the list now.");
+                          LOG(4, "DEBUG: There are " << CandidateLine.pointlist.size() << " candidates in the list now.");
                         } else {
                           if ((Candidate != NULL) && (CandidateLine.pointlist.begin() != CandidateLine.pointlist.end())) {
-                            LOG(3, "REJECT: Old candidate " << *(*CandidateLine.pointlist.begin()) << " with " << CandidateLine.ShortestAngle << " is better than new one " << *Candidate << " with " << alpha << " .");
+                            LOG(4, "REJECT: Old candidate " << *(*CandidateLine.pointlist.begin()) << " with " << CandidateLine.ShortestAngle << " is better than new one " << *Candidate << " with " << alpha << " .");
                           } else {
-                            LOG(3, "REJECT: Candidate " << *Candidate << " with " << alpha << " was rejected.");
+                            LOG(4, "REJECT: Candidate " << *Candidate << " with " << alpha << " was rejected.");
                           }
                         }
                       } else {
-                        ELOG(0, "REJECT: Distance to center of circumcircle is not the same from each corner of the triangle: " << fabs(radius - otherradius));
+                        ASSERT(0, std::string("FindThirdPointForTesselation() - ") + std::string("REJECT: Distance to center of circumcircle is not the same from each corner of the triangle: ") + toString(fabs(radius - otherradius)));
                       }
                     } else {
-                      LOG(3, "REJECT: NewSphereCenter " << NewSphereCenter << " for " << *Candidate << " is too far away: " << radius << ".");
+                      LOG(4, "REJECT: NewSphereCenter " << NewSphereCenter << " for " << *Candidate << " is too far away: " << radius << ".");
                     }
-                  }
-                  catch (LinearDependenceException &excp){
-                    LOG(3, boost::diagnostic_information(excp));
-                    LOG(3, "REJECT: Three points from " << *CandidateLine.BaseLine << " and Candidate " << *Candidate << " are linear-dependent.");
+                  } catch (LinearDependenceException &excp) {
+                    LOG(4, boost::diagnostic_information(excp));
+                    LOG(4, "REJECT: Three points from " << *CandidateLine.BaseLine << " and Candidate " << *Candidate << " are linear-dependent.");
                   }
                 } else {
                   if (ThirdPoint != NULL) {
-                    LOG(3, "REJECT: Base triangle " << *CandidateLine.BaseLine << " and " << *ThirdPoint << " contains Candidate " << *Candidate << ".");
+                    LOG(4, "REJECT: Base triangle " << *CandidateLine.BaseLine << " and " << *ThirdPoint << " contains Candidate " << *Candidate << ".");
                   } else {
-                    LOG(3, "REJECT: Base triangle " << *CandidateLine.BaseLine << " contains Candidate " << *Candidate << ".");
+                    LOG(4, "REJECT: Base triangle " << *CandidateLine.BaseLine << " contains Candidate " << *Candidate << ".");
                   }
                 }
@@ -2345,10 +2318,10 @@
   } else {
     if (ThirdPoint != NULL)
-      LOG(3, "Circumcircle for base line " << *CandidateLine.BaseLine << " and third node " << *ThirdPoint << " is too big!");
+      LOG(4, "DEBUG: Circumcircle for base line " << *CandidateLine.BaseLine << " and third node " << *ThirdPoint << " is too big!");
     else
-      LOG(3, "Circumcircle for base line " << *CandidateLine.BaseLine << " is too big!");
-  }
-
-  LOG(2, "DEBUG: Sorting candidate list ...");
+      LOG(4, "DEBUG: Circumcircle for base line " << *CandidateLine.BaseLine << " is too big!");
+  }
+
+  LOG(5, "DEBUG: Sorting candidate list ...");
   if (CandidateLine.pointlist.size() > 1) {
     CandidateLine.pointlist.unique();
@@ -2356,7 +2329,5 @@
   }
 
-  ASSERT(CandidateLine.pointlist.empty() || (CandidateLine.CheckValidity(RADIUS, LC)),
-      std::string("Tesselation::FindThirdPointForTesselation()")
-      +std::string("There were other points contained in the rolling sphere as well!"));
+  ASSERT(CandidateLine.pointlist.empty() || (CandidateLine.CheckValidity(RADIUS, LC)), std::string("Tesselation::FindThirdPointForTesselation()") + std::string("There were other points contained in the rolling sphere as well!"));
 }
 ;
@@ -2370,5 +2341,5 @@
 {
   //Info FunctionInfo(__func__);
-  const BoundaryLineSet * lines[2] = { line1, line2 };
+  const BoundaryLineSet * lines[2] = {line1, line2};
   class BoundaryPointSet *node = NULL;
   PointMap OrderMap;
@@ -2377,5 +2348,5 @@
     // for both lines
     for (int j = 0; j < 2; j++) { // for both endpoints
-      OrderTest = OrderMap.insert(pair<int, class BoundaryPointSet *> (lines[i]->endpoints[j]->Nr, lines[i]->endpoints[j]));
+      OrderTest = OrderMap.insert(pair<int, class BoundaryPointSet *>(lines[i]->endpoints[j]->Nr, lines[i]->endpoints[j]));
       if (!OrderTest.second) { // if insertion fails, we have common endpoint
         node = OrderTest.first->second;
@@ -2426,6 +2397,5 @@
               // we should make sure that both triangles end up in the same entry
               // in the distance multimap. Hence, we round to 6 digit precision.
-              const double distance =
-                  1e-6*floor(FindPoint->second->node->DistanceSquared(x)*1e+6);
+              const double distance = 1e-6 * floor(FindPoint->second->node->DistanceSquared(x) * 1e+6);
               points->insert(DistanceToPointPair(distance, FindPoint->second));
               LOG(3, "DEBUG: Putting " << *FindPoint->second << " into the list.");
@@ -2472,9 +2442,7 @@
     for (LineMap::iterator LineRunner = Runner->second->lines.begin(); LineRunner != Runner->second->lines.end(); LineRunner++) {
       // calculate closest point on line to desired point
-      helper = 0.5 * (((LineRunner->second)->endpoints[0]->node->getPosition()) +
-                      ((LineRunner->second)->endpoints[1]->node->getPosition()));
+      helper = 0.5 * (((LineRunner->second)->endpoints[0]->node->getPosition()) + ((LineRunner->second)->endpoints[1]->node->getPosition()));
       Center = (x) - helper;
-      BaseLine = ((LineRunner->second)->endpoints[0]->node->getPosition()) -
-                 ((LineRunner->second)->endpoints[1]->node->getPosition());
+      BaseLine = ((LineRunner->second)->endpoints[0]->node->getPosition()) - ((LineRunner->second)->endpoints[1]->node->getPosition());
       Center.ProjectOntoPlane(BaseLine);
       const double distance = Center.NormSquared();
@@ -2533,6 +2501,5 @@
     for (LineMap::iterator LineRunner = Runner->second->lines.begin(); LineRunner != Runner->second->lines.end(); LineRunner++) {
 
-      BaseLine = ((LineRunner->second)->endpoints[0]->node->getPosition()) -
-                 ((LineRunner->second)->endpoints[1]->node->getPosition());
+      BaseLine = ((LineRunner->second)->endpoints[0]->node->getPosition()) - ((LineRunner->second)->endpoints[1]->node->getPosition());
       const double lengthBase = BaseLine.NormSquared();
 
@@ -2550,10 +2517,11 @@
           MinDistance = lengthEnd;
           LOG(1, "ACCEPT: Line " << *LineRunner->second << " to endpoint " << *LineRunner->second->endpoints[0]->node << " is closer with " << lengthEnd << ".");
-        } else if (fabs(lengthEnd - MinDistance) < MYEPSILON) { // additional best candidate
-          ClosestLines.insert(LineRunner->second);
-          LOG(1, "ACCEPT: Line " << *LineRunner->second << " to endpoint " << *LineRunner->second->endpoints[1]->node << " is equally good with " << lengthEnd << ".");
-        } else { // line is worse
-          LOG(1, "REJECT: Line " << *LineRunner->second << " to either endpoints is further away than present closest line candidate: " << lengthEndA << ", " << lengthEndB << ", and distance is longer than baseline:" << lengthBase << ".");
-        }
+        } else
+          if (fabs(lengthEnd - MinDistance) < MYEPSILON) { // additional best candidate
+            ClosestLines.insert(LineRunner->second);
+            LOG(1, "ACCEPT: Line " << *LineRunner->second << " to endpoint " << *LineRunner->second->endpoints[1]->node << " is equally good with " << lengthEnd << ".");
+          } else { // line is worse
+            LOG(1, "REJECT: Line " << *LineRunner->second << " to either endpoints is further away than present closest line candidate: " << lengthEndA << ", " << lengthEndB << ", and distance is longer than baseline:" << lengthBase << ".");
+          }
       } else { // intersection is closer, calculate
         // calculate closest point on line to desired point
@@ -2681,5 +2649,5 @@
   double distance = 0.;
 
-  if (triangle == NULL) {// is boundary point or only point in point cloud?
+  if (triangle == NULL) { // is boundary point or only point in point cloud?
     LOG(1, "No triangle given!");
     return -1.;
@@ -2790,8 +2758,9 @@
       takePoint = true;
       current = findLines->second->endpoints[1]->node;
-    } else if (findLines->second->endpoints[1]->Nr == Point->getNr()) {
-      takePoint = true;
-      current = findLines->second->endpoints[0]->node;
-    }
+    } else
+      if (findLines->second->endpoints[1]->Nr == Point->getNr()) {
+        takePoint = true;
+        current = findLines->second->endpoints[0]->node;
+      }
 
     if (takePoint) {
@@ -2833,5 +2802,5 @@
   Vector OrthogonalVector;
   Vector helper;
-  const TesselPoint * const TrianglePoints[3] = { Point, NULL, NULL };
+  const TesselPoint * const TrianglePoints[3] = {Point, NULL, NULL};
   TriangleList *triangles = NULL;
 
@@ -2844,7 +2813,5 @@
   // calculate central point
   triangles = FindTriangles(TrianglePoints);
-  ASSERT((triangles == NULL) || (triangles->empty()),
-      std::string("Tesselation::GetCircleOfConnectedTriangles()")
-      +std::string("Could not find any triangles for point "+toString(*Point)+"."));
+  ASSERT((triangles == NULL) || (triangles->empty()), std::string("Tesselation::GetCircleOfConnectedTriangles()") + std::string("Could not find any triangles for point " + toString(*Point) + "."));
   for (TriangleList::iterator Runner = triangles->begin(); Runner != triangles->end(); Runner++)
     PlaneNormal += (*Runner)->NormalVector;
@@ -2860,12 +2827,9 @@
     AngleZero = ((*SetOfNeighbours->begin())->getPosition()) - (Point->getPosition());
     AngleZero.ProjectOntoPlane(PlaneNormal);
-    ASSERT (AngleZero.NormSquared() > MYEPSILON,
-        std::string("Tesselation::GetCircleOfConnectedTriangles() - ")
-        +std::string("AngleZero is 0 even with alternative reference.")
-        +std::string("The algorithm has to be changed here!"));
+    ASSERT(AngleZero.NormSquared() > MYEPSILON, std::string("Tesselation::GetCircleOfConnectedTriangles() - ") + std::string("AngleZero is 0 even with alternative reference.") + std::string("The algorithm has to be changed here!"));
   }
   LOG(4, "DEBUG: Reference vector on this plane representing angle 0 is " << AngleZero << ".");
   if (AngleZero.NormSquared() > MYEPSILON)
-    OrthogonalVector = Plane(PlaneNormal, AngleZero,0).getNormal();
+    OrthogonalVector = Plane(PlaneNormal, AngleZero, 0).getNormal();
   else
     OrthogonalVector.MakeNormalTo(PlaneNormal);
@@ -2878,5 +2842,5 @@
     double angle = GetAngle(helper, AngleZero, OrthogonalVector);
     LOG(4, "DEBUG" << angle << " for point " << **listRunner << ".");
-    anglesOfPoints.insert(pair<double, TesselPoint*> (angle, (*listRunner)));
+    anglesOfPoints.insert(pair<double, TesselPoint*>(angle, (*listRunner)));
   }
 
@@ -2933,7 +2897,5 @@
   int counter = 0;
   while (TesselC != SetOfNeighbours->end()) {
-    helper = Plane(((*TesselA)->getPosition()),
-                   ((*TesselB)->getPosition()),
-                   ((*TesselC)->getPosition())).getNormal();
+    helper = Plane(((*TesselA)->getPosition()), ((*TesselB)->getPosition()), ((*TesselC)->getPosition())).getNormal();
     LOG(5, "DEBUG: Making normal vector out of " << *(*TesselA) << ", " << *(*TesselB) << " and " << *(*TesselC) << ":" << helper);
     counter++;
@@ -2944,5 +2906,5 @@
   }
   //LOG(0, "Summed vectors " << center << "; number of points " << connectedPoints.size() << "; scale factor " << counter);
-  PlaneNormal.Scale(1.0 / (double) counter);
+  PlaneNormal.Scale(1.0 / (double)counter);
   //  LOG(1, "INFO: Calculated center of all circle points is " << center << ".");
   //
@@ -2958,16 +2920,13 @@
     AngleZero.ProjectOntoPlane(PlaneNormal);
   }
-  if ((Reference.IsZero()) || (AngleZero.NormSquared() < MYEPSILON )) {
+  if ((Reference.IsZero()) || (AngleZero.NormSquared() < MYEPSILON)) {
     LOG(4, "DEBUG: Using alternatively " << (*SetOfNeighbours->begin())->getPosition() << " as angle 0 referencer.");
     AngleZero = ((*SetOfNeighbours->begin())->getPosition()) - (Point->getPosition());
     AngleZero.ProjectOntoPlane(PlaneNormal);
-    ASSERT(AngleZero.NormSquared() > MYEPSILON,
-        std::string("Tesselation::GetCircleOfSetOfPoints() - ")
-        +std::string("AngleZero is 0 even with alternative reference.")
-        +std::string("The algorithm has to be changed here!"));
+    ASSERT(AngleZero.NormSquared() > MYEPSILON, std::string("Tesselation::GetCircleOfSetOfPoints() - ") + std::string("AngleZero is 0 even with alternative reference.") + std::string("The algorithm has to be changed here!"));
   }
   LOG(4, "DEBUG: Reference vector on this plane representing angle 0 is " << AngleZero << ".");
   if (AngleZero.NormSquared() > MYEPSILON)
-    OrthogonalVector = Plane(PlaneNormal, AngleZero,0).getNormal();
+    OrthogonalVector = Plane(PlaneNormal, AngleZero, 0).getNormal();
   else
     OrthogonalVector.MakeNormalTo(PlaneNormal);
@@ -2983,9 +2942,6 @@
       angle = 2. * M_PI - angle;
     LOG(4, "DEBUG: Calculated angle between " << helper << " and " << AngleZero << " is " << angle << " for point " << **listRunner << ".");
-    InserterTest = anglesOfPoints.insert(pair<double, TesselPoint*> (angle, (*listRunner)));
-    ASSERT(InserterTest.second,
-        std::string("Tesselation::GetCircleOfSetOfPoints() - ")
-        +std::string("got two atoms with same angle "+toString(*((InserterTest.first)->second)))
-        +std::string(" and "+toString((*listRunner))));
+    InserterTest = anglesOfPoints.insert(pair<double, TesselPoint*>(angle, (*listRunner)));
+    ASSERT(InserterTest.second, std::string("Tesselation::GetCircleOfSetOfPoints() - ") + std::string("got two atoms with same angle " + toString(*((InserterTest.first)->second))) + std::string(" and " + toString((*listRunner))));
   }
 
@@ -3007,5 +2963,5 @@
   //Info FunctionInfo(__func__);
   map<double, TesselPoint*> anglesOfPoints;
-  list<TesselPointList *> *ListOfPaths = new list<TesselPointList *> ;
+  list<TesselPointList *> *ListOfPaths = new list<TesselPointList *>;
   TesselPointList *connectedPath = NULL;
   Vector center;
@@ -3033,7 +2989,10 @@
   map<class BoundaryTriangleSet *, bool>::iterator TriangleRunner;
   for (LineMap::iterator Runner = ReferencePoint->lines.begin(); Runner != ReferencePoint->lines.end(); Runner++) {
-    TouchedLine.insert(pair<class BoundaryLineSet *, bool> (Runner->second, false));
-    for (TriangleMap::iterator Sprinter = Runner->second->triangles.begin(); Sprinter != Runner->second->triangles.end(); Sprinter++)
-      TouchedTriangle.insert(pair<class BoundaryTriangleSet *, bool> (Sprinter->second, false));
+    LOG(4, "DEBUG: Adding " << *Runner->second << " to TouchedLine map.");
+    TouchedLine.insert(pair<class BoundaryLineSet *, bool>(Runner->second, false));
+    for (TriangleMap::iterator Sprinter = Runner->second->triangles.begin(); Sprinter != Runner->second->triangles.end(); Sprinter++) {
+      LOG(4, "DEBUG: Adding " << *Sprinter->second << " to TouchedTriangle map.");
+      TouchedTriangle.insert(pair<class BoundaryTriangleSet *, bool>(Sprinter->second, false));
+    }
   }
   if (!ReferencePoint->lines.empty()) {
@@ -3042,69 +3001,71 @@
       if (LineRunner == TouchedLine.end()) {
         ELOG(1, "I could not find " << *runner->second << " in the touched list.");
-      } else if (!LineRunner->second) {
-        LineRunner->second = true;
-        connectedPath = new TesselPointList;
-        triangle = NULL;
-        CurrentLine = runner->second;
-        StartLine = CurrentLine;
-        CurrentPoint = CurrentLine->GetOtherEndpoint(ReferencePoint);
-        LOG(1, "INFO: Beginning path retrieval at " << *CurrentPoint << " of line " << *CurrentLine << ".");
-        do {
-          // push current one
-          LOG(1, "INFO: Putting " << *CurrentPoint << " at end of path.");
-          connectedPath->push_back(CurrentPoint->node);
-
-          // find next triangle
-          for (TriangleMap::iterator Runner = CurrentLine->triangles.begin(); Runner != CurrentLine->triangles.end(); Runner++) {
-            LOG(1, "INFO: Inspecting triangle " << *Runner->second << ".");
-            if ((Runner->second != triangle)) { // look for first triangle not equal to old one
-              triangle = Runner->second;
-              TriangleRunner = TouchedTriangle.find(triangle);
-              if (TriangleRunner != TouchedTriangle.end()) {
-                if (!TriangleRunner->second) {
-                  TriangleRunner->second = true;
-                  LOG(1, "INFO: Connecting triangle is " << *triangle << ".");
-                  break;
+      } else
+        if (!LineRunner->second) {
+          LineRunner->second = true;
+          connectedPath = new TesselPointList;
+          triangle = NULL;
+          CurrentLine = runner->second;
+          StartLine = CurrentLine;
+          CurrentPoint = CurrentLine->GetOtherEndpoint(ReferencePoint);
+          LOG(3, "INFO: Beginning path retrieval at " << *CurrentPoint << " of line " << *CurrentLine << ".");
+          do {
+            // push current one
+            LOG(3, "INFO: Putting " << *CurrentPoint << " at end of path.");
+            connectedPath->push_back(CurrentPoint->node);
+
+            // find next triangle
+            for (TriangleMap::iterator Runner = CurrentLine->triangles.begin(); Runner != CurrentLine->triangles.end(); Runner++) {
+              LOG(4, "DEBUG: Inspecting triangle " << *Runner->second << ".");
+              if ((Runner->second != triangle)) { // look for first triangle not equal to old one
+                triangle = Runner->second;
+                TriangleRunner = TouchedTriangle.find(triangle);
+                if (TriangleRunner != TouchedTriangle.end()) {
+                  if (!TriangleRunner->second) {
+                    TriangleRunner->second = true;
+                    LOG(4, "DEBUG: Connecting triangle is " << *triangle << ".");
+                    break;
+                  } else {
+                    LOG(4, "DEBUG: Skipping " << *triangle << ", as we have already visited it.");
+                    triangle = NULL;
+                  }
                 } else {
-                  LOG(1, "INFO: Skipping " << *triangle << ", as we have already visited it.");
+                  ELOG(1, "I could not find " << *triangle << " in the touched list.");
                   triangle = NULL;
                 }
               } else {
-                ELOG(1, "I could not find " << *triangle << " in the touched list.");
+                // as we have stumbled upon the same triangle, we don't need the check anymore
                 triangle = NULL;
               }
-            } else {
-              // as we have stumbled upon the same triangle, we don't need the check anymore
-              triangle = NULL;
             }
+            if (triangle == NULL)
+              break;
+            // find next line
+            for (int i = 0; i < 3; i++) {
+              if ((triangle->lines[i] != CurrentLine) && (triangle->lines[i]->ContainsBoundaryPoint(ReferencePoint))) { // not the current line and still containing Point
+                CurrentLine = triangle->lines[i];
+                LOG(3, "INFO: Connecting line is " << *CurrentLine << ".");
+                break;
+              }
+            }
+            LineRunner = TouchedLine.find(CurrentLine);
+            if (LineRunner == TouchedLine.end())
+              ELOG(1, "I could not find " << *CurrentLine << " in the touched list.");
+            else
+              LineRunner->second = true;
+            // find next point
+            CurrentPoint = CurrentLine->GetOtherEndpoint(ReferencePoint);
+
+          } while (CurrentLine != StartLine);
+          // last point is missing, as it's on start line
+          if (StartLine->GetOtherEndpoint(ReferencePoint)->node != connectedPath->back()) {
+            LOG(3, "INFO: Putting " << *CurrentPoint << " at end of path to close it.");
+            connectedPath->push_back(StartLine->GetOtherEndpoint(ReferencePoint)->node);
           }
-          if (triangle == NULL)
-            break;
-          // find next line
-          for (int i = 0; i < 3; i++) {
-            if ((triangle->lines[i] != CurrentLine) && (triangle->lines[i]->ContainsBoundaryPoint(ReferencePoint))) { // not the current line and still containing Point
-              CurrentLine = triangle->lines[i];
-              LOG(1, "INFO: Connecting line is " << *CurrentLine << ".");
-              break;
-            }
-          }
-          LineRunner = TouchedLine.find(CurrentLine);
-          if (LineRunner == TouchedLine.end())
-            ELOG(1, "I could not find " << *CurrentLine << " in the touched list.");
-          else
-            LineRunner->second = true;
-          // find next point
-          CurrentPoint = CurrentLine->GetOtherEndpoint(ReferencePoint);
-
-        } while (CurrentLine != StartLine);
-        // last point is missing, as it's on start line
-        LOG(1, "INFO: Putting " << *CurrentPoint << " at end of path.");
-        if (StartLine->GetOtherEndpoint(ReferencePoint)->node != connectedPath->back())
-          connectedPath->push_back(StartLine->GetOtherEndpoint(ReferencePoint)->node);
-
-        ListOfPaths->push_back(connectedPath);
-      } else {
-        LOG(1, "INFO: Skipping " << *runner->second << ", as we have already visited it.");
-      }
+
+          ListOfPaths->push_back(connectedPath);
+        } else {
+          LOG(3, "DEBUG: Skipping " << *runner->second << ", as we have already visited it.");
+        }
     }
   } else {
@@ -3125,5 +3086,5 @@
   //Info FunctionInfo(__func__);
   list<TesselPointList *> *ListofPaths = GetPathsOfConnectedPoints(Point);
-  list<TesselPointList *> *ListofClosedPaths = new list<TesselPointList *> ;
+  list<TesselPointList *> *ListofClosedPaths = new list<TesselPointList *>;
   TesselPointList *connectedPath = NULL;
   TesselPointList *newPath = NULL;
@@ -3135,5 +3096,12 @@
     connectedPath = *ListRunner;
 
-    LOG(1, "INFO: Current path is " << connectedPath << ".");
+    if (DoLog(2)) {
+      std::stringstream output;
+      output << "INFO: Current path is ";
+      BOOST_FOREACH(const TesselPoint * const item, *connectedPath) {
+        output << *item << " ";
+      }
+      LOG(1, output.str());
+    }
 
     // go through list, look for reappearance of starting Point and count
@@ -3144,10 +3112,8 @@
       if ((*CircleRunner == *CircleStart) && (CircleRunner != CircleStart)) { // is not the very first point
         // we have a closed circle from Marker to new Marker
-        if (DoLog(1)) {
+        if (DoLog(3)) {
           std::stringstream output;
-          output << count + 1 << ". closed path consists of: ";
-          for (TesselPointList::iterator CircleSprinter = Marker;
-              CircleSprinter != CircleRunner;
-              CircleSprinter++)
+          output << "DEBUG: " << count + 1 << ". closed path consists of: ";
+          for (TesselPointList::iterator CircleSprinter = Marker; CircleSprinter != CircleRunner; CircleSprinter++)
             output << (**CircleSprinter) << " <-> ";
           LOG(1, output.str());
@@ -3165,5 +3131,5 @@
     }
   }
-  LOG(1, "INFO: " << count << " closed additional path(s) have been created.");
+  LOG(2, "DEBUG: " << count << " closed additional path(s) have been created.");
 
   // delete list of paths
@@ -3206,6 +3172,7 @@
 struct CloserToPiHalf
 {
-  bool operator()(double angle, double smallestangle) {
-    return (fabs(angle - M_PI/2.) < fabs(smallestangle - M_PI/2.));
+  bool operator()(double angle, double smallestangle)
+  {
+    return (fabs(angle - M_PI / 2.) < fabs(smallestangle - M_PI / 2.));
   }
 };
@@ -3264,10 +3231,10 @@
   NormalVector.Zero();
   for (TriangleMap::iterator Runner = Candidates.begin(); Runner != Candidates.end(); Runner++) {
-    LOG(1, "INFO: Removing triangle " << *(Runner->second) << ".");
+    LOG(3, "DEBUG: Removing triangle " << *(Runner->second) << ".");
     NormalVector -= Runner->second->NormalVector; // has to point inward
     RemoveTesselationTriangle(Runner->second);
     count++;
   }
-  LOG(1, count << " triangles were removed.");
+  LOG(2, "INFO: " << count << " triangles were removed.");
 
   list<TesselPointList *>::iterator ListAdvance = ListOfClosedPaths->begin();
@@ -3292,5 +3259,5 @@
         EndNode = connectedPath->end();
         for (MiddleNode = connectedPath->begin(); MiddleNode != connectedPath->end(); MiddleNode++) {
-          LOG(1, "INFO: MiddleNode is " << **MiddleNode << ".");
+          LOG(3, "INFO: MiddleNode is " << **MiddleNode << ".");
           // construct vectors to next and previous neighbour
           StartNode = MiddleNode;
@@ -3308,5 +3275,5 @@
           OrthogonalVector = ((*MiddleNode)->getPosition()) - OldPoint;
           OrthogonalVector.MakeNormalTo(Reference);
-          angles.push_back( GetAngle(Point, Reference, OrthogonalVector) );
+          angles.push_back(GetAngle(Point, Reference, OrthogonalVector));
         }
         const angles_t::const_iterator maxiter = std::max_element(angles.begin(), angles.end());
@@ -3321,11 +3288,9 @@
         }
         EndNode = connectedPath->begin();
-        std::advance(EndNode,
-            std::distance(const_cast<const angles_t &>(angles).begin(), miniter));
+        std::advance(EndNode, std::distance(const_cast<const angles_t &>(angles).begin(), miniter));
         angles.clear();
 
         MiddleNode = EndNode;
-        ASSERT( MiddleNode == connectedPath->end(),
-          "Tesselation::RemovePointFromTesselatedSurface() - Could not find a smallest angle!");
+        ASSERT(MiddleNode == connectedPath->end(), "Tesselation::RemovePointFromTesselatedSurface() - Could not find a smallest angle!");
         StartNode = MiddleNode;
         if (StartNode == connectedPath->begin())
@@ -3361,9 +3326,9 @@
           continue;
         }
-        LOG(3, "Adding new triangle points.");
+        LOG(3, "DEBUG: Adding new triangle points.");
         AddTesselationPoint(*StartNode, 0);
         AddTesselationPoint(*MiddleNode, 1);
         AddTesselationPoint(*EndNode, 2);
-        LOG(3, "Adding new triangle lines.");
+        LOG(3, "DEBUG: Adding new triangle lines.");
         AddTesselationLine(NULL, NULL, TPS[0], TPS[1], 0);
         // line between start and end must be new (except for very last triangle)
@@ -3381,8 +3346,7 @@
         // prepare nodes for next triangle
         StartNode = EndNode;
-        LOG(2, "Removing " << **MiddleNode << " from closed path, remaining points: " << connectedPath->size() << ".");
+        LOG(3, "DEBUG: Removing " << **MiddleNode << " from closed path, remaining points: " << connectedPath->size() << ".");
         connectedPath->remove(*MiddleNode); // remove the middle node (it is surrounded by triangles)
-        ASSERT(connectedPath->size() >= 2,
-            "Tesselation::RemovePointFromTesselatedSurface() - There are only two endpoints left!");
+        ASSERT(connectedPath->size() >= 2, "Tesselation::RemovePointFromTesselatedSurface() - There are only two endpoints left!");
         if (connectedPath->size() == 2) { // we are done
           connectedPath->remove(*StartNode); // remove the start node
@@ -3401,4 +3365,5 @@
       }
       // maximize the inner lines (we preferentially created lines with a huge angle, which is for the tesselation not wanted though useful for the closing)
+      LOG(3, "INFO: Flipping inner lines to maximize volume");
       if (NewLines.size() > 1) {
         LineList::iterator Candidate;
@@ -3416,5 +3381,6 @@
           if (maxgain != 0) {
             volume += maxgain;
-            LOG(1, "Flipping baseline with highest volume" << **Candidate << ".");
+            LOG(3, "DEBUG: Flipping baseline with highest volume gain of " 
+                << maxgain << ": " << **Candidate << ".");
             OtherBase = FlipBaseline(*Candidate);
             NewLines.erase(Candidate);
@@ -3483,5 +3449,5 @@
             if (TrianglePoints[j] != NULL) {
               for (FindLine = TrianglePoints[i]->lines.find(TrianglePoints[j]->node->getNr()); // is a multimap!
-              (FindLine != TrianglePoints[i]->lines.end()) && (FindLine->first == TrianglePoints[j]->node->getNr()); FindLine++) {
+                  (FindLine != TrianglePoints[i]->lines.end()) && (FindLine->first == TrianglePoints[j]->node->getNr()); FindLine++) {
                 for (FindTriangle = FindLine->second->triangles.begin(); FindTriangle != FindLine->second->triangles.end(); FindTriangle++) {
                   if (FindTriangle->second->IsPresentTupel(TrianglePoints)) {
@@ -3504,5 +3470,5 @@
           break;
       for (FindLine = TrianglePoints[(i + 1) % 3]->lines.find(TrianglePoints[(i + 2) % 3]->node->getNr()); // is a multimap!
-      (FindLine != TrianglePoints[(i + 1) % 3]->lines.end()) && (FindLine->first == TrianglePoints[(i + 2) % 3]->node->getNr()); FindLine++) {
+          (FindLine != TrianglePoints[(i + 1) % 3]->lines.end()) && (FindLine->first == TrianglePoints[(i + 2) % 3]->node->getNr()); FindLine++) {
         for (FindTriangle = FindLine->second->triangles.begin(); FindTriangle != FindLine->second->triangles.end(); FindTriangle++) {
           if (FindTriangle->second->IsPresentTupel(TrianglePoints)) {
@@ -3533,6 +3499,5 @@
     }
     default:
-      ASSERT(0,
-          "Tesselation::FindTriangles() - Number of wildcards is greater than 3, cannot happen!");
+      ASSERT(0, "Tesselation::FindTriangles() - Number of wildcards is greater than 3, cannot happen!");
       break;
   }
@@ -3560,12 +3525,14 @@
     if (a->endpoints[lowerNra] < b->endpoints[lowerNrb])
       return true;
-    else if (a->endpoints[lowerNra] > b->endpoints[lowerNrb])
-      return false;
-    else { // both lower-numbered endpoints are the same ...
-      if (a->endpoints[(lowerNra + 1) % 2] < b->endpoints[(lowerNrb + 1) % 2])
-        return true;
-      else if (a->endpoints[(lowerNra + 1) % 2] > b->endpoints[(lowerNrb + 1) % 2])
+    else
+      if (a->endpoints[lowerNra] > b->endpoints[lowerNrb])
         return false;
-    }
+      else { // both lower-numbered endpoints are the same ...
+        if (a->endpoints[(lowerNra + 1) % 2] < b->endpoints[(lowerNrb + 1) % 2])
+          return true;
+        else
+          if (a->endpoints[(lowerNra + 1) % 2] > b->endpoints[(lowerNrb + 1) % 2])
+            return false;
+      }
     return false;
   }
@@ -3588,10 +3555,10 @@
 
   // sanity check
-  if (LinesOnBoundary.empty()) {
-    ELOG(2, "FindAllDegeneratedTriangles() was called without any tesselation structure.");
-    return DegeneratedLines;
-  }
-  LineMap::iterator LineRunner1;
-  pair<UniqueLines::iterator, bool> tester;
+      if (LinesOnBoundary.empty()) {
+        ELOG(2, "FindAllDegeneratedTriangles() was called without any tesselation structure.");
+        return DegeneratedLines;
+      }
+      LineMap::iterator LineRunner1;
+      pair<UniqueLines::iterator, bool> tester;
   for (LineRunner1 = LinesOnBoundary.begin(); LineRunner1 != LinesOnBoundary.end(); ++LineRunner1) {
     tester = AllLines.insert(LineRunner1->second);
@@ -3610,7 +3577,7 @@
     const LineMap::const_iterator Line2 = LinesOnBoundary.find((*it).second);
     if (Line1 != LinesOnBoundary.end() && Line2 != LinesOnBoundary.end())
-      LOG(3, "DEBUG: " << *Line1->second << " => " << *Line2->second);
+    LOG(3, "DEBUG: " << *Line1->second << " => " << *Line2->second);
     else
-      ELOG(1, "Either " << (*it).first << " or " << (*it).second << " are not in LinesOnBoundary!");
+    ELOG(1, "Either " << (*it).first << " or " << (*it).second << " are not in LinesOnBoundary!");
   }
 
@@ -3644,6 +3611,6 @@
       for (TriangleRunner2 = line2->triangles.begin(); TriangleRunner2 != line2->triangles.end(); ++TriangleRunner2) {
         if ((TriangleRunner1->second != TriangleRunner2->second) && (TriangleRunner1->second->IsPresentTupel(TriangleRunner2->second))) {
-          DegeneratedTriangles->insert(pair<int, int> (TriangleRunner1->second->Nr, TriangleRunner2->second->Nr));
-          DegeneratedTriangles->insert(pair<int, int> (TriangleRunner2->second->Nr, TriangleRunner1->second->Nr));
+          DegeneratedTriangles->insert(pair<int, int>(TriangleRunner1->second->Nr, TriangleRunner2->second->Nr));
+          DegeneratedTriangles->insert(pair<int, int>(TriangleRunner2->second->Nr, TriangleRunner1->second->Nr));
         }
       }
@@ -3713,7 +3680,7 @@
 //                OtherpartnerTriangle = TriangleRunner->second;
 //              }
-            /// interchanges their lines so that triangle->lines[i] == partnerTriangle->lines[j]
-            // the line of triangle receives the degenerated ones
-            triangle->lines[i]->triangles.erase(Othertriangle->Nr);
+              /// interchanges their lines so that triangle->lines[i] == partnerTriangle->lines[j]
+              // the line of triangle receives the degenerated ones
+              triangle->lines[i]->triangles.erase(Othertriangle->Nr);
             triangle->lines[i]->triangles.insert(TrianglePair(partnerTriangle->Nr, partnerTriangle));
             for (int k = 0; k < 3; k++)
@@ -3729,8 +3696,8 @@
 
       // erase the pair
-      count += (int) DegeneratedTriangles->erase(triangle->Nr);
+      count += (int)DegeneratedTriangles->erase(triangle->Nr);
       LOG(4, "DEBUG: RemoveDegeneratedTriangles() removes triangle " << *triangle << ".");
       RemoveTesselationTriangle(triangle);
-      count += (int) DegeneratedTriangles->erase(partnerTriangle->Nr);
+      count += (int)DegeneratedTriangles->erase(partnerTriangle->Nr);
       LOG(4, "DEBUG: RemoveDegeneratedTriangles() removes triangle " << *partnerTriangle << ".");
       RemoveTesselationTriangle(partnerTriangle);
@@ -3780,11 +3747,9 @@
   class BoundaryLineSet *BestLine = NULL;
   for (LineMap::iterator Runner = NearestBoundaryPoint->lines.begin(); Runner != NearestBoundaryPoint->lines.end(); Runner++) {
-    BaseLine = (Runner->second->endpoints[0]->node->getPosition()) -
-               (Runner->second->endpoints[1]->node->getPosition());
-    CenterToPoint = 0.5 * ((Runner->second->endpoints[0]->node->getPosition()) +
-                           (Runner->second->endpoints[1]->node->getPosition()));
+    BaseLine = (Runner->second->endpoints[0]->node->getPosition()) - (Runner->second->endpoints[1]->node->getPosition());
+    CenterToPoint = 0.5 * ((Runner->second->endpoints[0]->node->getPosition()) + (Runner->second->endpoints[1]->node->getPosition()));
     CenterToPoint -= (point->getPosition());
     angle = CenterToPoint.Angle(BaseLine);
-    if (fabs(angle - M_PI/2.) < fabs(BestAngle - M_PI/2.)) {
+    if (fabs(angle - M_PI / 2.) < fabs(BestAngle - M_PI / 2.)) {
       BestAngle = angle;
       BestLine = Runner->second;
@@ -3835,8 +3800,6 @@
   for (int i = 0; i < 3; i++) { // look for the same line as BestLine (only it's its degenerated companion)
     if ((BTS->lines[i]->ContainsBoundaryPoint(BestLine->endpoints[0])) && (BTS->lines[i]->ContainsBoundaryPoint(BestLine->endpoints[1]))) {
-      ASSERT(BestLine != BTS->lines[i],
-          std::string("Tesselation::AddBoundaryPointByDegeneratedTriangle() - ")
-          +std::string("BestLine is same as found line, something's wrong here!"));
-      BTS->lines[i]->triangles.insert(pair<int, class BoundaryTriangleSet *> (TempTriangle->Nr, TempTriangle));
+      ASSERT(BestLine != BTS->lines[i], std::string("Tesselation::AddBoundaryPointByDegeneratedTriangle() - ") + std::string("BestLine is same as found line, something's wrong here!"));
+      BTS->lines[i]->triangles.insert(pair<int, class BoundaryTriangleSet *>(TempTriangle->Nr, TempTriangle));
       TempTriangle->lines[nr] = BTS->lines[i];
       break;
@@ -3860,5 +3823,5 @@
   if (LastTriangle != NULL) {
     stringstream sstr;
-    sstr << "-"<< TrianglesOnBoundary.size() << "-" << LastTriangle->getEndpointName(0) << "_" << LastTriangle->getEndpointName(1) << "_" << LastTriangle->getEndpointName(2);
+    sstr << "-" << TrianglesOnBoundary.size() << "-" << LastTriangle->getEndpointName(0) << "_" << LastTriangle->getEndpointName(1) << "_" << LastTriangle->getEndpointName(2);
     NumberName = sstr.str();
     if (DoTecplotOutput) {
@@ -3902,19 +3865,21 @@
     if (s1->endpoints.size() < s2->endpoints.size())
       return true;
-    else if (s1->endpoints.size() > s2->endpoints.size())
-      return false;
-    else { // equality of number of endpoints
-      PointSet::const_iterator Walker1 = s1->endpoints.begin();
-      PointSet::const_iterator Walker2 = s2->endpoints.begin();
-      while ((Walker1 != s1->endpoints.end()) || (Walker2 != s2->endpoints.end())) {
-        if ((*Walker1)->Nr < (*Walker2)->Nr)
-          return true;
-        else if ((*Walker1)->Nr > (*Walker2)->Nr)
-          return false;
-        Walker1++;
-        Walker2++;
+    else
+      if (s1->endpoints.size() > s2->endpoints.size())
+        return false;
+      else { // equality of number of endpoints
+        PointSet::const_iterator Walker1 = s1->endpoints.begin();
+        PointSet::const_iterator Walker2 = s2->endpoints.begin();
+        while ((Walker1 != s1->endpoints.end()) || (Walker2 != s2->endpoints.end())) {
+          if ((*Walker1)->Nr < (*Walker2)->Nr)
+            return true;
+          else
+            if ((*Walker1)->Nr > (*Walker2)->Nr)
+              return false;
+          Walker1++;
+          Walker2++;
+        }
+        return false;
       }
-      return false;
-    }
   }
 };
@@ -3941,5 +3906,5 @@
       for (TriangleMap::const_iterator TriangleRunner = (LineRunner->second)->triangles.begin(); TriangleRunner != (LineRunner->second)->triangles.end(); TriangleRunner++) {
         if (DegeneratedTriangles->find(TriangleRunner->second->Nr) == DegeneratedTriangles->end()) {
-          TriangleInsertionTester = TriangleVectors.insert(pair<int, Vector *> ((TriangleRunner->second)->Nr, &((TriangleRunner->second)->NormalVector)));
+          TriangleInsertionTester = TriangleVectors.insert(pair<int, Vector *>((TriangleRunner->second)->Nr, &((TriangleRunner->second)->NormalVector)));
           if (TriangleInsertionTester.second)
             LOG(5, "DEBUG:  Adding triangle " << *(TriangleRunner->second) << " to triangles to check-list.");
@@ -3954,5 +3919,5 @@
         if (VectorWalker != VectorRunner) { // skip equals
           const double SCP = VectorWalker->second->ScalarProduct(*VectorRunner->second); // ScalarProduct should result in -1. for degenerated triangles
-          LOG(4, "DEBUG: Checking " << *VectorWalker->second << " against " << *VectorRunner->second << ": " << SCP);
+          LOG(4, "DEBUG: Checking " << *(VectorWalker->second) << " against " << *(VectorRunner->second) << ": " << SCP);
           if (fabs(SCP + 1.) < ParallelEpsilon) {
             InsertionTester = EndpointCandidateList.insert((Runner->second));
@@ -4036,8 +4001,5 @@
     // The Problem is probably due to two degenerated polygons being connected by a bridging, non-degenerated polygon, as somehow one node has
     // connections to either polygon ...
-    ASSERT (T->size() % 2 == 0,
-        std::string("Tesselation::CorrectAllDegeneratedPolygons() - ")
-        +std::string(" degenerated polygon contains an odd number of triangles,")
-        +std::string(" probably contains bridging non-degenerated ones, too!"));
+    ASSERT(T->size() % 2 == 0, std::string("Tesselation::CorrectAllDegeneratedPolygons() - ") + std::string(" degenerated polygon contains an odd number of triangles,") + std::string(" probably contains bridging non-degenerated ones, too!"));
     TriangleSet::iterator TriangleWalker = T->begin(); // is the inner iterator
     /// 4a. Get NormalVector for one side (this is "front")
Index: src/Tesselation/tesselationhelpers.cpp
===================================================================
--- src/Tesselation/tesselationhelpers.cpp	(revision dfe0549d4ce8433fde1acf2f7886d20fc1f0174a)
+++ src/Tesselation/tesselationhelpers.cpp	(revision b8d21539ab1899769efb705f4de59ef647f234b1)
@@ -235,13 +235,13 @@
   if (helper.ScalarProduct(SearchDirection) < -HULLEPSILON)  // acos is not unique on [0, 2.*M_PI), hence extra check to decide between two half intervals
     alpha = 2.*M_PI - alpha;
-  LOG(3, "DEBUG: RelativeNewSphereCenter is " << helper << ", RelativeOldSphereCenter is " << RelativeOldSphereCenter << " and resulting angle is " << alpha << ".");
+  LOG(5, "DEBUG: RelativeNewSphereCenter is " << helper << ", RelativeOldSphereCenter is " << RelativeOldSphereCenter << " and resulting angle is " << alpha << ".");
   radius = helper.distance(RelativeOldSphereCenter);
   helper.ProjectOntoPlane(NormalVector);
   // check whether new center is somewhat away or at least right over the current baseline to prevent intersecting triangles
   if ((radius > HULLEPSILON) || (helper.Norm() < HULLEPSILON)) {
-    LOG(4, "DEBUG: Distance between old and new center is " << radius << " and between new center and baseline center is " << helper.Norm() << ".");
+    LOG(6, "DEBUG: Distance between old and new center is " << radius << " and between new center and baseline center is " << helper.Norm() << ".");
     return alpha;
   } else {
-    LOG(3, "DEBUG: NewSphereCenter " << RelativeNewSphereCenter << " is too close to RelativeOldSphereCenter" << RelativeOldSphereCenter << ".");
+    LOG(5, "DEBUG: NewSphereCenter " << RelativeNewSphereCenter << " is too close to RelativeOldSphereCenter" << RelativeOldSphereCenter << ".");
     return 2.*M_PI;
   }
@@ -278,5 +278,5 @@
   }
 
-  LOG(1, "INFO: " << point << " has angle " << phi << " with respect to reference " << reference << ".");
+  LOG(4, "INFO: " << point << " has angle " << phi << " with respect to reference " << reference << ".");
 
   return phi;
@@ -545,5 +545,5 @@
   Normal.VectorProduct(OtherBaseline);
   Normal.Normalize();
-  LOG(1, "First direction is " << Baseline << ", second direction is " << OtherBaseline << ", normal of intersection plane is " << Normal << ".");
+  LOG(3, "First direction is " << Baseline << ", second direction is " << OtherBaseline << ", normal of intersection plane is " << Normal << ".");
 
   // project one offset point of OtherBase onto this plane (and add plane offset vector)
@@ -559,5 +559,5 @@
   *Intersection = line1.getIntersection(line2);
   Normal = (*Intersection) - (Base->endpoints[0]->node->getPosition());
-  LOG(1, "Found closest point on " << *Base << " at " << *Intersection << ", factor in line is " << fabs(Normal.ScalarProduct(Baseline)/Baseline.NormSquared()) << ".");
+  LOG(3, "Found closest point on " << *Base << " at " << *Intersection << ", factor in line is " << fabs(Normal.ScalarProduct(Baseline)/Baseline.NormSquared()) << ".");
 
   return Intersection;
@@ -751,7 +751,7 @@
     *tecplot << endl;
     // print connectivity
-    LOG(1, "The following triangles were created:");
+    LOG(4, "DEBUG: The following triangles were created:");
     for (TriangleMap::const_iterator runner = TesselStruct->TrianglesOnBoundary.begin(); runner != TesselStruct->TrianglesOnBoundary.end(); runner++) {
-      LOG(1, " " << runner->second->endpoints[0]->node->getName() << "<->" << runner->second->endpoints[1]->node->getName() << "<->" << runner->second->endpoints[2]->node->getName());
+      LOG(4, " " << runner->second->endpoints[0]->node->getName() << "<->" << runner->second->endpoints[1]->node->getName() << "<->" << runner->second->endpoints[2]->node->getName());
       *tecplot << LookupList[runner->second->endpoints[0]->node->getNr()] << " " << LookupList[runner->second->endpoints[1]->node->getNr()] << " " << LookupList[runner->second->endpoints[2]->node->getNr()] << endl;
     }
@@ -778,5 +778,5 @@
   for (PointMap::const_iterator PointRunner = TesselStruct->PointsOnBoundary.begin(); PointRunner != TesselStruct->PointsOnBoundary.end(); PointRunner++) {
     point = PointRunner->second;
-    LOG(1, "INFO: Current point is " << *point << ".");
+    LOG(2, "INFO: Current point is " << *point << ".");
 
     // calculate mean concavity over all connected line
Index: src/Tesselation/triangleintersectionlist.cpp
===================================================================
--- src/Tesselation/triangleintersectionlist.cpp	(revision dfe0549d4ce8433fde1acf2f7886d20fc1f0174a)
+++ src/Tesselation/triangleintersectionlist.cpp	(revision b8d21539ab1899769efb705f4de59ef647f234b1)
@@ -132,19 +132,19 @@
     // if we have found one, check Scalarproduct between the vector
     Vector TestVector = (Point) - (*(*runner).second);
-    LOG(1, "INFO: Distance vector between point " << Point
+    LOG(4, "DEBUG: Distance vector between point " << Point
         << " and triangle intersection at " << (*(*runner).second) << " is "
         << TestVector << ".");
     if (fabs(TestVector.NormSquared()) < MYEPSILON)  {//
-      LOG(1, "ACCEPT: Point is on the intersected triangle.");
+      LOG(3, "ACCEPT: Point is on the intersected triangle.");
       return true;
     }
     const double sign = (*runner).first->NormalVector.ScalarProduct(TestVector);
-    LOG(1, "INFO: Checking sign of SKP between Distance vector and triangle's NormalVector "
+    LOG(4, "DEBUG: Checking sign of SKP between Distance vector and triangle's NormalVector "
         << (*runner).first->NormalVector << ": " << sign << ".");
     if (sign < 0) {
-      LOG(1, "ACCEPT: Point lies on inner side of intersected triangle.");
+      LOG(3, "ACCEPT: Point lies on inner side of intersected triangle.");
       return true;
     } else {
-      LOG(1, "REJECT: Point lies on outer side of intersected triangle.");
+      LOG(3, "REJECT: Point lies on outer side of intersected triangle.");
       return false;
     }
@@ -224,8 +224,8 @@
       for (DistanceTriangleMap::const_iterator iter = DistanceRange.first;
           iter != DistanceRange.second; ++iter) {
-        LOG(3, "DEBUG: " << *(iter->second) << " is in the list with " << iter->first << ".");
+        LOG(4, "DEBUG: " << *(iter->second) << " is in the list with " << iter->first << ".");
         ++count;
       }
-      LOG(1, "INFO: There are " << count << " possible triangles at the smallest distance.");
+      LOG(3, "INFO: There are " << count << " possible triangles at the smallest distance.");
     }
     // if there is more than one, check all of their normal vectors
@@ -233,5 +233,5 @@
     // would be truely inside, all of the closest triangles would have to show
     // their inner side
-    LOG(1, "INFO: Looking for first SKP greater than zero ...");
+    LOG(4, "DEBUG: Looking for first SKP greater than zero ...");
     for (DistanceTriangleMap::const_iterator iter = DistanceRange.first;
         iter != DistanceRange.second; ++iter) {
@@ -241,5 +241,5 @@
       // construct SKP
       const double sign = (*iter).second->NormalVector.ScalarProduct(TestVector);
-      LOG(1, "INFO: Checking SKP of closest triangle " << *(iter->second) << " = " << sign << ".");
+      LOG(4, "DEBUG: Checking SKP of closest triangle " << *(iter->second) << " = " << sign << ".");
       // if positive return
       if (sign > 0)
