Index: src/boundary.cpp
===================================================================
--- src/boundary.cpp	(revision 27bd2fa17ae15320dfbd551fafc36ea35660b5b9)
+++ src/boundary.cpp	(revision 4fc93fba5ac57faee4b34d2ffb62215870fa7584)
@@ -946,9 +946,11 @@
  * \param RADIUS radius of the virtual sphere
  * \param *filename filename prefix for output of vertex data
- */
-void FindNonConvexBorder(const molecule* const mol, Tesselation *&TesselStruct, const LinkedCell *&LCList, const double RADIUS, const char *filename = NULL)
+ * \return true - tesselation successful, false - tesselation failed
+ */
+bool FindNonConvexBorder(const molecule* const mol, Tesselation *&TesselStruct, const LinkedCell *&LCList, const double RADIUS, const char *filename = NULL)
 {
 	Info FunctionInfo(__func__);
   bool freeLC = false;
+  bool status = false;
   CandidateForTesselation *baseline;
   LineMap::iterator testline;
@@ -1017,9 +1019,9 @@
     }
   }
-  // check envelope for consistency
-  CheckListOfBaselines(TesselStruct);
-
-  // look whether all points are inside of the convex envelope, otherwise add them via degenerated triangles
-  //->InsertStraddlingPoints(mol, LCList);
+//  // check envelope for consistency
+//  status = CheckListOfBaselines(TesselStruct);
+//
+//  // look whether all points are inside of the convex envelope, otherwise add them via degenerated triangles
+//  //->InsertStraddlingPoints(mol, LCList);
 //  mol->GoToFirst();
 //  class TesselPoint *Runner = NULL;
@@ -1038,7 +1040,7 @@
 //  // Purges surplus triangles.
 //  TesselStruct->RemoveDegeneratedTriangles();
-//
-//  // check envelope for consistency
-//  CheckListOfBaselines(TesselStruct);
+
+  // check envelope for consistency
+  status = CheckListOfBaselines(TesselStruct);
 
   // write final envelope
@@ -1048,4 +1050,6 @@
   if (freeLC)
     delete(LCList);
+
+  return status;
 };
 
Index: src/boundary.hpp
===================================================================
--- src/boundary.hpp	(revision 27bd2fa17ae15320dfbd551fafc36ea35660b5b9)
+++ src/boundary.hpp	(revision 4fc93fba5ac57faee4b34d2ffb62215870fa7584)
@@ -53,5 +53,5 @@
 Vector* FindEmbeddingHole(MoleculeListClass *mols, molecule *srcmol);
 void FindNextSuitablePoint(class BoundaryTriangleSet *BaseTriangle, class BoundaryLineSet *BaseLine, atom*& OptCandidate, Vector *OptCandidateCenter, double *ShortestAngle, const double RADIUS, LinkedCell *LC);
-void FindNonConvexBorder(const molecule* const mol, Tesselation *&TesselStruct, const LinkedCell *&LC, const double RADIUS, const char *tempbasename);
+bool FindNonConvexBorder(const molecule* const mol, Tesselation *&TesselStruct, const LinkedCell *&LC, const double RADIUS, const char *tempbasename);
 Boundaries *GetBoundaryPoints(const molecule *mol, Tesselation *&TesselStruct);
 double * GetDiametersOfCluster(const Boundaries *BoundaryPtr, const molecule *mol, Tesselation *&TesselStruct, const bool IsAngstroem);
Index: src/builder.cpp
===================================================================
--- src/builder.cpp	(revision 27bd2fa17ae15320dfbd551fafc36ea35660b5b9)
+++ src/builder.cpp	(revision 4fc93fba5ac57faee4b34d2ffb62215870fa7584)
@@ -1574,15 +1574,16 @@
                 else {
                   Log() << Verbose(2) << "File found and parsed." << endl;
-                  mol->SetNameFromFilename(argv[argptr]);
-                  molecules->ListOfMolecules.remove(mol);
-                  molecules->DissectMoleculeIntoConnectedSubgraphs(mol,&configuration);
-                  delete(mol);
-                  if (molecules->ListOfMolecules.size() != 0) {
-                    for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++)
-                      if ((*ListRunner)->ActiveFlag) {
-                        mol = *ListRunner;
-                        break;
-                      }
-                  }
+                  // @TODO rather do the dissection afterwards
+//                  mol->SetNameFromFilename(argv[argptr]);
+//                  molecules->ListOfMolecules.remove(mol);
+//                  molecules->DissectMoleculeIntoConnectedSubgraphs(mol,&configuration);
+//                  delete(mol);
+//                  if (molecules->ListOfMolecules.size() != 0) {
+//                    for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++)
+//                      if ((*ListRunner)->ActiveFlag) {
+//                        mol = *ListRunner;
+//                        break;
+//                      }
+//                  }
                   configPresent = present;
                 }
@@ -1803,5 +1804,6 @@
                 start = clock();
                 LCList = new LinkedCell(Boundary, atof(argv[argptr])*2.);
-                FindNonConvexBorder(Boundary, T, LCList, atof(argv[argptr]), argv[argptr+1]);
+                if (!FindNonConvexBorder(Boundary, T, LCList, atof(argv[argptr]), argv[argptr+1]))
+                  ExitFlag = 255;
                 //FindDistributionOfEllipsoids(T, &LCList, N, number, filename.c_str());
                 end = clock();
Index: src/config.cpp
===================================================================
--- src/config.cpp	(revision 27bd2fa17ae15320dfbd551fafc36ea35660b5b9)
+++ src/config.cpp	(revision 4fc93fba5ac57faee4b34d2ffb62215870fa7584)
@@ -1069,7 +1069,9 @@
   mol->SetNameFromFilename(filename);
   mol->ActiveFlag = true;
+  MolList->insert(mol);
 
   // 4. dissect the molecule into connected subgraphs
-  MolList->DissectMoleculeIntoConnectedSubgraphs(mol,this);
+  // don't do this here ...
+  //MolList->DissectMoleculeIntoConnectedSubgraphs(mol,this);
 
   delete(mol);
