Index: src/UIElements/CommandLineUI/CommandLineDialog.hpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineDialog.hpp	(revision 15d21ee6aeb1c27bc4ac92eabe13c45084e33aaf)
+++ src/UIElements/CommandLineUI/CommandLineDialog.hpp	(revision 78ea3cd9ca6cec043a55baf5de54c1feeb6b7609)
@@ -48,4 +48,7 @@
   #include <boost/preprocessor/facilities/empty.hpp>
 
+  virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "");
+  virtual void queryVectors(Parameter< std::vector<Vector> > &, const std::string ="", const std::string = "");
+
   // iterate over all parameter query types for query declarations
   #if defined GLOBALLISTOFPARAMETERQUERIES_Token && defined GLOBALLISTOFPARAMETERQUERIES_Type
@@ -57,4 +60,7 @@
   #undef SUFFIX
   #endif
+
+  class VectorCommandLineQuery;
+  class VectorsCommandLineQuery;
 
   // iterate over all parameter query types for forward declarations
Index: src/UIElements/CommandLineUI/CommandLineParser.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineParser.cpp	(revision 15d21ee6aeb1c27bc4ac92eabe13c45084e33aaf)
+++ src/UIElements/CommandLineUI/CommandLineParser.cpp	(revision 78ea3cd9ca6cec043a55baf5de54c1feeb6b7609)
@@ -75,4 +75,5 @@
   shape("shape options"),
   fragmentation("Fragmentation options"),
+  geometry("Geometry options"),
   graph("Graph options"),
   molecule("Molecule options"),
@@ -93,4 +94,5 @@
   CmdParserLookup["shape"] = &shape;
   CmdParserLookup["fragmentation"] = &fragmentation;
+  CmdParserLookup["geometry"] = &geometry;
   CmdParserLookup["graph"] = &graph;
   CmdParserLookup["options"] = &options;
Index: src/UIElements/CommandLineUI/CommandLineParser.hpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineParser.hpp	(revision 15d21ee6aeb1c27bc4ac92eabe13c45084e33aaf)
+++ src/UIElements/CommandLineUI/CommandLineParser.hpp	(revision 78ea3cd9ca6cec043a55baf5de54c1feeb6b7609)
@@ -62,4 +62,5 @@
   po::options_description shape;
   po::options_description fragmentation;
+  po::options_description geometry;
   po::options_description graph;
   po::options_description molecule;
Index: src/UIElements/CommandLineUI/CommandLineParser_validate.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineParser_validate.cpp	(revision 15d21ee6aeb1c27bc4ac92eabe13c45084e33aaf)
+++ src/UIElements/CommandLineUI/CommandLineParser_validate.cpp	(revision 78ea3cd9ca6cec043a55baf5de54c1feeb6b7609)
@@ -66,4 +66,26 @@
         std::string("value"),
         std::string("VectorValue")
+    );
+#endif
+  }
+  VV.vectorstring = values.at(0);
+  v = boost::any(VectorValue(VV));
+}
+
+void validate(boost::any& v, const std::vector<std::string>& values, RealSpaceMatrixValue *, int)
+{
+  RealSpaceMatrixValue RSMV;
+  std::vector<std::string> components;
+
+  // split comma-separated values
+  if (values.size() != 1) {
+    std::cerr <<  "Not one vector but " << values.size() << " given " << std::endl;
+#if BOOST_VERSION < 104200
+    throw boost::program_options::validation_error("Unequal to one vector given");
+#else
+    throw boost::program_options::validation_error(
+        boost::program_options::validation_error::invalid_option_value,
+        std::string("value"),
+        std::string("BoxValue")
     );
 #endif
@@ -83,53 +105,4 @@
   components.push_back(std::string(Biter,argument.end()));
 
-  if (components.size() != 3) {
-    std::cerr <<  "Specified vector does not have three components but " << components.size() << std::endl;
-#if BOOST_VERSION < 104200
-    throw boost::program_options::validation_error("Specified vector does not have three components");
-#else
-    throw boost::program_options::validation_error(
-        boost::program_options::validation_error::invalid_option_value,
-        std::string("value"),
-        std::string("VectorValue")
-    );
-#endif
-  }
-  for (size_t i=0;i<NDIM;++i)
-    VV.vector[i] = boost::lexical_cast<double>(components.at(i));
-  v = boost::any(VectorValue(VV));
-}
-
-void validate(boost::any& v, const std::vector<std::string>& values, RealSpaceMatrixValue *, int)
-{
-  RealSpaceMatrixValue RSMV;
-  std::vector<std::string> components;
-
-  // split comma-separated values
-  if (values.size() != 1) {
-    std::cerr <<  "Not one vector but " << values.size() << " given " << std::endl;
-#if BOOST_VERSION < 104200
-    throw boost::program_options::validation_error("Unequal to one vector given");
-#else
-    throw boost::program_options::validation_error(
-        boost::program_options::validation_error::invalid_option_value,
-        std::string("value"),
-        std::string("BoxValue")
-    );
-#endif
-  }
-  std::string argument(values.at(0));
-  std::string::iterator Aiter = argument.begin();
-  std::string::iterator Biter = argument.begin();
-  for (; Aiter != argument.end(); ++Aiter) {
-    if (*Aiter == ',') {
-      components.push_back(std::string(Biter,Aiter));
-      do {
-        Aiter++;
-      } while (*Aiter == ' ' || *Aiter == '\t');
-      Biter = Aiter;
-    }
-  }
-  components.push_back(std::string(Biter,argument.end()));
-
   if (components.size() != 6) {
     std::cerr <<  "Specified vector does not have three components but " << components.size() << std::endl;
Index: src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp
===================================================================
--- src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp	(revision 15d21ee6aeb1c27bc4ac92eabe13c45084e33aaf)
+++ src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp	(revision 78ea3cd9ca6cec043a55baf5de54c1feeb6b7609)
@@ -24,4 +24,18 @@
 };
 
+class CommandLineDialog::VectorCommandLineQuery : public Dialog::TQuery<Vector> {
+public:
+  VectorCommandLineQuery(Parameter<Vector> &_param, const std::string &_title, const std::string &_description = "");
+  virtual ~VectorCommandLineQuery();
+  virtual bool handle();
+};
+
+class CommandLineDialog::VectorsCommandLineQuery : public Dialog::TQuery< std::vector<Vector> > {
+public:
+  VectorsCommandLineQuery(Parameter< std::vector<Vector> > &_param, const std::string &_title, const std::string &_description = "");
+  virtual ~VectorsCommandLineQuery();
+  virtual bool handle();
+};
+
   /** With the following boost::preprocessor code we generate forward declarations
    * of query class for all desired query types in the Qt specialization class of
Index: src/UIElements/CommandLineUI/Query/VectorCommandLineQuery.cpp
===================================================================
--- src/UIElements/CommandLineUI/Query/VectorCommandLineQuery.cpp	(revision 15d21ee6aeb1c27bc4ac92eabe13c45084e33aaf)
+++ src/UIElements/CommandLineUI/Query/VectorCommandLineQuery.cpp	(revision 78ea3cd9ca6cec043a55baf5de54c1feeb6b7609)
@@ -53,14 +53,8 @@
 
 bool CommandLineDialog::VectorCommandLineQuery::handle() {
-  VectorValue _temp;
+  VectorValue temporary;
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
-    try {
-      _temp = CommandLineParser::getInstance().vm[getTitle()].as< VectorValue >();
-    } catch(boost::bad_any_cast &e) {
-      for (size_t i=0;i<NDIM;++i)
-        _temp.vector[i] = 0.;
-      return false;
-    }
-    temp = _temp.toVector();
+    temporary = CommandLineParser::getInstance().vm[getTitle()].as< VectorValue >();
+    temp = temporary.vectorstring;
     return true;
   }
Index: src/UIElements/CommandLineUI/Query/VectorsCommandLineQuery.cpp
===================================================================
--- src/UIElements/CommandLineUI/Query/VectorsCommandLineQuery.cpp	(revision 15d21ee6aeb1c27bc4ac92eabe13c45084e33aaf)
+++ src/UIElements/CommandLineUI/Query/VectorsCommandLineQuery.cpp	(revision 78ea3cd9ca6cec043a55baf5de54c1feeb6b7609)
@@ -46,5 +46,5 @@
 
 CommandLineDialog::VectorsCommandLineQuery::VectorsCommandLineQuery(Parameter<std::vector<Vector> > &_param, const std::string &_title, const std::string &_description) :
-    Dialog::TQuery<std::vector<Vector> >(_param, _title, _description)
+    Dialog::TQuery< std::vector<Vector> >(_param, _title, _description)
 {}
 
@@ -53,16 +53,8 @@
 
 bool CommandLineDialog::VectorsCommandLineQuery::handle() {
-  std::vector<VectorValue> temporary;
+  std::vector<std::string> temporary;
+  std::stringstream output;
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
-    try {
-      temporary = CommandLineParser::getInstance().vm[getTitle()].as< std::vector<VectorValue> >();
-    } catch(boost::bad_any_cast &e) {
-      temporary.clear();
-      return false;
-    }
-    for(std::vector<VectorValue>::iterator iter = temporary.begin(); iter != temporary.end(); ++iter) {
-      Vector temp_element = (*iter).toVector();
-      temp.push_back(temp_element);
-    }
+    temp = CommandLineParser::getInstance().vm[getTitle()].as< std::vector<std::string> >();
     return true;
   }
