Index: src/boundary.cpp
===================================================================
--- src/boundary.cpp	(revision b65901918c60ce43a59e69765a1da56c67436693)
+++ src/boundary.cpp	(revision 8cede77e6f14d315bdfa9e2e47998e048f3ef55d)
@@ -1481,5 +1481,5 @@
   } else {
     delete TPS[n];
-    cout << Verbose(2) << "Atom " << *((InsertUnique.first)->second->node) << " is already present in PointsOnBoundary." << endl;
+    cout << Verbose(3) << "Atom " << *((InsertUnique.first)->second->node) << " is already present in PointsOnBoundary." << endl;
     TPS[n] = (InsertUnique.first)->second;
   }
@@ -1506,5 +1506,5 @@
       if (FindLine->second->TrianglesCount < 2) {
         insertNewLine = false;
-        cout << Verbose(2) << "Using existing line " << *FindLine->second << endl;
+        cout << Verbose(3) << "Using existing line " << *FindLine->second << endl;
 
         BPS[0] = FindLine->second->endpoints[0];
@@ -1533,5 +1533,5 @@
 void Tesselation::AlwaysAddTriangleLine(class BoundaryPointSet *a, class BoundaryPointSet *b, int n)
 {
-  cout << Verbose(2) << "Adding line between " << *(a->node) << " and " << *(b->node) << "." << endl;
+  cout << Verbose(3) << "Adding line between " << *(a->node) << " and " << *(b->node) << "." << endl;
   BPS[0] = a;
   BPS[1] = b;
@@ -1731,7 +1731,7 @@
   beta = M_PI - SideC.Angle(&SideA);
   gamma = M_PI - SideA.Angle(&SideB);
-  cout << Verbose(3) << "INFO: alpha = " << alpha/M_PI*180. << ", beta = " << beta/M_PI*180. << ", gamma = " << gamma/M_PI*180. << "." << endl;
+  //cout << Verbose(3) << "INFO: alpha = " << alpha/M_PI*180. << ", beta = " << beta/M_PI*180. << ", gamma = " << gamma/M_PI*180. << "." << endl;
   if (fabs(M_PI - alpha - beta - gamma) > HULLEPSILON)
-    cerr << "Sum of angles " << (alpha+beta+gamma)/M_PI*180. << " > 180 degrees by " << fabs(M_PI - alpha - beta - gamma)/M_PI*180. << "!" << endl;
+    cerr << "GetCenterofCircumcircle: Sum of angles " << (alpha+beta+gamma)/M_PI*180. << " > 180 degrees by " << fabs(M_PI - alpha - beta - gamma)/M_PI*180. << "!" << endl;
 
   Center->Zero();
@@ -1780,13 +1780,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;
-  cout << Verbose(2) << "INFO: RelativeNewSphereCenter is " << helper << ", RelativeOldSphereCenter is " << OldSphereCenter << " and resulting angle is " << alpha << "." << endl;
+  //cout << Verbose(2) << "INFO: RelativeNewSphereCenter is " << helper << ", RelativeOldSphereCenter is " << OldSphereCenter << " and resulting angle is " << alpha << "." << endl;
   radius = helper.Distance(&OldSphereCenter);
   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)) {
-    cout << Verbose(2) << "INFO: Distance between old and new center is " << radius << " and between new center and baseline center is " << helper.Norm() << "." << endl;
+    //cout << Verbose(2) << "INFO: Distance between old and new center is " << radius << " and between new center and baseline center is " << helper.Norm() << "." << endl;
     return alpha;
   } else {
-    cout << Verbose(1) << "INFO: NewSphereCenter " << helper << " is too close to OldSphereCenter" << OldSphereCenter << "." << endl;
+    //cout << Verbose(1) << "INFO: NewSphereCenter " << helper << " is too close to OldSphereCenter" << OldSphereCenter << "." << endl;
     return 2.*M_PI;
   }
@@ -1810,5 +1810,5 @@
   class BoundaryPointSet *Points[3];
 
-  *out << Verbose(2) << "Begin of CheckPresenceOfTriangle" << endl;
+  //*out << Verbose(2) << "Begin of CheckPresenceOfTriangle" << endl;
   // builds a triangle point set (Points) of the end points
   for (int i = 0; i < 3; i++) {
@@ -1917,5 +1917,5 @@
   cout << Verbose(1) << "Begin of Find_third_point_for_Tesselation" << endl;
 
-  cout << Verbose(2) << "INFO: NormalVector of BaseTriangle is " << NormalVector << "." << endl;
+  //cout << Verbose(2) << "INFO: NormalVector of BaseTriangle is " << NormalVector << "." << endl;
 
   // construct center of circle
@@ -1933,5 +1933,5 @@
     CircleRadius = RADIUS*RADIUS - radius/4.;
     CirclePlaneNormal.Normalize();
-    cout << Verbose(2) << "INFO: CircleCenter is at " << CircleCenter << ", CirclePlaneNormal is " << CirclePlaneNormal << " with circle radius " << sqrt(CircleRadius) << "." << endl;
+    //cout << Verbose(2) << "INFO: CircleCenter is at " << CircleCenter << ", CirclePlaneNormal is " << CirclePlaneNormal << " with circle radius " << sqrt(CircleRadius) << "." << endl;
 
     // test whether old center is on the band's plane
@@ -1944,5 +1944,5 @@
 
       // check SearchDirection
-      cout << Verbose(2) << "INFO: SearchDirection is " << SearchDirection << "." << endl;
+      //cout << Verbose(2) << "INFO: SearchDirection is " << SearchDirection << "." << endl;
       if (fabs(OldSphereCenter.ScalarProduct(&SearchDirection)) > HULLEPSILON) {  // rotated the wrong way!
         cerr << "ERROR: SearchDirection and RelativeOldSphereCenter are not orthogonal!" << endl;
@@ -1951,7 +1951,7 @@
       // get cell for the starting atom
       if (LC->SetIndexToVector(&CircleCenter)) {
-          for(int i=0;i<NDIM;i++) // store indices of this cell
-          N[i] = LC->n[i];
-        cout << Verbose(2) << "INFO: Center cell is " << N[0] << ", " << N[1] << ", " << N[2] << " with No. " << LC->index << "." << endl;
+        for(int i=0;i<NDIM;i++) // store indices of this cell
+        N[i] = LC->n[i];
+        //cout << Verbose(2) << "INFO: Center cell is " << N[0] << ", " << N[1] << ", " << N[2] << " with No. " << LC->index << "." << endl;
       } else {
         cerr << "ERROR: Vector " << CircleCenter << " is outside of LinkedCell's bounding box." << endl;
@@ -1959,11 +1959,11 @@
       }
       // then go through the current and all neighbouring cells and check the contained atoms for possible candidates
-      cout << Verbose(2) << "LC Intervals:";
+      //cout << Verbose(2) << "LC Intervals:";
       for (int i=0;i<NDIM;i++) {
         Nlower[i] = ((N[i]-1) >= 0) ? N[i]-1 : 0;
         Nupper[i] = ((N[i]+1) < LC->N[i]) ? N[i]+1 : LC->N[i]-1;
-        cout << " [" << Nlower[i] << "," << Nupper[i] << "] ";
+        //cout << " [" << Nlower[i] << "," << Nupper[i] << "] ";
       }
-      cout << endl;
+      //cout << endl;
       for (LC->n[0] = Nlower[0]; LC->n[0] <= Nupper[0]; LC->n[0]++)
         for (LC->n[1] = Nlower[1]; LC->n[1] <= Nupper[1]; LC->n[1]++)
@@ -1976,5 +1976,5 @@
 
                 // check for three unique points
-                cout << Verbose(1) << "INFO: Current Candidate is " << *Candidate << " at " << Candidate->x << "." << endl;
+                //cout << Verbose(2) << "INFO: Current Candidate is " << *Candidate << " at " << Candidate->x << "." << endl;
                 if ((Candidate != BaseLine->endpoints[0]->node) && (Candidate != BaseLine->endpoints[1]->node) ){
 
@@ -1987,12 +1987,12 @@
                   ) {
                     helper.CopyVector(&NewNormalVector);
-                    cout << Verbose(2) << "INFO: NewNormalVector is " << NewNormalVector << "." << endl;
+                    //cout << Verbose(2) << "INFO: NewNormalVector is " << NewNormalVector << "." << endl;
                     radius = BaseLine->endpoints[0]->node->x.DistanceSquared(&NewSphereCenter);
                     if (radius < RADIUS*RADIUS) {
                       helper.Scale(sqrt(RADIUS*RADIUS - radius));
-                      cout << Verbose(2) << "INFO: Distance of NewCircleCenter to NewSphereCenter is " << helper.Norm() << " with sphere radius " << RADIUS << "." << endl;
+                      //cout << Verbose(2) << "INFO: Distance of NewCircleCenter to NewSphereCenter is " << helper.Norm() << " with sphere radius " << RADIUS << "." << endl;
                       NewSphereCenter.AddVector(&helper);
                       NewSphereCenter.SubtractVector(&CircleCenter);
-                      cout << Verbose(2) << "INFO: NewSphereCenter is at " << NewSphereCenter << "." << endl;
+                      //cout << Verbose(2) << "INFO: NewSphereCenter is at " << NewSphereCenter << "." << endl;
 
                       // OtherNewSphereCenter is created by the same vector just in the other direction
@@ -2000,5 +2000,5 @@
                       OtherNewSphereCenter.AddVector(&helper);
                       OtherNewSphereCenter.SubtractVector(&CircleCenter);
-                      cout << Verbose(2) << "INFO: OtherNewSphereCenter is at " << OtherNewSphereCenter << "." << endl;
+                      //cout << Verbose(2) << "INFO: OtherNewSphereCenter is at " << OtherNewSphereCenter << "." << endl;
 
                       alpha = GetPathLengthonCircumCircle(CircleCenter, CirclePlaneNormal, CircleRadius, NewSphereCenter, OldSphereCenter, NormalVector, SearchDirection);
@@ -2019,5 +2019,5 @@
                         if ((*ShortestAngle - HULLEPSILON) < alpha) {
                           candidates->push_back(optCandidate);
-                          cout << Verbose(1) << "ACCEPT: We have found an equally good candidate: " << *(optCandidate->point) << " with "
+                          cout << Verbose(2) << "ACCEPT: We have found an equally good candidate: " << *(optCandidate->point) << " with "
                             << alpha << " and circumsphere's center at " << optCandidate->OptCenter << "." << endl;
                         } else {
@@ -2030,27 +2030,29 @@
                           candidates->clear();
                           candidates->push_back(optCandidate);
-                          cout << Verbose(1) << "ACCEPT: We have found a better candidate: " << *(optCandidate->point) << " with "
+                          cout << Verbose(2) << "ACCEPT: We have found a better candidate: " << *(optCandidate->point) << " with "
                             << alpha << " and circumsphere's center at " << optCandidate->OptCenter << "." << endl;
                         }
                         *ShortestAngle = alpha;
-                        cout << Verbose(2) << "INFO: There are " << candidates->size() << " candidates in the list now." << endl;
+                        //cout << Verbose(2) << "INFO: There are " << candidates->size() << " candidates in the list now." << endl;
                       } else {
-                        if ((optCandidate != NULL) && (optCandidate->point != NULL))
-                          cout << Verbose(1) << "REJECT: Old candidate: " << *(optCandidate->point) << " is better than " << alpha << " with " << *ShortestAngle << "." << endl;
-                        else
-                          cout << Verbose(2) << "REJECT: Candidate " << *Candidate << " with " << alpha << " was rejected." << endl;
+                        if ((optCandidate != NULL) && (optCandidate->point != NULL)) {
+                          //cout << Verbose(2) << "REJECT: Old candidate: " << *(optCandidate->point) << " is better than " << alpha << " with " << *ShortestAngle << "." << endl;
+                        } else {
+                          //cout << Verbose(2) << "REJECT: Candidate " << *Candidate << " with " << alpha << " was rejected." << endl;
+                        }
                       }
 
                     } else {
-                      cout << Verbose(1) << "REJECT: NewSphereCenter " << NewSphereCenter << " is too far away: " << radius << "." << endl;
+                      //cout << Verbose(2) << "REJECT: NewSphereCenter " << NewSphereCenter << " is too far away: " << radius << "." << endl;
                     }
                   } else {
-                    cout << Verbose(1) << "REJECT: Three points from " << *BaseLine << " and Candidate " << *Candidate << " are linear-dependent." << endl;
+                    //cout << Verbose(2) << "REJECT: Three points from " << *BaseLine << " and Candidate " << *Candidate << " are linear-dependent." << endl;
                   }
                 } else {
-                  if (ThirdNode != NULL)
-                    cout << Verbose(1) << "REJECT: Base triangle " << *BaseLine << " and " << *ThirdNode << " contains Candidate " << *Candidate << "." << endl;
-                  else
-                    cout << Verbose(1) << "REJECT: Base triangle " << *BaseLine << " contains Candidate " << *Candidate << "." << endl;
+                  if (ThirdNode != NULL) {
+                    //cout << Verbose(2) << "REJECT: Base triangle " << *BaseLine << " and " << *ThirdNode << " contains Candidate " << *Candidate << "." << endl;
+                  } else {
+                    //cout << Verbose(2) << "REJECT: Base triangle " << *BaseLine << " contains Candidate " << *Candidate << "." << endl;
+                  }
                 }
               }
@@ -2058,14 +2060,14 @@
           }
     } else {
-      cerr << Verbose(1) << "ERROR: The projected center of the old sphere has radius " << radius << " instead of " << CircleRadius << "." << endl;
+      cerr << Verbose(2) << "ERROR: The projected center of the old sphere has radius " << radius << " instead of " << CircleRadius << "." << endl;
     }
   } else {
     if (ThirdNode != NULL)
-      cout << Verbose(1) << "Circumcircle for base line " << *BaseLine << " and third node " << *ThirdNode << " is too big!" << endl;
+      cout << Verbose(2) << "Circumcircle for base line " << *BaseLine << " and third node " << *ThirdNode << " is too big!" << endl;
     else
-      cout << Verbose(1) << "Circumcircle for base line " << *BaseLine << " is too big!" << endl;
-  }
-
-  cout << Verbose(1) << "INFO: Sorting candidate list ..." << endl;
+      cout << Verbose(2) << "Circumcircle for base line " << *BaseLine << " is too big!" << endl;
+  }
+
+  //cout << Verbose(2) << "INFO: Sorting candidate list ..." << endl;
   if (candidates->size() > 1) {
 	  candidates->unique();
@@ -2263,9 +2265,8 @@
       for (LC->n[2] = Nlower[2]; LC->n[2] <= Nupper[2]; LC->n[2]++) {
         List = LC->GetCurrentCell();
-        cout << Verbose(2) << "Current cell is " << LC->n[0] << ", " << LC->n[1] << ", " << LC->n[2] << " with No. " << LC->index << "." << endl;
+        //cout << Verbose(2) << "Current cell is " << LC->n[0] << ", " << LC->n[1] << ", " << LC->n[2] << " with No. " << LC->index << "." << endl;
         if (List != NULL) {
           for (LinkedAtoms::iterator Runner = List->begin(); Runner != List->end(); Runner++) {
             Candidate = (*Runner);
-          cout << Verbose(2) << "Current candidate is " << *Candidate << ": ";
             // check if we only have one unique point yet ...
             if (a != Candidate) {
@@ -2296,16 +2297,16 @@
                 if (angle < Storage[0]) {
                   //cout << Verbose(1) << "Old values of Storage: %lf %lf \n", Storage[0], Storage[1]);
-                  cout << "Is a better candidate with distance " << norm << " and angle " << angle << " to oben " << Oben << ".\n";
+                  cout << Verbose(2) << "Current candidate is " << *Candidate << ": Is a better candidate with distance " << norm << " and angle " << angle << " to oben " << Oben << ".\n";
                   Opt_Candidate = Candidate;
                   Storage[0] = angle;
                   //cout << Verbose(1) << "Changing something in Storage: %lf %lf. \n", Storage[0], Storage[2]);
                 } else {
-                  cout << "Looses with angle " << angle << " to a better candidate " << *Opt_Candidate << endl;
+                  //cout << Verbose(2) << "Current candidate is " << *Candidate << ": Looses with angle " << angle << " to a better candidate " << *Opt_Candidate << endl;
                 }
               } else {
-                cout << "Refused due to Radius " << norm << endl;
+                //cout << Verbose(2) << "Current candidate is " << *Candidate << ": Refused due to Radius " << norm << endl;
               }
             } else {
-              cout << " Candidate is equal to first endpoint " << *a << "." << endl;
+              //cout << Verbose(2) << "Current candidate is " << *Candidate << ": Candidate is equal to first endpoint." << *a << "." << endl;
             }
           }
@@ -2354,6 +2355,6 @@
         if (List != NULL) {
           for (LinkedAtoms::iterator Runner = List->begin();Runner != List->end();Runner++) {
-            cout << Verbose(2) << "Current atom is " << *(*Runner) << "." << endl;
             if ((*Runner)->x.x[i] > max_coordinate[i]) {
+              cout << Verbose(2) << "New maximal for axis " << i << " atom is " << *(*Runner) << " at " << (*Runner)->x << "." << endl;
               max_coordinate[i] = (*Runner)->x.x[i];
               MaxAtom[i] = (*Runner);
@@ -2399,5 +2400,4 @@
   // Now, oben and helper are two orthonormalized vectors in the plane defined by Chord (not normalized)
 
-  cout << Verbose(2) << "Looking for third point candidates \n";
   // look in one direction of baseline for initial candidate
   CandidateList *Opt_Candidates = new CandidateList();
@@ -2409,10 +2409,9 @@
   AddTriangleLine(TPS[0], TPS[1], 0);
 
-  cout << Verbose(1) << "Looking for third point candidates ...\n";
-  cout << Verbose(2) << "INFO: OldSphereCenter is at " << helper << ".\n";
+  //cout << Verbose(2) << "INFO: OldSphereCenter is at " << helper << ".\n";
   Find_third_point_for_Tesselation(
     Oben, SearchDirection, helper, BLS[0], NULL, *&Opt_Candidates, &ShortestAngle, RADIUS, LC
   );
-  cout << Verbose(1) << "Third Points are ";
+  cout << Verbose(1) << "List of third Points is ";
   for (CandidateList::iterator it = Opt_Candidates->begin(); it != Opt_Candidates->end(); ++it) {
       cout << " " << *(*it)->point;
@@ -2509,5 +2508,5 @@
     const double& RADIUS, int N, const char *tempbasename, LinkedCell *LC)
 {
-  cout << Verbose(1) << "Begin of Find_next_suitable_triangle\n";
+  cout << Verbose(0) << "Begin of Find_next_suitable_triangle\n";
   ofstream *tempstream = NULL;
   char NumberName[255];
@@ -2553,5 +2552,5 @@
     OldSphereCenter.AddVector(&helper);
     OldSphereCenter.SubtractVector(&CircleCenter);
-    cout << Verbose(2) << "INFO: OldSphereCenter is at " << OldSphereCenter << "." << endl;
+    //cout << Verbose(2) << "INFO: OldSphereCenter is at " << OldSphereCenter << "." << endl;
 
     // construct SearchDirection
@@ -2570,5 +2569,4 @@
 
     // add third point
-    cout << Verbose(1) << "Looking for third point candidates for triangle ... " << endl;
     Find_third_point_for_Tesselation(
       T.NormalVector, SearchDirection, OldSphereCenter, &Line, ThirdNode, Opt_Candidates,
@@ -2622,5 +2620,5 @@
       cout << "--> New triangle with " << *BTS << " and normal vector " << BTS->NormalVector
         << " for this triangle ... " << endl;
-      cout << Verbose(1) << "We have "<< TrianglesOnBoundaryCount << " for line " << BaseRay << "." << endl;
+      //cout << Verbose(1) << "We have "<< TrianglesOnBoundaryCount << " for line " << *BaseRay << "." << endl;
 	  } else if (existentTrianglesCount == 1) { // If there is a planar region within the structure, we need this triangle a second time.
         AddTrianglePoint((*it)->point, 0);
@@ -2722,5 +2720,5 @@
   }
   delete(Opt_Candidates);
-  cout << Verbose(1) << "End of Find_next_suitable_triangle\n";
+  cout << Verbose(0) << "End of Find_next_suitable_triangle\n";
   return result;
 };
@@ -2808,12 +2806,6 @@
       if (!failflag)
         cerr << "WARNING: Find_next_suitable_triangle failed." << endl;
-
-      // we inserted new lines, hence show list with connected triangles
-      cout << Verbose(1) << "List of Baselines with connected triangles so far:" << endl;
-      for (testline = Tess->LinesOnBoundary.begin(); testline != Tess->LinesOnBoundary.end(); testline++) {
-        cout << Verbose(1) << *testline->second << "\t" << testline->second->TrianglesCount << endl;
-      }
     } else {
-      cout << Verbose(1) << "Line " << *baseline->second << " has " << baseline->second->TrianglesCount << " triangles adjacent" << endl;
+      //cout << Verbose(1) << "Line " << *baseline->second << " has " << baseline->second->TrianglesCount << " triangles adjacent" << endl;
       if (baseline->second->TrianglesCount != 2)
         cout << Verbose(1) << "ERROR: TESSELATION FINISHED WITH INVALID TRIANGLE COUNT!" << endl;
@@ -2848,4 +2840,16 @@
     cerr << "ERROR: Could definitively not find all necessary triangles!" << endl;
   }
+
+  cout << Verbose(2) << "Check: List of Baselines with not two connected triangles:" << endl;
+  int counter = 0;
+  for (testline = Tess->LinesOnBoundary.begin(); testline != Tess->LinesOnBoundary.end(); testline++) {
+    if (testline->second->TrianglesCount != 2) {
+      cout << Verbose(2) << *testline->second << "\t" << testline->second->TrianglesCount << endl;
+      counter++;
+    }
+  }
+  if (counter == 0)
+    cout << Verbose(2) << "None." << endl;
+
   if (freeTess)
     delete(Tess);
Index: src/linkedcell.cpp
===================================================================
--- src/linkedcell.cpp	(revision b65901918c60ce43a59e69765a1da56c67436693)
+++ src/linkedcell.cpp	(revision 8cede77e6f14d315bdfa9e2e47998e048f3ef55d)
@@ -59,5 +59,5 @@
 
 	// 3. allocate the lists
-	cout << Verbose(2) << "Allocating cells ... " << endl;
+	cout << Verbose(2) << "Allocating cells ... ";
 	if (LC != NULL) {
 		cout << Verbose(1) << "ERROR: Linked Cell list is already allocated, I do nothing." << endl;
@@ -68,6 +68,8 @@
 		LC [index].clear();
 	}
+	cout << "done."  << endl;
 
 	// 4. put each atom into its respective cell
+  cout << Verbose(2) << "Filling cells ... ";
 	Walker = mol->start;
 	while (Walker->next != mol->end) {
@@ -78,6 +80,7 @@
 		index = n[0] * N[1] * N[2] + n[1] * N[2] + n[2];
 		LC[index].push_back(Walker);
-		cout << Verbose(2) << *Walker << " goes into cell " << n[0] << ", " << n[1] << ", " << n[2] << " with No. " << index << "." << endl;
+		//cout << Verbose(2) << *Walker << " goes into cell " << n[0] << ", " << n[1] << ", " << n[2] << " with No. " << index << "." << endl;
 	}
+  cout << "done."  << endl;
 	cout << Verbose(1) << "End of LinkedCell" << endl;
 };
