Index: src/UIElements/CommandLineUI/CommandLineDialog.hpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineDialog.hpp	(revision b5bdb97b206859e63e42fbe4988f758a6ab460b8)
+++ src/UIElements/CommandLineUI/CommandLineDialog.hpp	(revision 6af64707c54afb9d272f3fe5d8cad1c7c028c889)
@@ -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/Query/CommandLineQuery.hpp
===================================================================
--- src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp	(revision b5bdb97b206859e63e42fbe4988f758a6ab460b8)
+++ src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp	(revision 6af64707c54afb9d272f3fe5d8cad1c7c028c889)
@@ -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/Dialog.cpp
===================================================================
--- src/UIElements/Dialog.cpp	(revision b5bdb97b206859e63e42fbe4988f758a6ab460b8)
+++ src/UIElements/Dialog.cpp	(revision 6af64707c54afb9d272f3fe5d8cad1c7c028c889)
@@ -134,4 +134,14 @@
   queryEmpty(param, title, description);
 }*/
+template <>
+void Dialog::query<Vector>(Parameter<Vector> &param, const std::string title, const std::string description)
+{
+  queryVector(param, title, description);
+}
+template <>
+void Dialog::query< std::vector<Vector> >(Parameter< std::vector<Vector> > &param, const std::string title, const std::string description)
+{
+  queryVectors(param, title, description);
+}
 
 /** With the following boost::preprocessor code we generate template
Index: src/UIElements/Dialog.hpp
===================================================================
--- src/UIElements/Dialog.hpp	(revision b5bdb97b206859e63e42fbe4988f758a6ab460b8)
+++ src/UIElements/Dialog.hpp	(revision 6af64707c54afb9d272f3fe5d8cad1c7c028c889)
@@ -158,4 +158,7 @@
   virtual void queryEmpty(const std::string ="", const std::string = "")=0;
 
+  virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "")=0;
+  virtual void queryVectors(Parameter< std::vector<Vector> > &, const std::string ="", const std::string = "")=0;
+
   /** With the following boost::preprocessor code we generate virtual function
    * definitions for all desired query types in the abstract class Dialog.
@@ -250,5 +253,4 @@
   };
 
-
   template<class T>
   class TQuery : public Query {
@@ -282,3 +284,45 @@
 };
 
+// we have specialization of Vector to allow internal storing as string
+template <>
+void Dialog::query<Vector>(Parameter<Vector> &, const std::string, const std::string);
+template <>
+void Dialog::query< std::vector<Vector> >(Parameter< std::vector<Vector> > &, const std::string, const std::string);
+
+/** Template specialization for Query<Vector> to allow internal storing of a
+ * string instead of a Vector.
+ *
+ * Because we need to evaluate the string as a possible GeometryRegistry key
+ * and we may do this only when the Action (whose options we are querying)
+ * is executed, not before.
+ */
+template <>
+class Dialog::TQuery<Vector> : public Query {
+public:
+  TQuery(Parameter<Vector> &_param, const std::string title, const std::string _description = "") :
+    Query(title, _description), param(_param) {}
+  virtual ~TQuery(){}
+  virtual bool handle()=0;
+  virtual bool isValid(){ return param.isValid(temp);  }
+  virtual void setResult(){ param.set(temp);  }
+protected:
+  Vector temp;
+  Parameter<Vector> &param;
+};
+
+template <>
+class Dialog::TQuery< std::vector<Vector> > : public Query {
+public:
+  TQuery(Parameter< std::vector<Vector> > &_param, const std::string title, const std::string _description = "") :
+    Query(title, _description), param(_param) {}
+  virtual ~TQuery(){}
+  virtual bool handle()=0;
+  virtual bool isValid(){ return param.isValid(temp);  }
+  virtual void setResult(){ param.set(temp);  }
+protected:
+  std::vector<Vector> temp;
+  Parameter< std::vector<Vector> > &param;
+};
+
+
 #endif /* DIALOG_HPP_ */
Index: src/UIElements/GlobalListOfParameterQueries.hpp
===================================================================
--- src/UIElements/GlobalListOfParameterQueries.hpp	(revision b5bdb97b206859e63e42fbe4988f758a6ab460b8)
+++ src/UIElements/GlobalListOfParameterQueries.hpp	(revision 6af64707c54afb9d272f3fe5d8cad1c7c028c889)
@@ -28,6 +28,4 @@
 	(Molecule) \
 	(Molecules) \
-	(Vector) \
-	(Vectors) \
 	(RealSpaceMatrix) \
 	(Element) \
@@ -52,6 +50,4 @@
 	(const molecule *) \
 	(std::vector<const molecule *> ) \
-	(Vector) \
-	(std::vector<Vector> ) \
 	(RealSpaceMatrix) \
 	(const element *) \
Index: src/UIElements/Qt4/QtDialog.hpp
===================================================================
--- src/UIElements/Qt4/QtDialog.hpp	(revision b5bdb97b206859e63e42fbe4988f758a6ab460b8)
+++ src/UIElements/Qt4/QtDialog.hpp	(revision 6af64707c54afb9d272f3fe5d8cad1c7c028c889)
@@ -36,4 +36,7 @@
   virtual void queryEmpty(const std::string ="", const std::string = "");
 
+  virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "");
+  virtual void queryVectors(Parameter< std::vector<Vector> > &, const std::string ="", const std::string = "");
+
   /** With the following boost::preprocessor code we generate virtual function
    * definitions for all desired query types in the abstract class Dialog.
@@ -64,4 +67,7 @@
 
   class EmptyQtQuery;
+
+  class VectorQtQuery;
+  class VectorsQtQuery;
 
   /** With the following boost::preprocessor code we generate forward declarations
Index: src/UIElements/Qt4/Query/QtQueryList.hpp
===================================================================
--- src/UIElements/Qt4/Query/QtQueryList.hpp	(revision b5bdb97b206859e63e42fbe4988f758a6ab460b8)
+++ src/UIElements/Qt4/Query/QtQueryList.hpp	(revision 6af64707c54afb9d272f3fe5d8cad1c7c028c889)
@@ -100,4 +100,57 @@
   std::vector<T> &tempRef;
   Parameter<T> *subParam;
+};
+
+template<>
+class QtQueryList<Vector> : public QtQueryListUntyped {
+public:
+  QtQueryList(Parameter<std::vector<Vector> > &parentParam, QBoxLayout *parent, Dialog *_dialog, std::vector<Vector> &_temp) : QtQueryListUntyped(parent, _dialog), tempRef(_temp)
+  {
+    // do we have an STLVectorValidator?
+    Validator<std::vector<Vector> > *val = &parentParam.getValidator();
+    STLVectorValidator<std::vector<Vector> > *vector_val = NULL;
+
+    // might be hidden inside an And_Validator
+    And_Validator<std::vector<Vector> > * and_val = dynamic_cast<And_Validator<std::vector<Vector> > *>(val);
+    if (and_val){
+      if (dynamic_cast<STLVectorValidator<std::vector<Vector> > *>(and_val->getA()))
+        vector_val = dynamic_cast<STLVectorValidator<std::vector<Vector> > *>(and_val->getA());
+      else if (dynamic_cast<STLVectorValidator<std::vector<Vector> > *>(and_val->getB()))
+        vector_val = dynamic_cast<STLVectorValidator<std::vector<Vector> > *>(and_val->getB());
+    }else{
+      vector_val = dynamic_cast<STLVectorValidator<std::vector<Vector> > *>(val);
+    }
+
+    if (vector_val){
+      // if so, try to use its ElementwiseValidator
+      subParam = new Parameter<Vector>("sub-param", *(vector_val->getElementwiseValidator()));
+    }else{
+      subParam = new Parameter<Vector>("sub-param");
+    }
+  }
+  virtual ~QtQueryList()
+  {
+    delete(subParam);
+  }
+
+  void addElement() {
+    // add item to both
+    addElementToListWidget(subParam->getAsString());
+    tempRef.push_back(subParam->get());
+    onUpdate();
+  }
+  void removeElements()
+  {
+    std::vector<int> rows = getSelectedRows();
+    removeSelectedRows(rows);
+    for (int i = rows.size() - 1; i >= 0; i --){
+      ASSERT((size_t)(rows[i]) < tempRef.size(), "QtQueryList<Vector>::removeElements() trying to remove invalid element.");
+      tempRef.erase(tempRef.begin() + rows[i]);
+    }
+    onUpdate();
+  }
+protected:
+  std::vector<Vector> &tempRef;
+  Parameter<Vector> *subParam;
 };
 
Index: src/UIElements/TextUI/Query/TextQuery.hpp
===================================================================
--- src/UIElements/TextUI/Query/TextQuery.hpp	(revision b5bdb97b206859e63e42fbe4988f758a6ab460b8)
+++ src/UIElements/TextUI/Query/TextQuery.hpp	(revision 6af64707c54afb9d272f3fe5d8cad1c7c028c889)
@@ -24,4 +24,17 @@
 };
 
+class TextDialog::VectorTextQuery : public Dialog::TQuery<Vector> {
+public:
+  VectorTextQuery(Parameter<Vector> &_param, const std::string &_title, const std::string &_description = "");
+  virtual ~VectorTextQuery();
+  virtual bool handle();
+};
+
+class TextDialog::VectorsTextQuery : public Dialog::TQuery< std::vector<Vector> > {
+public:
+  VectorsTextQuery(Parameter< std::vector<Vector> > &_param, const std::string &_title, const std::string &_description = "");
+  virtual ~VectorsTextQuery();
+  virtual bool handle();
+};
 
   /** With the following boost::preprocessor code we generate forward declarations
Index: src/UIElements/TextUI/TextDialog.hpp
===================================================================
--- src/UIElements/TextUI/TextDialog.hpp	(revision b5bdb97b206859e63e42fbe4988f758a6ab460b8)
+++ src/UIElements/TextUI/TextDialog.hpp	(revision 6af64707c54afb9d272f3fe5d8cad1c7c028c889)
@@ -34,4 +34,7 @@
   virtual void queryEmpty(const std::string ="", const std::string = "");
 
+  virtual void queryVector(Parameter<Vector> &, const std::string ="", const std::string = "");
+  virtual void queryVectors(Parameter< std::vector<Vector> > &, const std::string ="", const std::string = "");
+
   /** With the following boost::preprocessor code we generate virtual function
    * definitions for all desired query types in the abstract class Dialog.
@@ -59,4 +62,7 @@
   class EmptyTextQuery;
 
+  class VectorTextQuery;
+  class VectorsTextQuery;
+
   /** With the following boost::preprocessor code we generate forward declarations
    * of query class for all desired query types in the Qt specialization class of
