Index: src/Actions/Values.cpp
===================================================================
--- src/Actions/Values.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/Actions/Values.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -37,8 +37,8 @@
 #include "CodePatterns/Assert.hpp"
 
+#include "Box.hpp"
 #include "LinearAlgebra/BoxVector.hpp"
 #include "LinearAlgebra/RealSpaceMatrix.hpp"
 #include "LinearAlgebra/Vector.hpp"
-#include "Box.hpp"
 
 #include "Values.hpp"
Index: src/Actions/Values.hpp
===================================================================
--- src/Actions/Values.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/Actions/Values.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -15,4 +15,6 @@
 
 #include "LinearAlgebra/defs.hpp"
+
+#include <string>
 
 class Box;
@@ -45,4 +47,4 @@
 };
 
+#endif /* VALUES_HPP_ */
 
-#endif /* VALUES_HPP_ */
Index: src/Actions/toCLIString.cpp
===================================================================
--- src/Actions/toCLIString.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/Actions/toCLIString.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -40,4 +40,7 @@
 #include "LinearAlgebra/RealSpaceMatrix.hpp"
 #include "LinearAlgebra/Vector.hpp"
+#include "Parameters/Specifics/KeyValuePair.hpp"
+
+#include "Actions/toPythonString.hpp"
 
 template <>
@@ -65,5 +68,6 @@
     << _value.at(2,0) << ","
     << _value.at(2,1) << ","
-    << _value.at(2,2) << "\"";
+    << _value.at(2,2)
+    << "\"";
   return output.str();
 }
@@ -73,5 +77,5 @@
 {
   std::stringstream output;
-  output << "\"" << _value[0] << "," << _value[1] << "," << _value[2] << "\"";
+  output << "\"" << toPythonString(_value) << "\"";
   return output.str();
 }
@@ -84,2 +88,10 @@
   return output.str();
 }
+
+template <>
+const std::string toCLIString( const KeyValuePair& _value)
+{
+  std::stringstream output;
+  output << "\"" << toPythonString(_value) << "\"";
+  return output.str();
+}
Index: src/Actions/toCLIString.hpp
===================================================================
--- src/Actions/toCLIString.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/Actions/toCLIString.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -21,4 +21,5 @@
 
 class element;
+struct KeyValuePair;
 class RealSpaceMatrix;
 class Vector;
@@ -77,3 +78,5 @@
 template <> const std::string toCLIString( const std::string& _value);
 
+template <> const std::string toCLIString( const KeyValuePair& _value);
+
 #endif /* TOCLISTRING_HPP_ */
Index: src/Actions/toPythonString.cpp
===================================================================
--- src/Actions/toPythonString.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/Actions/toPythonString.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -41,4 +41,6 @@
 #include "LinearAlgebra/Vector.hpp"
 
+#include "Parameters/Specifics/KeyValuePair.hpp"
+
 template <>
 const std::string toPythonString( const boost::filesystem::path & _value)
@@ -52,4 +54,18 @@
   std::stringstream output;
   output << _value.getAtomicNumber();
+  return output.str();
+}
+
+template <>
+const std::string toPythonString( const KeyValuePair & _value)
+{
+  std::stringstream output;
+  const char semicolon(';');
+  const size_t semicolon_pos = _value.find_last_of(semicolon, std::string::npos);
+  const size_t final_equality_pos = _value.find('=', semicolon_pos);
+  output << _value;
+  if ((semicolon_pos == std::string::npos)
+      || (final_equality_pos != std::string::npos))
+    output << semicolon;
   return output.str();
 }
Index: src/Actions/toPythonString.hpp
===================================================================
--- src/Actions/toPythonString.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/Actions/toPythonString.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -21,4 +21,5 @@
 
 class element;
+struct KeyValuePair;
 class RealSpaceMatrix;
 class Vector;
@@ -71,4 +72,6 @@
 template <> const std::string toPythonString( const boost::filesystem::path & _value);
 
+template <> const std::string toPythonString( const KeyValuePair& _value);
+
 template <> const std::string toPythonString( const RealSpaceMatrix& _value);
 
Index: src/Actions/unittests/stubs/DummyUI.hpp
===================================================================
--- src/Actions/unittests/stubs/DummyUI.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/Actions/unittests/stubs/DummyUI.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -47,4 +47,6 @@
   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = ""){};
   virtual void queryFiles(Parameter< std::vector<boost::filesystem::path> > &, const std::string ="", const std::string = ""){};
+  virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = ""){};
+  virtual void queryKeyValuePairs(Parameter<std::vector<KeyValuePair> > &, const std::string ="", const std::string = ""){};
 };
 
Index: src/Parameters/Makefile.am
===================================================================
--- src/Parameters/Makefile.am	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/Parameters/Makefile.am	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -43,4 +43,5 @@
 	Parameters/ValueAsString.hpp \
 	Parameters/ValueInterface.hpp \
+	Parameters/Specifics/KeyValuePair.hpp \
 	Parameters/Specifics/Value_atom.hpp \
 	Parameters/Specifics/Value_element.hpp \
Index: src/Parameters/Specifics/KeyValuePair.hpp
===================================================================
--- src/Parameters/Specifics/KeyValuePair.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
+++ src/Parameters/Specifics/KeyValuePair.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -0,0 +1,33 @@
+/*
+ * KeyValuePair.hpp
+ *
+ *  Created on: May 16, 2015
+ *      Author: heber
+ */
+
+#ifndef KEYVALUEPAIR_HPP_
+#define KEYVALUEPAIR_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string>
+
+/** This class contains parameter (key = value); pairs.
+ *
+ * We have this special class such that conversion to string (for serializing,
+ * ...) can be done especially and does not change other strings.
+ */
+struct KeyValuePair : public std::string
+{
+  KeyValuePair()
+  {}
+
+  KeyValuePair(const std::string &_value) :
+    std::string(_value)
+  {}
+};
+
+#endif /* KEYVALUEPAIR_HPP_ */
Index: src/UIElements/CommandLineUI/CommandLineDialog.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineDialog.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/CommandLineUI/CommandLineDialog.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -136,4 +136,14 @@
 }
 
+void CommandLineDialog::queryKeyValuePair(Parameter<KeyValuePair> &param, const std::string title, const std::string description)
+{
+  registerQuery(new KeyValuePairCommandLineQuery(param, title,description));
+}
+
+void CommandLineDialog::queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &param, const std::string title, const std::string description)
+{
+  registerQuery(new KeyValuePairsCommandLineQuery(param, title,description));
+}
+
 /************************** Query Infrastructure ************************/
 /*       ---> shifted to folder Query                                   */
Index: src/UIElements/CommandLineUI/CommandLineDialog.hpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineDialog.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/CommandLineUI/CommandLineDialog.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -54,7 +54,11 @@
   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "");
   virtual void queryFiles(Parameter<std::vector< boost::filesystem::path> > &, const std::string ="", const std::string = "");
+  virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "");
+  virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "");
+
   // specialized stuff for command line queries
   // all placed into Query/CommandLineQuery.hpp
   // !please adhere to alphabetical ordering!
+
   class AtomCommandLineQuery;
   class AtomsCommandLineQuery;
@@ -69,4 +73,6 @@
   class IntCommandLineQuery;
   class IntsCommandLineQuery;
+  class KeyValuePairCommandLineQuery;
+  class KeyValuePairsCommandLineQuery;
   class MoleculeCommandLineQuery;
   class MoleculesCommandLineQuery;
Index: src/UIElements/CommandLineUI/CommandLineParser.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineParser.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/CommandLineUI/CommandLineParser.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -52,4 +52,5 @@
 #include "CommandLineParser.hpp"
 #include "CommandLineParser_validate.hpp"
+#include "Parameters/Specifics/KeyValuePair.hpp"
 #include "World.hpp"
 
@@ -408,4 +409,24 @@
 //                  po::value < RealSpaceMatrixValue >()->default_value(boost::lexical_cast<BoxValue>(currentOption->getDefaultValue().c_str())) :
                   po::value < RealSpaceMatrixValue >(),
+                  currentOption->getDescription().c_str())
+        ;
+      break;
+    case TypeEnumContainer::KeyValueType:
+      OptionList->add_options()
+        (currentOption->getKeyAndShortForm().c_str(),
+            currentOption->hasDefaultValue() ?
+                  (_DefaultAsImplicit ?
+                      po::value < KeyValuePair >()->implicit_value(boost::lexical_cast< KeyValuePair >(currentOption->getDefaultValue().c_str())) :
+                      po::value < KeyValuePair >()->default_value(boost::lexical_cast< KeyValuePair >(currentOption->getDefaultValue().c_str()))) :
+                  po::value < KeyValuePair >(),
+                  currentOption->getDescription().c_str())
+        ;
+      break;
+    case TypeEnumContainer::ListOfKeyValuesType:
+      OptionList->add_options()
+        (currentOption->getKeyAndShortForm().c_str(),
+//            currentOption->hasDefaultValue() ?
+//                  po::value < std::vector<KeyValuePair> >()->default_value(boost::lexical_cast< std::vector<KeyValuePair> >(currentOption->getDefaultValue().c_str())) :
+                  po::value < std::vector<KeyValuePair> >()->multitoken(),
                   currentOption->getDescription().c_str())
         ;
Index: src/UIElements/CommandLineUI/CommandLineParser_validate.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineParser_validate.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/CommandLineUI/CommandLineParser_validate.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -42,4 +42,5 @@
 #include "Actions/Values.hpp"
 #include "CommandLineParser_validate.hpp"
+#include "Parameters/Specifics/KeyValuePair.hpp"
 
 /** boost::program_options validator specialization for VectorValue.
@@ -157,11 +158,59 @@
 void validate(boost::any& v, const std::vector<std::string>& values, boost::filesystem::path *, int)
 {
-  boost::filesystem::path filename;
-
-  std::cerr << "boost::filesystem::path validator used." << std::endl;
+//  std::cerr << "boost::filesystem::path validator used." << std::endl;
+
+  // Make sure no previous assignment to 'a' was made.
+  boost::program_options::validators::check_first_occurrence(v);
+  // Extract the first string from 'values'. If there is more than
+  // one string, it's an error, and exception will be thrown.
+  const std::string& s = boost::program_options::validators::get_single_string(values);
+
+  v = boost::any(boost::filesystem::path(s));
+}
+
+/** boost::program_options validator specialization for boost::filesystem::path.
+ * \param &v  reference for return value
+ * \param &values string vector of scanned options
+ * \param *
+ * \param
+ *
+ */
+void validate(boost::any& v, const std::vector<std::string>& values, KeyValuePair *, int)
+{
+//  std::cerr << "KeyValuePair validator used." << std::endl;
+
+  // Make sure no previous assignment to 'a' was made.
+  boost::program_options::validators::check_first_occurrence(v);
+  // Extract the first string from 'values'. If there is more than
+  // one string, it's an error, and exception will be thrown.
+  const std::string& s = boost::program_options::validators::get_single_string(values);
+
+  if (s.find("=") == std::string::npos) {
+#if BOOST_VERSION < 104200
+    throw boost::program_options::validation_error("Invalid KeyValue given");
+#else
+throw boost::program_options::validation_error(
+    boost::program_options::validation_error::invalid_option_value,
+    std::string("value"),
+    std::string("vector<KeyValuePair>")
+    );
+#endif
+  }
+  v = boost::any(KeyValuePair(s));
+}
+
+/** boost::program_options validator specialization for boost::filesystem::path.
+ * \param &v  reference for return value
+ * \param &values string vector of scanned options
+ * \param *
+ * \param
+ *
+ */
+void validate(boost::any& v, const std::vector<std::string>& values, std::vector<KeyValuePair> *, int)
+{
+//  std::cerr << "vector<KeyValuePair> validator used." << std::endl;
 
   // split comma-separated values
-  if (values.size() != 1) {
-    std::cerr <<  "Not one file but " << values.size() << " given " << std::endl;
+  if (values.size() > 1) {
 #if BOOST_VERSION < 104200
     throw boost::program_options::validation_error("Unequal to one file given");
@@ -171,17 +220,26 @@
           boost::program_options::validation_error::at_least_one_value_required,
           std::string("value"),
-          std::string("boost::filesystem::path")
-      );
-    } else {
-      throw boost::program_options::validation_error(
-          boost::program_options::validation_error::multiple_values_not_allowed,
-          std::string("value"),
-          std::string("boost::filesystem::path")
+          std::string("vector<KeyValuePair>")
       );
     }
 #endif
-  }
-  filename = values.at(0);
-  v = boost::any(boost::filesystem::path(filename));
-}
-
+    for (std::vector<std::string>::const_iterator iter = values.begin();
+        iter != values.end();++iter)
+      if ((*iter).find("=") == std::string::npos) {
+#if BOOST_VERSION < 104200
+    throw boost::program_options::validation_error("Invalid KeyValue given");
+#else
+    throw boost::program_options::validation_error(
+        boost::program_options::validation_error::invalid_option_value,
+        std::string("value"),
+        std::string("vector<KeyValuePair>")
+    );
+#endif
+      }
+  }
+  std::vector<KeyValuePair> temp;
+  for (std::vector<std::string>::const_iterator iter = values.begin();
+      iter != values.end();++iter)
+    temp.push_back(KeyValuePair(*iter));
+  v = boost::any(temp);
+}
Index: src/UIElements/CommandLineUI/CommandLineParser_validate.hpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineParser_validate.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/CommandLineUI/CommandLineParser_validate.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -22,7 +22,10 @@
 #include <boost/lexical_cast.hpp>
 
+struct KeyValuePair;
 class RealSpaceMatrixValue;
 class VectorValue;
 
+void validate(boost::any& v, const std::vector<std::string>& values, KeyValuePair *, int);
+void validate(boost::any& v, const std::vector<std::string>& values, std::vector<KeyValuePair> *, int);
 void validate(boost::any& v, const std::vector<std::string>& values, VectorValue *, int);
 void validate(boost::any& v, const std::vector<std::string>& values, RealSpaceMatrixValue *, int);
Index: src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp
===================================================================
--- src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/CommandLineUI/Query/CommandLineQuery.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -164,3 +164,17 @@
 };
 
+class CommandLineDialog::KeyValuePairCommandLineQuery : public Dialog::TQuery<KeyValuePair> {
+public:
+  KeyValuePairCommandLineQuery(Parameter<KeyValuePair> &_param, const std::string &_title, const std::string &_description = "");
+  virtual ~KeyValuePairCommandLineQuery();
+  virtual bool handle();
+};
+
+class CommandLineDialog::KeyValuePairsCommandLineQuery : public Dialog::TQuery<std::vector<KeyValuePair> > {
+public:
+  KeyValuePairsCommandLineQuery(Parameter<std::vector<KeyValuePair> > &_param, const std::string &_title, const std::string &_description = "");
+  virtual ~KeyValuePairsCommandLineQuery();
+  virtual bool handle();
+};
+
 #endif /* COMMANDLINEQUERY_HPP_ */
Index: src/UIElements/CommandLineUI/Query/KeyValuePairCommandLineQuery.cpp
===================================================================
--- src/UIElements/CommandLineUI/Query/KeyValuePairCommandLineQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
+++ src/UIElements/CommandLineUI/Query/KeyValuePairCommandLineQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -0,0 +1,63 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2015 Frederik Heber. All rights reserved.
+ * 
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * KeyValuePairCommandLineQuery.cpp
+ *
+ *  Created on: May 16, 2015
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "Actions/Values.hpp"
+#include "CommandLineUI/Query/CommandLineQuery.hpp"
+#include "CommandLineUI/CommandLineParser.hpp"
+#include "CodePatterns/Log.hpp"
+#include "CodePatterns/Verbose.hpp"
+
+#include "Parameters/Specifics/KeyValuePair.hpp"
+
+CommandLineDialog::KeyValuePairCommandLineQuery::KeyValuePairCommandLineQuery(Parameter<KeyValuePair> &_param, const std::string &_title, const std::string &_description) :
+    Dialog::TQuery<KeyValuePair>(_param, _title, _description)
+{}
+
+CommandLineDialog::KeyValuePairCommandLineQuery::~KeyValuePairCommandLineQuery() {}
+
+bool CommandLineDialog::KeyValuePairCommandLineQuery::handle() {
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    try {
+      temp = CommandLineParser::getInstance().vm[getTitle()].as< KeyValuePair >();
+    } catch(boost::bad_any_cast &e) {
+      temp = KeyValuePair(std::string(""));
+      return false;
+    }
+    return true;
+  }
+  return false;
+}
+
Index: src/UIElements/CommandLineUI/Query/KeyValuePairsCommandLineQuery.cpp
===================================================================
--- src/UIElements/CommandLineUI/Query/KeyValuePairsCommandLineQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
+++ src/UIElements/CommandLineUI/Query/KeyValuePairsCommandLineQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -0,0 +1,62 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2015 Frederik Heber. All rights reserved.
+ * 
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * KeyValuePairsCommandLineQuery.cpp
+ *
+ *  Created on: May 16, 2015
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "CommandLineUI/Query/CommandLineQuery.hpp"
+#include "CommandLineUI/CommandLineParser.hpp"
+#include "CodePatterns/Log.hpp"
+#include "CodePatterns/Verbose.hpp"
+
+#include "Parameters/Specifics/KeyValuePair.hpp"
+
+CommandLineDialog::KeyValuePairsCommandLineQuery::KeyValuePairsCommandLineQuery(Parameter<std::vector<KeyValuePair> > &_param, const std::string &_title, const std::string &_description) :
+    Dialog::TQuery<std::vector<KeyValuePair> >(_param, _title, _description)
+{}
+
+CommandLineDialog::KeyValuePairsCommandLineQuery::~KeyValuePairsCommandLineQuery() {}
+
+bool CommandLineDialog::KeyValuePairsCommandLineQuery::handle() {
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    try {
+      temp = CommandLineParser::getInstance().vm[getTitle()].as< std::vector<KeyValuePair> >();
+    } catch(boost::bad_any_cast &e) {
+      temp.clear();
+      return false;
+    }
+    return true;
+  }
+  return false;
+}
+
Index: src/UIElements/CommandLineUI/TypeEnumContainer.cpp
===================================================================
--- src/UIElements/CommandLineUI/TypeEnumContainer.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/CommandLineUI/TypeEnumContainer.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -51,4 +51,5 @@
 #include "Element/element.hpp"
 #include "molecule.hpp"
+#include "Parameters/Specifics/KeyValuePair.hpp"
 #include "RandomNumbers/RandomNumberDistribution_Parameters.hpp"
 
@@ -81,4 +82,6 @@
   TypeEnumMap[&typeid(const element *)] = ElementType;
   TypeEnumMap[&typeid(std::vector<const element *>)] = ListOfElementsType;
+  TypeEnumMap[&typeid(KeyValuePair)] = KeyValueType;
+  TypeEnumMap[&typeid(std::vector<KeyValuePair>)] = ListOfKeyValuesType;
 
   // for debugging: list all stored types
Index: src/UIElements/CommandLineUI/TypeEnumContainer.hpp
===================================================================
--- src/UIElements/CommandLineUI/TypeEnumContainer.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/CommandLineUI/TypeEnumContainer.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -46,5 +46,7 @@
         ElementType,
         ListOfElementsType,
-        RealSpaceMatrixType
+        RealSpaceMatrixType,
+        KeyValueType,
+        ListOfKeyValuesType
   };
 
Index: src/UIElements/Dialog.cpp
===================================================================
--- src/UIElements/Dialog.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/Dialog.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -235,4 +235,14 @@
 }
 
+template <> void Dialog::query< KeyValuePair >(Parameter<KeyValuePair> &param, const std::string title, const std::string description)
+{
+  queryKeyValuePair(param, title, description);
+}
+
+template <> void Dialog::query< std::vector<KeyValuePair> >(Parameter< std::vector<KeyValuePair> > &param, const std::string title, const std::string description)
+{
+  queryKeyValuePairs(param, title, description);
+}
+
 /************************** Query Infrastructure ************************/
 /*       ---> shifted to folder Query                                   */
Index: src/UIElements/Dialog.hpp
===================================================================
--- src/UIElements/Dialog.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/Dialog.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -23,4 +23,5 @@
 #include "LinearAlgebra/Vector.hpp"
 #include "Parameters/Parameter.hpp"
+#include "Parameters/Specifics/KeyValuePair.hpp"
 
 class atom;
@@ -28,5 +29,4 @@
 class element;
 class molecule;
-
 
 /** Dialog is one of the two main classes of the UIFactory base class.
@@ -178,4 +178,6 @@
   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "")=0;
   virtual void queryFiles(Parameter< std::vector<boost::filesystem::path> > &, const std::string ="", const std::string = "")=0;
+  virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "")=0;
+  virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "")=0;
 
   virtual bool display();
Index: src/UIElements/Makefile.am
===================================================================
--- src/UIElements/Makefile.am	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/Makefile.am	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -18,4 +18,6 @@
   UIElements/CommandLineUI/Query/MoleculeCommandLineQuery.cpp \
   UIElements/CommandLineUI/Query/MoleculesCommandLineQuery.cpp \
+  UIElements/CommandLineUI/Query/KeyValuePairCommandLineQuery.cpp \
+  UIElements/CommandLineUI/Query/KeyValuePairsCommandLineQuery.cpp \
   UIElements/CommandLineUI/Query/RealSpaceMatrixCommandLineQuery.cpp \
   UIElements/CommandLineUI/Query/StringCommandLineQuery.cpp \
@@ -89,4 +91,6 @@
   UIElements/TextUI/Query/MoleculesTextQuery.cpp \
   UIElements/TextUI/Query/MoleculeTextQuery.cpp \
+  UIElements/TextUI/Query/KeyValuePairTextQuery.cpp \
+  UIElements/TextUI/Query/KeyValuePairsTextQuery.cpp \
   UIElements/TextUI/Query/RealSpaceMatrixTextQuery.cpp \
   UIElements/TextUI/Query/StringTextQuery.cpp \
@@ -154,4 +158,6 @@
   UIElements/Qt4/Query/MoleculesQtQuery.cpp \
   UIElements/Qt4/Query/QtQueryList.cpp \
+  UIElements/Qt4/Query/KeyValuePairQtQuery.cpp \
+  UIElements/Qt4/Query/KeyValuePairsQtQuery.cpp \
   UIElements/Qt4/Query/RealSpaceMatrixQtQuery.cpp \
   UIElements/Qt4/Query/StringQtQuery.cpp \
Index: src/UIElements/Qt4/QtDialog.cpp
===================================================================
--- src/UIElements/Qt4/QtDialog.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/Qt4/QtDialog.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -197,4 +197,14 @@
 }
 
+void QtDialog::queryKeyValuePair(Parameter<KeyValuePair> &param, const std::string title, const std::string description)
+{
+  registerQuery(new KeyValuePairQtQuery(param, title,description,inputLayout,this));
+}
+
+void QtDialog::queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &param, const std::string title, const std::string description)
+{
+  registerQuery(new KeyValuePairsQtQuery(param, title,description,inputLayout,this));
+}
+
 /************************** Query Infrastructure ************************/
 /*       ---> shifted to folder Query                                   */
Index: src/UIElements/Qt4/QtDialog.hpp
===================================================================
--- src/UIElements/Qt4/QtDialog.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/Qt4/QtDialog.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -55,4 +55,6 @@
   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "");
   virtual void queryFiles(Parameter<std::vector< boost::filesystem::path> > &, const std::string ="", const std::string = "");
+  virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "");
+  virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "");
 
   virtual bool display();
@@ -74,4 +76,6 @@
   class IntQtQuery;
   class IntsQtQuery;
+  class KeyValuePairQtQuery;
+  class KeyValuePairsQtQuery;
   class MoleculeQtQuery;
   class MoleculesQtQuery;
Index: src/UIElements/Qt4/Query/KeyValuePairQtQuery.cpp
===================================================================
--- src/UIElements/Qt4/Query/KeyValuePairQtQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
+++ src/UIElements/Qt4/Query/KeyValuePairQtQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -0,0 +1,97 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2015 Frederik Heber. All rights reserved.
+ * 
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * KeyValuePairQtQuery.cpp
+ *
+ *  Created on: May 16, 2015
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <Qt/qboxlayout.h>
+#include <Qt/qlabel.h>
+#include <Qt/qlineedit.h>
+#include <Qt/qcombobox.h>
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "UIElements/Qt4/Query/QtQuery.hpp"
+
+#include "Parameters/Specifics/KeyValuePair.hpp"
+
+QtDialog::KeyValuePairQtQuery::KeyValuePairQtQuery(Parameter<KeyValuePair> &_param, const std::string &_title, const std::string &_description,QBoxLayout *_parent,Dialog *_dialog) :
+    QtQuery<KeyValuePair>(_param, _title, _description),
+    parent(_parent),
+    dialog(_dialog)
+{
+  temp.clear();
+  if (param.isSet())
+    temp = param.get();
+  thisLayout = new QHBoxLayout();
+  titleLabel = new QLabel(QString(getTitle().c_str()));
+  titleLabel->setToolTip(QString(getDescription().c_str()));
+  parent->addLayout(thisLayout);
+  thisLayout->addWidget(titleLabel);
+
+  if (dynamic_cast<DiscreteValidator<KeyValuePair>*>(&_param.getValidator()) != NULL){
+    // Discrete set of valid string -> use a ComboBox.
+
+    const std::vector<std::string> &strings = dynamic_cast<DiscreteValidator<std::string>*>(&_param.getValidator())->getValidValues();
+    comboBox = new QComboBox();
+    for(vector<std::string>::const_iterator iter  = strings.begin();
+        iter != strings.end();
+        ++iter) {
+      comboBox->addItem(QString((*iter).c_str()));
+    }
+    thisLayout->addWidget(comboBox);
+
+    connect(comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(onUpdateCombo(int)));
+    onUpdateCombo(0);
+  }else{
+    // Use a LineEdit.
+    inputBox = new QLineEdit(QString(temp.c_str()));
+    thisLayout->addWidget(inputBox);
+
+    onUpdate(inputBox->text());
+    connect(inputBox,SIGNAL(textChanged(const QString&)),this,SLOT(onUpdate(const QString&)));
+  }
+}
+
+QtDialog::KeyValuePairQtQuery::~KeyValuePairQtQuery()
+{
+}
+
+void QtDialog::KeyValuePairQtQuery::onUpdate(const QString& newText) {
+  temp = newText.toStdString();
+  dialog->update();
+}
+
+void QtDialog::KeyValuePairQtQuery::onUpdateCombo(int newIndex) {
+  temp = comboBox->itemText(newIndex).toStdString();
+  dialog->update();
+}
+
Index: src/UIElements/Qt4/Query/KeyValuePairsQtQuery.cpp
===================================================================
--- src/UIElements/Qt4/Query/KeyValuePairsQtQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
+++ src/UIElements/Qt4/Query/KeyValuePairsQtQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -0,0 +1,80 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2015 Frederik Heber. All rights reserved.
+ * 
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * KeyValuePairsQtQuery.cpp
+ *
+ *  Created on: May 16, 2015
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <Qt/qpushbutton.h>
+#include <Qt/qboxlayout.h>
+#include <Qt/qlistwidget.h>
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "UIElements/Qt4/Query/QtQuery.hpp"
+#include "UIElements/Qt4/Query/QtQueryList.hpp"
+
+#include "Parameters/Specifics/KeyValuePair.hpp"
+
+QtDialog::KeyValuePairsQtQuery::KeyValuePairsQtQuery(Parameter<std::vector<KeyValuePair> > &_param, const std::string &_title, const std::string &_description,QBoxLayout *_parent,Dialog *_dialog) :
+    QtQuery<std::vector<KeyValuePair> >(_param, _title, _description),
+    QtQueryList<KeyValuePair>(_param, _parent, _dialog, temp)
+{
+  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
+  subQuery = new KeyValuePairQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
+  subDialog->setSubQuery(subQuery);
+
+  connect(inputList,SIGNAL(itemSelectionChanged()),this,SLOT(onElementSelected()));
+  connect(addButton,SIGNAL(clicked()),this,SLOT(onAddElement()));
+  connect(removeButton,SIGNAL(clicked()),this,SLOT(onRemoveElement()));
+}
+
+QtDialog::KeyValuePairsQtQuery::~KeyValuePairsQtQuery()
+{
+  delete(subQuery);
+}
+
+void QtDialog::KeyValuePairsQtQuery::onSubUpdate()
+{
+  addButton->setEnabled(subParam->isSet());
+}
+
+void QtDialog::KeyValuePairsQtQuery::onElementSelected() {
+  elementSelected();
+}
+
+void QtDialog::KeyValuePairsQtQuery::onAddElement() {
+  addElement();
+}
+
+void QtDialog::KeyValuePairsQtQuery::onRemoveElement() {
+  removeElements();
+}
+
Index: src/UIElements/Qt4/Query/QtQuery.hpp
===================================================================
--- src/UIElements/Qt4/Query/QtQuery.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/Qt4/Query/QtQuery.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -17,6 +17,7 @@
 #include <Qt/qwidget.h>
 #include "Qt4/QtDialog.hpp"
+#include "QtQueryList.hpp"
+
 #include "Parameters/Parameter.hpp"
-#include "QtQueryList.hpp"
 
 class QHBoxLayout;
@@ -300,4 +301,40 @@
 };
 
+class QtDialog::KeyValuePairQtQuery : public QWidget, public QtQuery<KeyValuePair> {
+  Q_OBJECT
+public:
+  KeyValuePairQtQuery(Parameter<KeyValuePair> &, const std::string &_title, const std::string &description, QBoxLayout *_parent,Dialog *_dialog);
+  virtual ~KeyValuePairQtQuery();
+
+public slots:
+  void onUpdate(const QString&);
+  void onUpdateCombo(int index);
+
+private:
+  QBoxLayout *parent;
+  QBoxLayout *thisLayout;
+  QLabel *titleLabel;
+  QLineEdit *inputBox;
+  QComboBox *comboBox;
+  Dialog *dialog;
+};
+
+class QtDialog::KeyValuePairsQtQuery : public QWidget, public QtQuery<std::vector<KeyValuePair> >, public QtQueryList<KeyValuePair> {
+  Q_OBJECT
+public:
+  KeyValuePairsQtQuery(Parameter<std::vector<KeyValuePair> > &, const std::string &_title, const std::string &description, QBoxLayout *_parent,Dialog *_dialog);
+  virtual ~KeyValuePairsQtQuery();
+
+  virtual void onSubUpdate();
+
+public slots:
+  void onAddElement();
+  void onRemoveElement();
+  void onElementSelected();
+
+private:
+  KeyValuePairQtQuery *subQuery;
+};
+
 class QtDialog::StringQtQuery : public QWidget, public QtQuery<std::string> {
   Q_OBJECT
Index: src/UIElements/Qt4/Query/QtQueryList.hpp
===================================================================
--- src/UIElements/Qt4/Query/QtQueryList.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/Qt4/Query/QtQueryList.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -142,4 +142,7 @@
   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string = "", const std::string = ""){}
   virtual void queryFiles(Parameter<std::vector< boost::filesystem::path> > &, const std::string = "", const std::string = ""){}
+  virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string = "", const std::string = ""){}
+  virtual void queryKeyValuePairs(Parameter<std::vector<KeyValuePair> > &, const std::string = "", const std::string = ""){}
+
 private:
   QtQueryListUntyped *parent;
Index: src/UIElements/TextUI/Query/KeyValuePairTextQuery.cpp
===================================================================
--- src/UIElements/TextUI/Query/KeyValuePairTextQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
+++ src/UIElements/TextUI/Query/KeyValuePairTextQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -0,0 +1,57 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2015 Frederik Heber. All rights reserved.
+ * 
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * KeyValuePairTextQuery.cpp
+ *
+ *  Created on: May 16, 2015
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include <iostream>
+
+#include "TextUI/Query/TextQuery.hpp"
+
+#include "CodePatterns/Log.hpp"
+#include "CodePatterns/Verbose.hpp"
+
+#include "Parameters/Specifics/KeyValuePair.hpp"
+
+TextDialog::KeyValuePairTextQuery::KeyValuePairTextQuery(Parameter<KeyValuePair> &_param, const std::string &_title, const std::string &_description) :
+    Dialog::TQuery<KeyValuePair>(_param, _title,_description)
+{}
+
+TextDialog::KeyValuePairTextQuery::~KeyValuePairTextQuery() {}
+
+bool TextDialog::KeyValuePairTextQuery::handle() {
+  std::cout << getDescription() << ": ";
+  getline(std::cin,temp);
+  return true;
+}
+
Index: src/UIElements/TextUI/Query/KeyValuePairsTextQuery.cpp
===================================================================
--- src/UIElements/TextUI/Query/KeyValuePairsTextQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
+++ src/UIElements/TextUI/Query/KeyValuePairsTextQuery.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -0,0 +1,69 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2015 Frederik Heber. All rights reserved.
+ * 
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * KeyValuePairsTextQuery.cpp
+ *
+ *  Created on: May 16, 2015
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include <iostream>
+
+#include "TextUI/Query/TextQuery.hpp"
+
+#include "CodePatterns/Log.hpp"
+#include "CodePatterns/Verbose.hpp"
+
+#include "Parameters/Specifics/KeyValuePair.hpp"
+
+TextDialog::KeyValuePairsTextQuery::KeyValuePairsTextQuery(Parameter<std::vector<KeyValuePair> > &_param, const std::string &_title, const std::string &_description) :
+    Dialog::TQuery<std::vector<KeyValuePair> >(_param, _title,_description)
+{}
+
+TextDialog::KeyValuePairsTextQuery::~KeyValuePairsTextQuery() {}
+
+bool TextDialog::KeyValuePairsTextQuery::handle() {
+  std::cout << getDescription() << ": ";
+  std::string temp_element;
+  getline(std::cin,temp_element);
+  // dissect by " "
+  std::string::iterator olditer = temp_element.begin();
+  for(std::string::iterator iter = temp_element.begin(); iter != temp_element.end(); ++iter) {
+    if (*iter == ' ') {
+      temp.push_back(std::string(iter, olditer));
+      olditer = iter;
+    }
+  }
+  if (olditer != temp_element.begin())  // insert last part also
+    temp.push_back(std::string(olditer, temp_element.end()));
+
+  return true;
+}
+
Index: src/UIElements/TextUI/Query/TextQuery.hpp
===================================================================
--- src/UIElements/TextUI/Query/TextQuery.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/TextUI/Query/TextQuery.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -108,4 +108,18 @@
 };
 
+class TextDialog::KeyValuePairTextQuery : public Dialog::TQuery<KeyValuePair> {
+public:
+  KeyValuePairTextQuery(Parameter<KeyValuePair> &, const std::string &_title, const std::string &_description = NULL);
+  virtual ~KeyValuePairTextQuery();
+  virtual bool handle();
+};
+
+class TextDialog::KeyValuePairsTextQuery : public Dialog::TQuery<std::vector<KeyValuePair> > {
+public:
+  KeyValuePairsTextQuery(Parameter<std::vector<KeyValuePair> > &, const std::string &_title, const std::string &_description = NULL);
+  virtual ~KeyValuePairsTextQuery();
+  virtual bool handle();
+};
+
 class TextDialog::MoleculeTextQuery : public Dialog::TQuery<const molecule *> {
 public:
Index: src/UIElements/TextUI/TextDialog.cpp
===================================================================
--- src/UIElements/TextUI/TextDialog.cpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/TextUI/TextDialog.cpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -134,4 +134,14 @@
 }
 
+void TextDialog::queryKeyValuePair(Parameter<KeyValuePair> &param, const std::string title, const std::string description)
+{
+  registerQuery(new KeyValuePairTextQuery(param, title,description));
+}
+
+void TextDialog::queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &param, const std::string title, const std::string description)
+{
+  registerQuery(new KeyValuePairsTextQuery(param, title,description));
+}
+
 /************************** Query Infrastructure ************************/
 /*       ---> shifted to folder Query                                   */
Index: src/UIElements/TextUI/TextDialog.hpp
===================================================================
--- src/UIElements/TextUI/TextDialog.hpp	(revision f3db6059ff3cc60a56408536bc8c419fc809da01)
+++ src/UIElements/TextUI/TextDialog.hpp	(revision 33e80133683ce15eb991faac6abc6d540afee182)
@@ -22,4 +22,5 @@
 class element;
 class molecule;
+class KeyValuePair;
 class RealSpaceMatrix;
 class Vector;
@@ -52,4 +53,6 @@
   virtual void queryFile(Parameter<boost::filesystem::path> &, const std::string ="", const std::string = "");
   virtual void queryFiles(Parameter<std::vector<boost::filesystem::path> > &, const std::string ="", const std::string = "");
+  virtual void queryKeyValuePair(Parameter<KeyValuePair> &, const std::string ="", const std::string = "");
+  virtual void queryKeyValuePairs(Parameter< std::vector<KeyValuePair> > &, const std::string ="", const std::string = "");
 
 protected:
@@ -69,4 +72,6 @@
   class IntTextQuery;
   class IntsTextQuery;
+  class KeyValuePairTextQuery;
+  class KeyValuePairsTextQuery;
   class MoleculeTextQuery;
   class MoleculesTextQuery;
