Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision 6866aa7c49cdc09ce8a84ee021aa65f313e82887)
+++ src/Actions/MapOfActions.cpp	(revision f6bd32663ea9fa338315b53ec627587c5be08a37)
@@ -108,4 +108,5 @@
   DescriptionMap["bin-start"] = "start of the first bin";
   DescriptionMap["bin-width"] = "width of the bins";
+  DescriptionMap["convex-file"] = "filename of the non-convex envelope";
   DescriptionMap["distance"] = "distance in space";
   DescriptionMap["distances"] = "list of three of distances in space, one for each axis direction";
@@ -121,4 +122,5 @@
   DescriptionMap["molecule-by-id"] = "index of a molecule";
   DescriptionMap["molecule-by-name"] = "name of a molecule";
+  DescriptionMap["nonconvex-file"] = "filename of the non-convex envelope";
   DescriptionMap["order"] = "order of a discretization, dissection, ...";
   DescriptionMap["output-file"] = "name of the output file";
@@ -209,4 +211,5 @@
   TypeMap["bin-start"] = Double;
   TypeMap["bin-width"] = Double;
+  TypeMap["convex-file"] = String;
   TypeMap["distance"] = Double;
   TypeMap["distances"] = Vector;
@@ -221,4 +224,5 @@
   TypeMap["molecule-by-id"] = Molecule;
   TypeMap["molecule-by-name"] = Molecule;
+  TypeMap["nonconvex-file"] = String;
   TypeMap["order"] = Integer;
   TypeMap["output-file"] = String;
@@ -246,5 +250,5 @@
 //  generic.insert("change-molname");
 	generic.insert("change-element");
-//  generic.insert("convex-envelope");
+  generic.insert("convex-envelope");
 	generic.insert("default-molname");
 	generic.insert("depth-first-search");
@@ -275,13 +279,8 @@
   generic.insert("verlet-integrate");
 	generic.insert("version");
-//	// list of generic values
-//  generic.insert("distance");
-//  generic.insert("distances");
-//  generic.insert("element");
-    generic.insert("input");
-//  generic.insert("length");
 
     // positional arguments
-    inputfile.insert("input");
+  generic.insert("input");
+  inputfile.insert("input");
 
     // hidden arguments
@@ -291,4 +290,5 @@
   generic.insert("bin-start");
   generic.insert("bin-width");
+  generic.insert("convex-file");
   generic.insert("distance");
   generic.insert("DoRotate");
@@ -302,4 +302,5 @@
   generic.insert("molecule-by-id");
   generic.insert("molecule-by-name");
+  generic.insert("nonconvex-file");
   generic.insert("order");
   generic.insert("output-file");
Index: src/Actions/TesselationAction/ConvexEnvelopeAction.cpp
===================================================================
--- src/Actions/TesselationAction/ConvexEnvelopeAction.cpp	(revision 6866aa7c49cdc09ce8a84ee021aa65f313e82887)
+++ src/Actions/TesselationAction/ConvexEnvelopeAction.cpp	(revision f6bd32663ea9fa338315b53ec627587c5be08a37)
@@ -19,4 +19,5 @@
 #include "atom.hpp"
 #include "boundary.hpp"
+#include "config.hpp"
 #include "linkedcell.hpp"
 #include "log.hpp"
@@ -54,8 +55,9 @@
   molecule * mol = NULL;
   bool Success = false;
+  config *configuration = World::getInstance().getConfig();
 
   dialog->queryMolecule(NAME, &mol, MapOfActions::getInstance().getDescription(NAME));
-  dialog->queryString("output", &filenameConvex, MapOfActions::getInstance().getDescription("output"));
-  dialog->queryString("output", &filenameNonConvex, MapOfActions::getInstance().getDescription("output"));
+  dialog->queryString("convex-file", &filenameConvex, MapOfActions::getInstance().getDescription("convex-file"));
+  dialog->queryString("nonconvex-file", &filenameNonConvex, MapOfActions::getInstance().getDescription("nonconvex-file"));
 
   if(dialog->display()) {
@@ -70,5 +72,8 @@
     FindNonConvexBorder(mol, TesselStruct, LCList, 50., filenameNonConvex.c_str());
     //RemoveAllBoundaryPoints(TesselStruct, mol, argv[argptr]);
-    ConvexizeNonconvexEnvelope(TesselStruct, mol, filenameConvex.c_str());
+    const double volumedifference = ConvexizeNonconvexEnvelope(TesselStruct, mol, filenameConvex.c_str());
+    const double clustervolume = VolumeOfConvexEnvelope(TesselStruct, configuration);
+    DoLog(0) && (Log() << Verbose(0) << "The tesselated volume area is " << clustervolume << " " << (configuration->GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3." << endl);
+    DoLog(0) && (Log() << Verbose(0) << "The non-convex tesselated volume area is " << clustervolume-volumedifference << " " << (configuration->GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3." << endl);
     delete(TesselStruct);
     delete(LCList);
Index: src/builder.cpp
===================================================================
--- src/builder.cpp	(revision 6866aa7c49cdc09ce8a84ee021aa65f313e82887)
+++ src/builder.cpp	(revision f6bd32663ea9fa338315b53ec627587c5be08a37)
@@ -2127,25 +2127,16 @@
             case 'o':
               if (ExitFlag == 0) ExitFlag = 1;
-              if ((argptr+1 >= argc) || (argv[argptr][0] == '-')){
+              if ((argptr+4 >= argc) || (argv[argptr][0] == '-')){
                 ExitFlag = 255;
-                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for convex envelope: -o <convex output file> <non-convex output file>" << endl);
+                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for convex envelope: -o <molecule_id> --output-file <output file> --output-file <binned output file>" << endl);
                 performCriticalExit();
               } else {
-                class Tesselation *TesselStruct = NULL;
-                const LinkedCell *LCList = NULL;
-                DoLog(0) && (Log() << Verbose(0) << "Evaluating volume of the convex envelope.");
-                DoLog(1) && (Log() << Verbose(1) << "Storing tecplot convex data in " << argv[argptr] << "." << endl);
-                DoLog(1) && (Log() << Verbose(1) << "Storing tecplot non-convex data in " << argv[argptr+1] << "." << endl);
-                LCList = new LinkedCell(mol, 10.);
-                //FindConvexBorder(mol, LCList, argv[argptr]);
-                FindNonConvexBorder(mol, TesselStruct, LCList, 5., argv[argptr+1]);
-//                RemoveAllBoundaryPoints(TesselStruct, mol, argv[argptr]);
-                double volumedifference = ConvexizeNonconvexEnvelope(TesselStruct, mol, argv[argptr]);
-                double clustervolume = VolumeOfConvexEnvelope(TesselStruct, &configuration);
-                DoLog(0) && (Log() << Verbose(0) << "The tesselated volume area is " << clustervolume << " " << (configuration.GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3." << endl);
-                DoLog(0) && (Log() << Verbose(0) << "The non-convex tesselated volume area is " << clustervolume-volumedifference << " " << (configuration.GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3." << endl);
-                delete(TesselStruct);
-                delete(LCList);
-                argptr+=2;
+                ArgcList.insert(argptr-1);
+                ArgcList.insert(argptr);
+                ArgcList.insert(argptr+1);
+                ArgcList.insert(argptr+2);
+                ArgcList.insert(argptr+3);
+                ArgcList.insert(argptr+4);
+                argptr+=5;
               }
               break;
