Index: src/Actions/ParserAction/SetParserParametersAction.cpp
===================================================================
--- src/Actions/ParserAction/SetParserParametersAction.cpp	(revision 4475b2ded342e7235968f2eba5567ad7d91a19d4)
+++ src/Actions/ParserAction/SetParserParametersAction.cpp	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
@@ -27,4 +27,5 @@
 #include "Actions/ValueStorage.hpp"
 
+#include <algorithm>
 #include <iostream>
 #include <string>
@@ -50,5 +51,7 @@
 
   // obtain information
-  std::stringstream newparamstream(params.newparams.get());
+  std::stringstream newparamstream;
+  const std::vector< std::string > keyvalues = params.newparams.get();
+  std::for_each(keyvalues.begin(), keyvalues.end(), newparamstream << boost::lambda::_1 << ";");
   newparamstream >> *parameters;
 
@@ -72,5 +75,7 @@
   ParserTypes type = FormatParserStorage::getInstance().getTypeFromName(state->params.parsername.get());
   FormatParser_Parameters *parser = FormatParserStorage::getInstance().get(type).parameters;
-  std::stringstream newparamstream(state->params.newparams.get());
+  std::stringstream newparamstream;
+  const std::vector< std::string > keyvalues = state->params.newparams.get();
+  std::for_each(keyvalues.begin(), keyvalues.end(), newparamstream << boost::lambda::_1 << ";");
   newparamstream >> *parser;
 
Index: src/Actions/ParserAction/SetParserParametersAction.def
===================================================================
--- src/Actions/ParserAction/SetParserParametersAction.def	(revision 4475b2ded342e7235968f2eba5567ad7d91a19d4)
+++ src/Actions/ParserAction/SetParserParametersAction.def	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
@@ -7,13 +7,15 @@
 
 // all includes and forward declarations necessary for non-integral types below
+#include <vector>
+#include <string>
 
-
+#include "Parameters/Validators/STLVectorValidator.hpp"
+#include "Parameters/Validators/Specific/KeyValueValidator.hpp"
 #include "Parameters/Validators/Specific/ParserTypeValidator.hpp"
-#include "Parameters/Validators/Specific/KeyValueValidator.hpp"
 
 // i.e. there is an integer with variable name Z that can be found in
 // ValueStorage by the token "Z" -> first column: int, Z, "Z"
 // "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
-#define paramtypes (std::string)(std::string)
+#define paramtypes (std::string)(std::vector<std::string>)
 #define paramtokens ("set-parser-parameters")("parser-parameters")
 #define paramdescriptions ("name of the parser to change")("parameter (key = value;)")
@@ -22,5 +24,5 @@
 #define paramvalids \
 (ParserTypeValidator())\
-(KeyValueValidator())
+(STLVectorValidator< std::vector<std::string> >(1, 99, KeyValueValidator()))
 
 #define statetypes (std::string)
Index: src/Parameters/Makefile.am
===================================================================
--- src/Parameters/Makefile.am	(revision 4475b2ded342e7235968f2eba5567ad7d91a19d4)
+++ src/Parameters/Makefile.am	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
@@ -11,4 +11,5 @@
 	Parameters/Validators/Specific/BoxVectorValidator.cpp \
 	Parameters/Validators/Specific/FileSuffixValidator.cpp \
+	Parameters/Validators/Specific/KeyValueValidator.cpp \
 	Parameters/Validators/Specific/RealSpaceMatrixInvertibleValidator.cpp \
 	Parameters/Validators/Specific/RealSpaceMatrixSymmetricValidator.cpp \
Index: src/Parameters/Validators/Specific/KeyValueValidator.cpp
===================================================================
--- src/Parameters/Validators/Specific/KeyValueValidator.cpp	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
+++ src/Parameters/Validators/Specific/KeyValueValidator.cpp	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
@@ -0,0 +1,67 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * KeyValueValidator.cpp
+ *
+ *  Created on: May 14, 2012
+ *      Author: ankele
+ */
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "KeyValueValidator.hpp"
+
+bool KeyValueValidator::isValid(const std::string & _value) const
+{
+  size_t pos0 = _value.find("=");
+  if (pos0 == std::string::npos)
+    // No "=" found.
+    return false;
+
+  if (pos0 == 0)
+    // Nothing before "=".
+    return false;
+
+  if (pos0 == _value.size() - 1)
+    // Nothing after "=".
+    return false;
+
+  size_t pos1 = _value.find("=", pos0 + 1);
+  if (pos1 != std::string::npos)
+    // Second "=" found.
+    return false;
+
+  return true;
+}
+
+bool KeyValueValidator::operator==(const Validator<std::string> &_instance) const
+{
+  const KeyValueValidator *inst =
+      dynamic_cast<const KeyValueValidator *>(&_instance);
+  if (inst)
+    return true;
+  else
+    return false;
+}
+
+Validator< std::string >* KeyValueValidator::clone() const
+{
+  Validator< std::string > *inst =
+      new KeyValueValidator();
+  return inst;
+}
+
+
+
+
Index: src/Parameters/Validators/Specific/KeyValueValidator.hpp
===================================================================
--- src/Parameters/Validators/Specific/KeyValueValidator.hpp	(revision 4475b2ded342e7235968f2eba5567ad7d91a19d4)
+++ src/Parameters/Validators/Specific/KeyValueValidator.hpp	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
@@ -17,11 +17,15 @@
 #include <string>
 
-#include "Parameters/Validators/DummyValidator.hpp"
+#include "Parameters/Validators/Validator.hpp"
 
 /** This validator checks whether the given string is a valid key value
  * concatenation of the following pattern "...=...;"
  */
-class KeyValueValidator : public DummyValidator<std::string>
-{};
+class KeyValueValidator : public Validator<std::string>
+{
+  bool isValid(const std::string & _value) const;
+  bool operator==(const Validator<std::string> &_instance) const;
+  Validator< std::string >* clone() const;
+};
 
 
Index: tests/regression/Makefile.am
===================================================================
--- tests/regression/Makefile.am	(revision 4475b2ded342e7235968f2eba5567ad7d91a19d4)
+++ tests/regression/Makefile.am	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
@@ -127,4 +127,5 @@
 	$(srcdir)/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-basis.at \
 	$(srcdir)/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-maxiterations.at \
+	$(srcdir)/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-none.at \
 	$(srcdir)/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-theory.at \
 	$(srcdir)/Parser/SetParameters/Psi3/testsuite-parser-set-parameters-psi3-reference.at \
Index: tests/regression/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-none.at
===================================================================
--- tests/regression/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-none.at	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
+++ tests/regression/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-none.at	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
@@ -0,0 +1,8 @@
+### MPQC basis
+
+AT_SETUP([Parser - MPQC - set none fails])
+AT_KEYWORDS([options mpqc set-mpqc-parameters])
+
+AT_CHECK([../../molecuilder -i test.in -o mpqc -l ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/pre/test.xyz -v 1 --set-parser-parameters "mpqc"], 5, [stdout], [ignore])
+
+AT_CLEANUP
Index: tests/regression/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc.at
===================================================================
--- tests/regression/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc.at	(revision 4475b2ded342e7235968f2eba5567ad7d91a19d4)
+++ tests/regression/Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc.at	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
@@ -4,5 +4,5 @@
 AT_KEYWORDS([options mpqc set-mpqc-parameters basis maxiter theory])
 
-AT_CHECK([../../molecuilder -i ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/pre/testCLHF.in -v 1 --set-parser-parameters "mpqc" --parser-parameters "basis = 4-31G;maxiter=499;theory=CLKS;"], 0, [stdout], [ignore])
+AT_CHECK([../../molecuilder -i ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/pre/testCLHF.in -v 1 --set-parser-parameters "mpqc" --parser-parameters "basis = 4-31G" "maxiter=499" "theory=CLKS"], 0, [stdout], [ignore])
 AT_CHECK([file=testCLHF.in; diff -I '%.*' $file ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/post/testCLHF.in], 0, [ignore], [ignore])
 
@@ -14,5 +14,5 @@
 AT_KEYWORDS([options mpqc set-mpqc-parameters basis maxiter theory undo])
 
-AT_CHECK([../../molecuilder -i ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/pre/testCLHF.in -v 1 --set-parser-parameters "mpqc" --parser-parameters "basis = 4-31G;maxiter=499;theory=CLKS;" --undo], 0, [stdout], [ignore])
+AT_CHECK([../../molecuilder -i ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/pre/testCLHF.in -v 1 --set-parser-parameters "mpqc" --parser-parameters "basis = 4-31G" "maxiter=499" "theory=CLKS" --undo], 0, [stdout], [ignore])
 AT_CHECK([file=testCLHF.in; diff -I '%.*' $file ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/post/testCLHF.in], 0, [ignore], [ignore])
 
@@ -23,5 +23,5 @@
 AT_KEYWORDS([options mpqc set-mpqc-parameters basis maxiter theory redo])
 
-AT_CHECK([../../molecuilder -i ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/pre/testCLHF.in -v 1 --set-parser-parameters "mpqc" --parser-parameters "basis = 4-31G;maxiter=499;theory=CLKS;" --undo --redo], 0, [stdout], [ignore])
+AT_CHECK([../../molecuilder -i ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/pre/testCLHF.in -v 1 --set-parser-parameters "mpqc" --parser-parameters "basis = 4-31G" "maxiter=499" "theory=CLKS" --undo --redo], 0, [stdout], [ignore])
 AT_CHECK([file=testCLHF.in; diff -I '%.*' $file ${abs_top_srcdir}/tests/regression/Parser/SetParameters/Mpqc/post/testCLHF.in], 0, [ignore], [ignore])
 
Index: tests/regression/Parser/testsuite-parser.at
===================================================================
--- tests/regression/Parser/testsuite-parser.at	(revision 4475b2ded342e7235968f2eba5567ad7d91a19d4)
+++ tests/regression/Parser/testsuite-parser.at	(revision 770ec6003099f24173720a698cd2f3619fd73d1a)
@@ -10,4 +10,5 @@
 # set mpqc basis, theory and maxiter
 m4_include([Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc.at])
+m4_include([Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-none.at])
 m4_include([Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-basis.at])
 m4_include([Parser/SetParameters/Mpqc/testsuite-parser-set-parameters-mpqc-maxiterations.at])
