Index: src/UIElements/CommandLineUI/CommandLineDialog.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineDialog.cpp	(revision 3731b4909c6d6ae4b595859d66058d1e878886f9)
+++ src/UIElements/CommandLineUI/CommandLineDialog.cpp	(revision 7cd6e7ab696a3676cd5e8add0454d596f7c6cf0f)
@@ -54,4 +54,8 @@
 }
 
+void CommandLineDialog::queryInts(const char* title, string _description){
+  registerQuery(new IntsCommandLineQuery(title, _description));
+}
+
 void CommandLineDialog::queryBoolean(const char* title, string _description){
   registerQuery(new BooleanCommandLineQuery(title, _description));
@@ -62,4 +66,8 @@
 }
 
+void CommandLineDialog::queryDoubles(const char* title, string _description){
+  registerQuery(new DoublesCommandLineQuery(title, _description));
+}
+
 void CommandLineDialog::queryString(const char* title, string _description){
   registerQuery(new StringCommandLineQuery(title, _description));
@@ -74,12 +82,24 @@
 }
 
+void CommandLineDialog::queryAtoms(const char* title, string _description) {
+  registerQuery(new AtomsCommandLineQuery(title, _description));
+}
+
 void CommandLineDialog::queryMolecule(const char* title, string _description) {
   registerQuery(new MoleculeCommandLineQuery(title, _description));
 }
 
+void CommandLineDialog::queryMolecules(const char* title, string _description) {
+  registerQuery(new MoleculesCommandLineQuery(title, _description));
+}
+
 void CommandLineDialog::queryVector(const char* title, bool check, string _description) {
   registerQuery(new VectorCommandLineQuery(title,check, _description));
 }
 
+void CommandLineDialog::queryVectors(const char* title, bool check, string _description) {
+  registerQuery(new VectorsCommandLineQuery(title,check, _description));
+}
+
 void CommandLineDialog::queryBox(const char* title, string _description) {
   registerQuery(new BoxCommandLineQuery(title,_description));
@@ -88,4 +108,8 @@
 void CommandLineDialog::queryElement(const char* title, string _description){
   registerQuery(new ElementCommandLineQuery(title, _description));
+}
+
+void CommandLineDialog::queryElements(const char* title, string _description){
+  registerQuery(new ElementsCommandLineQuery(title, _description));
 }
 
@@ -119,4 +143,20 @@
 }
 
+CommandLineDialog::IntsCommandLineQuery::IntsCommandLineQuery(string title, string _description) :
+    Dialog::IntsQuery(title, _description)
+{}
+
+CommandLineDialog::IntsCommandLineQuery::~IntsCommandLineQuery() {}
+
+bool CommandLineDialog::IntsCommandLineQuery::handle() {
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    tmp = CommandLineParser::getInstance().vm[getTitle()].as< std::vector<int> >();
+    return true;
+  } else {
+    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing integers for " << getTitle() << "." << endl);
+    return false;
+  }
+}
+
 CommandLineDialog::BooleanCommandLineQuery::BooleanCommandLineQuery(string title, string _description) :
     Dialog::BooleanQuery(title, _description)
@@ -162,5 +202,5 @@
     return true;
   } else {
-    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing string for " << getTitle() << "." << endl);
+    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing strings for " << getTitle() << "." << endl);
     return false;
   }
@@ -183,4 +223,20 @@
 }
 
+CommandLineDialog::DoublesCommandLineQuery::DoublesCommandLineQuery(string title, string _description) :
+    Dialog::DoublesQuery(title, _description)
+{}
+
+CommandLineDialog::DoublesCommandLineQuery::~DoublesCommandLineQuery() {}
+
+bool CommandLineDialog::DoublesCommandLineQuery::handle() {
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    tmp = CommandLineParser::getInstance().vm[getTitle()].as< std::vector<double> >();
+    return true;
+  } else {
+    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing doubles for " << getTitle() << "." << endl);
+    return false;
+  }
+}
+
 CommandLineDialog::AtomCommandLineQuery::AtomCommandLineQuery(string title, string _description) :
     Dialog::AtomQuery(title, _description)
@@ -201,4 +257,26 @@
 }
 
+CommandLineDialog::AtomsCommandLineQuery::AtomsCommandLineQuery(string title, string _description) :
+    Dialog::AtomsQuery(title, _description)
+{}
+
+CommandLineDialog::AtomsCommandLineQuery::~AtomsCommandLineQuery() {}
+
+bool CommandLineDialog::AtomsCommandLineQuery::handle() {
+  std::vector<int> IdxOfAtom;
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    IdxOfAtom = CommandLineParser::getInstance().vm[getTitle()].as< std::vector<int> >();
+    for (std::vector<int>::iterator iter = IdxOfAtom.begin(); iter != IdxOfAtom.end(); ++iter) {
+      temp = World::getInstance().getAtom(AtomById(*iter));
+      if (temp)
+        tmp.push_back(temp);
+    }
+    return true;
+  } else {
+    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing atoms for " << getTitle() << "." << endl);
+    return false;
+  }
+}
+
 CommandLineDialog::MoleculeCommandLineQuery::MoleculeCommandLineQuery(string title, string _description) :
     Dialog::MoleculeQuery(title, _description)
@@ -211,12 +289,30 @@
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
     IdxOfMol = CommandLineParser::getInstance().vm[getTitle()].as<int>();
-    cout << "IdxOfMol " << IdxOfMol << endl;
-    if (IdxOfMol >= 0)
-      tmp = World::getInstance().getMolecule(MoleculeById(IdxOfMol));
-    else
-      tmp = NULL;
+    tmp = World::getInstance().getMolecule(MoleculeById(IdxOfMol));
     return true;
   } else {
     DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing molecule for " << getTitle() << "." << endl);
+    return false;
+  }
+}
+
+CommandLineDialog::MoleculesCommandLineQuery::MoleculesCommandLineQuery(string title, string _description) :
+    Dialog::MoleculesQuery(title, _description)
+{}
+
+CommandLineDialog::MoleculesCommandLineQuery::~MoleculesCommandLineQuery() {}
+
+bool CommandLineDialog::MoleculesCommandLineQuery::handle() {
+  std::vector<int> IdxOfMol;
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    IdxOfMol = CommandLineParser::getInstance().vm[getTitle()].as< std::vector<int> >();
+    for (std::vector<int>::iterator iter = IdxOfMol.begin(); iter != IdxOfMol.end(); ++iter) {
+      temp = World::getInstance().getMolecule(MoleculeById(*iter));
+      if (temp)
+        tmp.push_back(temp);
+    }
+    return true;
+  } else {
+    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing molecules for " << getTitle() << "." << endl);
     return false;
   }
@@ -234,7 +330,11 @@
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
     temp = CommandLineParser::getInstance().vm[getTitle()].as< VectorValue >();
-    tmp->at(0) = temp.x;
-    tmp->at(1) = temp.y;
-    tmp->at(2) = temp.z;
+    tmp[0] = temp.x;
+    tmp[1] = temp.y;
+    tmp[2] = temp.z;
+    if ((check) && (World::getInstance().getDomain().isInside(tmp))) {
+      tmp.Zero();
+      DoeLog(1) && (eLog() << Verbose(1) << "Vector " << tmp << " would be outside of box domain." << endl);
+    }
     return true;
   } else {
@@ -244,4 +344,30 @@
 }
 
+CommandLineDialog::VectorsCommandLineQuery::VectorsCommandLineQuery(string title, bool _check, string _description) :
+    Dialog::VectorsQuery(title,_check, _description)
+{}
+
+CommandLineDialog::VectorsCommandLineQuery::~VectorsCommandLineQuery()
+{}
+
+bool CommandLineDialog::VectorsCommandLineQuery::handle() {
+  std::vector<VectorValue> temporary;
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    temporary = CommandLineParser::getInstance().vm[getTitle()].as< std::vector<VectorValue> >();
+    for(std::vector<VectorValue>::iterator iter = temporary.begin(); iter != temporary.end(); ++iter) {
+      temp[0] = (*iter).x;
+      temp[1] = (*iter).y;
+      temp[2] = (*iter).z;
+      if ((!check) || (World::getInstance().getDomain().isInside(temp)))
+        tmp.push_back(temp);
+      else
+        DoeLog(1) && (eLog() << Verbose(1) << "Vector " << temp << " would be outside of box domain." << endl);
+    }
+    return true;
+  } else {
+    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing vectors for " << getTitle() << "." << endl);
+    return false;
+  }
+}
 
 CommandLineDialog::BoxCommandLineQuery::BoxCommandLineQuery(string title, string _description) :
@@ -279,16 +405,36 @@
   // TODO: vector of ints and removing first is not correctly implemented yet. How to remove from a vector?
   periodentafel *periode = World::getInstance().getPeriode();
-  element *elemental = NULL;
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    int Z = CommandLineParser::getInstance().vm[getTitle()].as< int >();
+    tmp = periode->FindElement(Z);
+    ASSERT(tmp != NULL, "Invalid element specified in ElementCommandLineQuery");
+    return true;
+  } else {
+    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing element for " << getTitle() << "." << endl);
+    return false;
+  }
+}
+
+CommandLineDialog::ElementsCommandLineQuery::ElementsCommandLineQuery(string title, string _description) :
+    Dialog::ElementsQuery(title, _description)
+{}
+
+CommandLineDialog::ElementsCommandLineQuery::~ElementsCommandLineQuery()
+{}
+
+bool CommandLineDialog::ElementsCommandLineQuery::handle() {
+  // TODO: vector of ints and removing first is not correctly implemented yet. How to remove from a vector?
+  periodentafel *periode = World::getInstance().getPeriode();
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
     vector<int> AllElements = CommandLineParser::getInstance().vm[getTitle()].as< vector<int> >();
     for (vector<int>::iterator ZRunner = AllElements.begin(); ZRunner != AllElements.end(); ++ZRunner) {
-      elemental = periode->FindElement(*ZRunner);
-      ASSERT(elemental != NULL, "Invalid element specified in ElementCommandLineQuery");
-      tmp.push_back(elemental);
+      temp = periode->FindElement(*ZRunner);
+      ASSERT(temp != NULL, "Invalid element specified in ElementCommandLineQuery");
+      tmp.push_back(temp);
     }
     return true;
   } else {
-    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing element for " << getTitle() << "." << endl);
-    return false;
-  }
-}
+    DoeLog(1) && (eLog() << Verbose(1) << "CommandLineUI parsing error: Missing elements for " << getTitle() << "." << endl);
+    return false;
+  }
+}
Index: src/UIElements/CommandLineUI/CommandLineDialog.hpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineDialog.hpp	(revision 3731b4909c6d6ae4b595859d66058d1e878886f9)
+++ src/UIElements/CommandLineUI/CommandLineDialog.hpp	(revision 7cd6e7ab696a3676cd5e8add0454d596f7c6cf0f)
@@ -29,13 +29,19 @@
   virtual void queryEmpty(const char *, std::string = "");
   virtual void queryInt(const char *, std::string = "");
+  virtual void queryInts(const char *, std::string = "");
   virtual void queryBoolean(const char *, std::string = "");
   virtual void queryString(const char*, std::string = "");
   virtual void queryStrings(const char*, std::string = "");
   virtual void queryDouble(const char*, std::string = "");
+  virtual void queryDoubles(const char*, std::string = "");
   virtual void queryAtom(const char*, std::string = "");
+  virtual void queryAtoms(const char*, std::string = "");
   virtual void queryMolecule(const char*, std::string = "");
+  virtual void queryMolecules(const char*, std::string = "");
   virtual void queryVector(const char*, bool, std::string = "");
+  virtual void queryVectors(const char*, bool, std::string = "");
   virtual void queryBox(const char*, std::string = "");
   virtual void queryElement(const char*, std::string = "");
+  virtual void queryElements(const char*, std::string = "");
 
 protected:
@@ -55,4 +61,11 @@
   };
 
+  class IntsCommandLineQuery : public Dialog::IntsQuery {
+  public:
+    IntsCommandLineQuery(std::string title, std::string _description = "");
+    virtual ~IntsCommandLineQuery();
+    virtual bool handle();
+  };
+
   class BooleanCommandLineQuery : public Dialog::BooleanQuery {
   public:
@@ -66,4 +79,11 @@
     DoubleCommandLineQuery(std::string title, std::string _description = "");
     virtual ~DoubleCommandLineQuery();
+    virtual bool handle();
+  };
+
+  class DoublesCommandLineQuery : public Dialog::DoublesQuery {
+  public:
+    DoublesCommandLineQuery(std::string title, std::string _description = "");
+    virtual ~DoublesCommandLineQuery();
     virtual bool handle();
   };
@@ -90,4 +110,11 @@
   };
 
+  class AtomsCommandLineQuery : public Dialog::AtomsQuery {
+  public:
+    AtomsCommandLineQuery(std::string title, std::string _description = "");
+    virtual ~AtomsCommandLineQuery();
+    virtual bool handle();
+  };
+
   class MoleculeCommandLineQuery : public Dialog::MoleculeQuery {
   public:
@@ -97,8 +124,22 @@
   };
 
+  class MoleculesCommandLineQuery : public Dialog::MoleculesQuery {
+  public:
+    MoleculesCommandLineQuery(std::string title, std::string _description = "");
+    virtual ~MoleculesCommandLineQuery();
+    virtual bool handle();
+  };
+
   class VectorCommandLineQuery : public Dialog::VectorQuery {
   public:
     VectorCommandLineQuery(std::string title,bool _check, std::string _description = "");
     virtual ~VectorCommandLineQuery();
+    virtual bool handle();
+  };
+
+  class VectorsCommandLineQuery : public Dialog::VectorsQuery {
+  public:
+    VectorsCommandLineQuery(std::string title,bool _check, std::string _description = "");
+    virtual ~VectorsCommandLineQuery();
     virtual bool handle();
   };
@@ -117,4 +158,11 @@
     virtual bool handle();
   };
+
+  class ElementsCommandLineQuery : public Dialog::ElementsQuery {
+  public:
+    ElementsCommandLineQuery(std::string title, std::string _description = "");
+    virtual ~ElementsCommandLineQuery();
+    virtual bool handle();
+  };
 };
 
