Index: src/Parameters/Parameter.hpp
===================================================================
--- src/Parameters/Parameter.hpp	(revision 6440c6215032e9cb753701bc186867d2e638c0de)
+++ src/Parameters/Parameter.hpp	(revision cf1d823b3a48bb18e9495df9853f602112c417ff)
@@ -19,4 +19,5 @@
 
 #include "Value.hpp"
+#include "ValueInterface.hpp"
 #include "ParameterInterface.hpp"
 
@@ -29,6 +30,6 @@
 template <typename T>
 class Parameter :
-  virtual public ParameterInterface,
-  virtual public Value<T>
+  public ParameterInterface,
+  public ValueInterface<T>
 {
 public:
@@ -44,9 +45,20 @@
   virtual ~Parameter();
 
-  // catch the following functions from Value<T> to add exception information
+  // wrap the following functions from ValueAsString to add exception information
+  bool isValidAsString(const std::string &_value) const throw(ParameterValidatorException);
   const std::string getAsString() const throw(ParameterValueException);
+  void setAsString(const std::string &_value) throw(ParameterValueException);
+
+  // wrap the following functions from Value<T> to add exception information
+  bool isValid(const T &_value) const throw(ParameterValidatorException);
   const T & get() const throw(ParameterValueException);
   void set(const T & _value) throw(ParameterValueException);
-  void setAsString(const std::string &_value) throw(ParameterValueException);
+  bool isSet() const
+  { return value.isSet(); }
+
+  const Validator<T> & getValidator() const
+  { return value.getValidator(); }
+  Validator<T> & getValidator()
+  { return value.getValidator(); }
 
   // comparator
@@ -59,4 +71,8 @@
 //private: // TODO...
   Parameter();
+
+private:
+  //!> contained value of this parameter
+  Value<T> value;
 };
 
Index: src/Parameters/ParameterInterface.hpp
===================================================================
--- src/Parameters/ParameterInterface.hpp	(revision 6440c6215032e9cb753701bc186867d2e638c0de)
+++ src/Parameters/ParameterInterface.hpp	(revision cf1d823b3a48bb18e9495df9853f602112c417ff)
@@ -24,5 +24,5 @@
  */
 class ParameterInterface :
-  virtual public ValueAsString,
+  public ValueAsString,
   public Clone<ParameterInterface>
 {
Index: src/Parameters/Parameter_impl.hpp
===================================================================
--- src/Parameters/Parameter_impl.hpp	(revision 6440c6215032e9cb753701bc186867d2e638c0de)
+++ src/Parameters/Parameter_impl.hpp	(revision cf1d823b3a48bb18e9495df9853f602112c417ff)
@@ -21,7 +21,7 @@
 Parameter<T>::Parameter(const Parameter<T> &instance) :
   ParameterInterface(instance.getName()),
-  Value<T>(instance.getValidator())
-{
-  Value<T>::set(instance.Value<T>::get());
+  value(instance.value.getValidator())
+{
+  value.set(instance.value.get());
 }
 
@@ -32,5 +32,5 @@
 Parameter<T>::Parameter() :
   ParameterInterface("__no_name__"),
-  Value<T>()
+  value()
 {};
 
@@ -41,5 +41,5 @@
 Parameter<T>::Parameter(const std::string &_name) :
   ParameterInterface(_name),
-  Value<T>()
+  value()
 {};
 
@@ -52,7 +52,7 @@
 Parameter<T>::Parameter(const std::string &_name, const T &_value) :
   ParameterInterface(_name),
-  Value<T>()
-{
-  Value<T>::set(_value);
+  value()
+{
+  value.set(_value);
 };
 
@@ -65,5 +65,5 @@
 Parameter<T>::Parameter(const std::string &_name, const Validator<T> &_Validator) :
   ParameterInterface(_name),
-  Value<T>(_Validator)
+  value(_Validator)
 {};
 
@@ -77,7 +77,7 @@
 Parameter<T>::Parameter(const std::string &_name, const Validator<T> &_Validator, const T &_value) :
   ParameterInterface(_name),
-  Value<T>(_Validator)
-{
-  Value<T>::set(_value);
+  value(_Validator)
+{
+  value.set(_value);
 };
 
@@ -90,5 +90,5 @@
 Parameter<T>::Parameter(const std::string &_name, const std::vector<T> &_ValidValues) :
   ParameterInterface(_name),
-  Value<T>(_ValidValues)
+  value(_ValidValues)
 {};
 
@@ -102,7 +102,7 @@
 Parameter<T>::Parameter(const std::string &_name, const std::vector<T> &_ValidValues, const T &_value) :
   ParameterInterface(_name),
-  Value<T>(_ValidValues)
-{
-  Value<T>::set(_value);
+  value(_ValidValues)
+{
+  value.set(_value);
 };
 
@@ -115,5 +115,5 @@
 Parameter<T>::Parameter(const std::string &_name, const range<T> &_ValidRange) :
   ParameterInterface(_name),
-  Value<T>(_ValidRange)
+  value(_ValidRange)
 {};
 
@@ -127,7 +127,7 @@
 Parameter<T>::Parameter(const std::string &_name, const range<T> &_ValidRange, const T &_value) :
   ParameterInterface(_name),
-  Value<T>(_ValidRange)
-{
-  Value<T>::set(_value);
+  value(_ValidRange)
+{
+  value.set(_value);
 };
 
@@ -139,5 +139,22 @@
 {};
 
-/** Catch call to Value<T>::getAsString() to add exception information.
+/** Catch call to value.isValidAsString() to add exception information.
+ *
+ * @param _value value to set to
+ */
+template<typename T>
+inline
+bool Parameter<T>::isValidAsString(const std::string &_value) const throw(ParameterValidatorException)
+{
+  try {
+    return value.isValidAsString(_value);
+  } catch(ParameterException &e) {
+    e << ParameterName(ParameterInterface::getName());
+    throw;
+  }
+}
+
+
+/** Catch call to value.getAsString() to add exception information.
  *
  * @return parameter value as string
@@ -147,27 +164,43 @@
 {
   try {
-    return Value<T>::getAsString();
-  } catch(ParameterException &e) {
-    e << ParameterName(ParameterInterface::getName());
-    throw;
-  }
-}
-
-/** Catch call to Value<T>::get() to add exception information.
+    return value.getAsString();
+  } catch(ParameterException &e) {
+    e << ParameterName(ParameterInterface::getName());
+    throw;
+  }
+}
+
+/** Catch call to value.isValid() to add exception information.
  *
  * @return parameter value as string
  */
 template<typename T>
+inline bool Parameter<T>::isValid(const T &_value) const throw(ParameterValidatorException)
+{
+  try {
+    return value.isValid(_value);
+  } catch(ParameterException &e) {
+    e << ParameterName(ParameterInterface::getName());
+    throw;
+  }
+}
+
+
+/** Catch call to value.get() to add exception information.
+ *
+ * @return parameter value as string
+ */
+template<typename T>
 inline const T & Parameter<T>::get() const throw(ParameterValueException)
 {
   try {
-    return Value<T>::get();
-  } catch(ParameterException &e) {
-    e << ParameterName(ParameterInterface::getName());
-    throw;
-  }
-}
-
-/** Catch call to Value<T>::set() to add exception information.
+    return value.get();
+  } catch(ParameterException &e) {
+    e << ParameterName(ParameterInterface::getName());
+    throw;
+  }
+}
+
+/** Catch call to value.set() to add exception information.
  *
  * @param _value value to set to
@@ -177,12 +210,12 @@
 {
   try {
-    Value<T>::set(_value);
-  } catch(ParameterException &e) {
-    e << ParameterName(ParameterInterface::getName());
-    throw;
-  }
-}
-
-/** Catch call to Value<T>::set() to add exception information.
+    value.set(_value);
+  } catch(ParameterException &e) {
+    e << ParameterName(ParameterInterface::getName());
+    throw;
+  }
+}
+
+/** Catch call to value.set() to add exception information.
  *
  * @param _value value to set to
@@ -192,5 +225,5 @@
 {
   try {
-    Value<T>::setAsString(_value);
+    value.setAsString(_value);
   } catch(ParameterException &e) {
     e << ParameterName(ParameterInterface::getName());
@@ -210,5 +243,5 @@
   try {
     status = status &&
-        (*dynamic_cast<const Value<T> *>(this) == dynamic_cast<const Value<T> &>(_instance));
+        (value == _instance.value);
     status = status && (ParameterInterface::getName() == _instance.ParameterInterface::getName());
   } catch(ParameterException &e) {
@@ -226,7 +259,7 @@
 inline ParameterInterface* Parameter<T>::clone() const
 {
-  Parameter<T> *instance = new Parameter<T>(ParameterInterface::getName(), Value<T>::getValidator());
-  if (Value<T>::ValueSet)
-    instance->set(Value<T>::get());
+  Parameter<T> *instance = new Parameter<T>(ParameterInterface::getName(), value.getValidator());
+  if (value.ValueSet)
+    instance->set(value.get());
   return instance;
 }
Index: src/Parameters/Value.hpp
===================================================================
--- src/Parameters/Value.hpp	(revision 6440c6215032e9cb753701bc186867d2e638c0de)
+++ src/Parameters/Value.hpp	(revision cf1d823b3a48bb18e9495df9853f602112c417ff)
@@ -59,5 +59,5 @@
 template <class T>
 class Value :
-  virtual public ValueAsString,
+  public ValueAsString,
   public ValueInterface<T>
 {
Index: src/Parser/MpqcParser_Parameters.hpp
===================================================================
--- src/Parser/MpqcParser_Parameters.hpp	(revision 6440c6215032e9cb753701bc186867d2e638c0de)
+++ src/Parser/MpqcParser_Parameters.hpp	(revision cf1d823b3a48bb18e9495df9853f602112c417ff)
@@ -16,4 +16,5 @@
 #include <list>
 #include <map>
+#include <string>
 #include <vector>
 
