Index: molecuilder/src/tesselation.cpp
===================================================================
--- molecuilder/src/tesselation.cpp	(revision 3aa6353a9c30fc0e5f27673118c186c77c2b466c)
+++ molecuilder/src/tesselation.cpp	(revision 013ad571e34901e13c5bdab5cba6948be63f245c)
@@ -42,5 +42,5 @@
 {
 	Info FunctionInfo(__func__);
-  Log() << Verbose(1) << "Adding at " << *(node->node) << endl;
+  Log() << Verbose(1) << "Adding Node " << *Walker << endl;
 };
 
@@ -593,5 +593,5 @@
 {
 	Info FunctionInfo(__func__);
-  ost << "[" << (Name) << "|" << this << "]";
+  ost << "[" << (nr) << "|" << this << "]";
   return ost;
 };
@@ -2075,19 +2075,30 @@
 	Info FunctionInfo(__func__);
   Vector Center;
-  BoundaryLineSet *BaseLine = CandidateLine.BaseLine;
-
-  // go through all candidates (in degenerate n-nodes case we may have to add multiple triangles)
-  for (TesselPointList::iterator Runner = CandidateLine.pointlist.begin(); Runner != CandidateLine.pointlist.end(); Runner++) {
-    Log() << Verbose(2) << "BaseLine is :" << *(BaseLine) << " with current candidate " << *(*Runner) << "." << endl;
+  TesselPoint * const TurningPoint = CandidateLine.BaseLine->endpoints[0]->node;
+
+  // fill the set of neighbours
+  Center.CopyVector(CandidateLine.BaseLine->endpoints[1]->node->node);
+  Center.SubtractVector(TurningPoint->node);
+  set<TesselPoint*> SetOfNeighbours;
+  SetOfNeighbours.insert(CandidateLine.BaseLine->endpoints[1]->node);
+  for (TesselPointList::iterator Runner = CandidateLine.pointlist.begin(); Runner != CandidateLine.pointlist.end(); Runner++)
+    SetOfNeighbours.insert(*Runner);
+  TesselPointList *connectedClosestPoints = GetCircleOfSetOfPoints(&SetOfNeighbours, TurningPoint, &Center);
+
+  // go through all angle-sorted candidates (in degenerate n-nodes case we may have to add multiple triangles)
+  TesselPointList::iterator Runner = connectedClosestPoints->begin();
+  TesselPointList::iterator Sprinter = Runner;
+  Sprinter++;
+  while(Sprinter != connectedClosestPoints->end()) {
     // add the points
-    AddTesselationPoint(BaseLine->endpoints[0]->node, 0);
-    AddTesselationPoint(BaseLine->endpoints[1]->node, 1);
-    AddTesselationPoint((*Runner), 2);
+    AddTesselationPoint(TurningPoint, 0);
+    AddTesselationPoint((*Runner), 1);
+    AddTesselationPoint((*Sprinter), 2);
 
     Center.CopyVector(&CandidateLine.OptCenter);
     // add the lines
-    AddTesselationLine(TPS[2], TPS[0], 0);
-    AddTesselationLine(TPS[2], TPS[1], 1);
-    AddTesselationLine(TPS[0], TPS[1], 2);
+    AddTesselationLine(TPS[0], TPS[1], 0);
+    AddTesselationLine(TPS[0], TPS[2], 1);
+    AddTesselationLine(TPS[1], TPS[2], 2);
 
     // add the triangles
@@ -2098,5 +2109,6 @@
 
     Log() << Verbose(0) << "--> New triangle with " << *BTS << " and normal vector " << BTS->NormalVector << "." << endl;
-    BaseLine = BLS[0];  // go to next baseline, in order to add in star formation from CandidateLine.BaseLine->endpoints[0]->node
+    Runner = Sprinter;
+    Sprinter++;
   }
 };
@@ -2739,5 +2751,7 @@
     }
   } else {
-    list<TesselPoint*> *connectedClosestPoints = GetCircleOfConnectedPoints(trianglePoints[0], x);
+    set<TesselPoint*> *connectedPoints = GetAllConnectedPoints(trianglePoints[0]);
+    TesselPointList *connectedClosestPoints = GetCircleOfSetOfPoints(connectedPoints, trianglePoints[0], x);
+    delete(connectedPoints);
     if (connectedClosestPoints != NULL) {
       trianglePoints[1] = connectedClosestPoints->front();
@@ -2917,13 +2931,13 @@
  *
  * @param *out output stream for debugging
+ * @param *SetOfNeighbours all points for which the angle should be calculated
  * @param *Point of which get all connected points
  * @param *Reference Reference vector for zero angle or NULL for no preference
  * @return list of the all points linked to the provided one
  */
-list<TesselPoint*> * Tesselation::GetCircleOfConnectedPoints(const TesselPoint* const Point, const Vector * const Reference) const
+list<TesselPoint*> * Tesselation::GetCircleOfSetOfPoints(set<TesselPoint*> *SetOfNeighbours, const TesselPoint* const Point, const Vector * const Reference) const
 {
 	Info FunctionInfo(__func__);
   map<double, TesselPoint*> anglesOfPoints;
-  set<TesselPoint*> *connectedPoints = GetAllConnectedPoints(Point);
   list<TesselPoint*> *connectedCircle = new list<TesselPoint*>;
   Vector center;
@@ -2933,5 +2947,5 @@
   Vector helper;
 
-  if (connectedPoints == NULL) {
+  if (SetOfNeighbours == NULL) {
     eLog() << Verbose(2) << "Could not find any connected points!" << endl;
     delete(connectedCircle);
@@ -2940,9 +2954,9 @@
 
   // calculate central point
-  for (set<TesselPoint*>::const_iterator TesselRunner = connectedPoints->begin(); TesselRunner != connectedPoints->end(); TesselRunner++)
+  for (set<TesselPoint*>::const_iterator TesselRunner = SetOfNeighbours->begin(); TesselRunner != SetOfNeighbours->end(); TesselRunner++)
     center.AddVector((*TesselRunner)->node);
   //Log() << Verbose(0) << "Summed vectors " << center << "; number of points " << connectedPoints.size()
   //  << "; scale factor " << 1.0/connectedPoints.size();
-  center.Scale(1.0/connectedPoints->size());
+  center.Scale(1.0/SetOfNeighbours->size());
   Log() << Verbose(1) << "INFO: Calculated center of all circle points is " << center << "." << endl;
 
@@ -2960,6 +2974,6 @@
   }
   if ((Reference == NULL) || (AngleZero.NormSquared() < MYEPSILON )) {
-    Log() << Verbose(1) << "Using alternatively " << *(*connectedPoints->begin())->node << " as angle 0 referencer." << endl;
-    AngleZero.CopyVector((*connectedPoints->begin())->node);
+    Log() << Verbose(1) << "Using alternatively " << *(*SetOfNeighbours->begin())->node << " as angle 0 referencer." << endl;
+    AngleZero.CopyVector((*SetOfNeighbours->begin())->node);
     AngleZero.SubtractVector(Point->node);
     AngleZero.ProjectOntoPlane(&PlaneNormal);
@@ -2977,5 +2991,5 @@
 
   // go through all connected points and calculate angle
-  for (set<TesselPoint*>::iterator listRunner = connectedPoints->begin(); listRunner != connectedPoints->end(); listRunner++) {
+  for (set<TesselPoint*>::iterator listRunner = SetOfNeighbours->begin(); listRunner != SetOfNeighbours->end(); listRunner++) {
     helper.CopyVector((*listRunner)->node);
     helper.SubtractVector(Point->node);
@@ -2989,6 +3003,4 @@
     connectedCircle->push_back(AngleRunner->second);
   }
-
-  delete(connectedPoints);
 
   return connectedCircle;
Index: molecuilder/src/tesselation.hpp
===================================================================
--- molecuilder/src/tesselation.hpp	(revision 3aa6353a9c30fc0e5f27673118c186c77c2b466c)
+++ molecuilder/src/tesselation.hpp	(revision 013ad571e34901e13c5bdab5cba6948be63f245c)
@@ -251,5 +251,5 @@
     list<list<TesselPoint*> *> * GetPathsOfConnectedPoints(const TesselPoint* const Point) const;
     list<list<TesselPoint*> *> * GetClosedPathsOfConnectedPoints(const TesselPoint* const Point) const;
-    list<TesselPoint*> * GetCircleOfConnectedPoints(const TesselPoint* const Point, const Vector * const Reference = NULL) const;
+    list<TesselPoint*> * GetCircleOfSetOfPoints(set<TesselPoint*> *SetOfNeighbours, const TesselPoint* const Point, const Vector * const Reference = NULL) const;
     class BoundaryPointSet *GetCommonEndpoint(const BoundaryLineSet * line1, const BoundaryLineSet * line2) const;
     list<BoundaryTriangleSet*> *FindTriangles(const TesselPoint* const Points[3]) const;
