Index: src/Parameters/Makefile.am
===================================================================
--- src/Parameters/Makefile.am	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
+++ src/Parameters/Makefile.am	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
@@ -0,0 +1,68 @@
+# PLEASE adhere to the alphabetical ordering in this Makefile!
+# Also indentation by a single tab
+
+
+PARAMETERSOURCE = \
+	Parameters/Validators/Specific/BoxLengthValidator.cpp
+
+PARAMETERHEADER = \
+	Parameters/Parameter.hpp \
+	Parameters/Parameter_impl.hpp \
+	Parameters/ParameterAsString.hpp \
+	Parameters/ParameterInterface.hpp \
+	Parameters/Validators/DiscreteValidator.hpp \
+	Parameters/Validators/DiscreteValidator_impl.hpp \
+	Parameters/Validators/Ops_Validator.hpp \
+	Parameters/Validators/Ops_Validator_impl.hpp \
+	Parameters/Validators/RangeValidator.hpp \
+	Parameters/Validators/RangeValidator_impl.hpp \
+	Parameters/Validators/STLVectorValidator.hpp \
+	Parameters/Validators/Validator.hpp \
+	Parameters/Validators/Specific/BoxLengthValidator.hpp \
+	Parameters/Validators/Specific/ElementValidator.hpp \
+	Parameters/Validators/Specific/FilePresentValidator.hpp \
+	Parameters/Value.hpp \
+	Parameters/Value_impl.hpp \
+	Parameters/ValueAsString.hpp \
+	Parameters/ValueInterface.hpp
+
+noinst_LTLIBRARIES += libMolecuilderParameters.la
+libMolecuilderParameters_la_includedir = $(includedir)/MoleCuilder/Parameters/
+
+nobase_libMolecuilderParameters_la_include_HEADERS = ${PARAMETERHEADER}
+
+## Define the source file list for the "libexample-@MOLECUILDER_API_VERSION@.la"
+## target.  Note that @MOLECUILDER_API_VERSION@ is not interpreted by Automake and
+## will therefore be treated as if it were literally part of the target name,
+## and the variable name derived from that.
+## The file extension .cc is recognized by Automake, and makes it produce
+## rules which invoke the C++ compiler to produce a libtool object file (.lo)
+## from each source file.  Note that it is not necessary to list header files
+## which are already listed elsewhere in a _HEADERS variable assignment.
+libMolecuilderParameters_la_SOURCES = ${PARAMETERSOURCE}
+
+## Instruct libtool to include ABI version information in the generated shared
+## library file (.so).  The library ABI version is defined in configure.ac, so
+## that all version information is kept in one place.
+#libMolecuilderParameters_la_LDFLAGS = -version-info $(MOLECUILDER_SO_VERSION)
+
+## The generated configuration header is installed in its own subdirectory of
+## $(libdir).  The reason for this is that the configuration information put
+## into this header file describes the target platform the installed library
+## has been built for.  Thus the file must not be installed into a location
+## intended for architecture-independent files, as defined by the Filesystem
+## Hierarchy Standard (FHS).
+## The nodist_ prefix instructs Automake to not generate rules for including
+## the listed files in the distribution on 'make dist'.  Files that are listed
+## in _HEADERS variables are normally included in the distribution, but the
+## configuration header file is generated at configure time and should not be
+## shipped with the source tarball.
+#libMolecuilderParameters_libincludedir = $(libdir)/MoleCuilder/include
+#nodist_libMolecuilderParameters_libinclude_HEADERS = $(top_builddir)/libmolecuilder_config.h
+
+## Install the generated pkg-config file (.pc) into the expected location for
+## architecture-dependent package configuration information.  Occasionally,
+## pkg-config files are also used for architecture-independent data packages,
+## in which case the correct install location would be $(datadir)/pkgconfig.
+#pkgconfigdir = $(libdir)/pkgconfig
+#pkgconfig_DATA = $(top_builddir)/MoleCuilder.pc
Index: src/Parameters/Validators/STLVectorValidator.hpp
===================================================================
--- src/Parameters/Validators/STLVectorValidator.hpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
+++ src/Parameters/Validators/STLVectorValidator.hpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
@@ -0,0 +1,145 @@
+/*
+ * STLVectorValidator.hpp
+ *
+ *  Created on: May 9, 2012
+ *      Author: heber
+ */
+
+#ifndef STLVECTORVALIDATOR_HPP_
+#define STLVECTORVALIDATOR_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "DummyValidator.hpp"
+#include "RangeValidator.hpp"
+#include "Validator.hpp"
+
+#include <vector>
+
+#include "CodePatterns/Range.hpp"
+
+/** This class is a combination of \ref Validator<size_t> on the number of entries in
+ * the vector while each element is checked with a given Validator<value_type>.
+ */
+template <class T>
+class STLVectorValidator : public Validator< T >
+{
+  //!> this should throw an error at compile time if T is not a container
+  typedef typename T::value_type value_type;
+
+public:
+  /** Constructor for class STLVectorValidator, number of elements given by a range.
+   *
+   * @param validator validator for the single element
+   * @param range range of valid number of elements
+   */
+  STLVectorValidator(const range<size_t> &range, const Validator<value_type> &validator) :
+    ElementwiseValidator(validator.clone()),
+    NumberOfElementsValidator(new RangeValidator<size_t>(range))
+  {}
+
+  /** Constructor for class STLVectorValidator, number of elements given by a range.
+   *
+   * @param range range of valid number of elements
+   */
+  STLVectorValidator(const range<size_t> &range) :
+    ElementwiseValidator(new DummyValidator<value_type>()),
+    NumberOfElementsValidator(new RangeValidator<size_t>(range))
+  {}
+
+  /** Constructor for class STLVectorValidator, number of elements given by interval [\a min,\a max).
+   *
+   * @param validator validator for the single element
+   * @param min lower bound of interval for valid number of elements
+   * @param max upper bound of interval for valid number of elements
+   */
+  STLVectorValidator(const size_t min, const size_t max, const Validator<value_type> &validator) :
+    ElementwiseValidator(validator.clone()),
+    NumberOfElementsValidator(new RangeValidator<size_t>(min,max))
+  {}
+
+  /** Constructor for class STLVectorValidator, number of elements given by interval [\a min,\a max).
+   *
+   * @param min lower bound of interval for valid number of elements
+   * @param max upper bound of interval for valid number of elements
+   */
+  STLVectorValidator(const size_t min, const size_t max) :
+    ElementwiseValidator(new DummyValidator<value_type>()),
+    NumberOfElementsValidator(new RangeValidator<size_t>(min,max))
+  {}
+
+  /** Constructor for class STLVectorValidator, any number of elements is allowed.
+   *
+   * @param validator validator for the single element
+   */
+  STLVectorValidator(const Validator<value_type> &validator) :
+    ElementwiseValidator(validator.clone()),
+    NumberOfElementsValidator(new DummyValidator<size_t>())
+  {}
+
+  /** Constructor for class STLVectorValidator, any number of unrestricted elements is allowed.
+   *
+   */
+  STLVectorValidator() :
+    ElementwiseValidator(new DummyValidator<value_type>()),
+    NumberOfElementsValidator(new DummyValidator<size_t>())
+  {}
+
+  /** Destructor for class STLVectorValidator
+   *
+   */
+  ~STLVectorValidator()
+  {
+    delete ElementwiseValidator;
+    delete NumberOfElementsValidator;
+  }
+
+  bool isValid(const T & _value) const
+  {
+    bool status = NumberOfElementsValidator->isValid(_value.size());
+    for (typename std::vector<value_type>::const_iterator iter = _value.begin();
+        iter != _value.end(); ++iter) {
+      status = status && ElementwiseValidator->isValid(*iter);
+    }
+    return status;
+  }
+  bool operator==(const Validator<T> &_instance) const
+  {
+    const STLVectorValidator<T> *inst = dynamic_cast<const STLVectorValidator<T> *>(&_instance);
+    bool status = *NumberOfElementsValidator == *inst->NumberOfElementsValidator;
+    status = status && *ElementwiseValidator == *inst->ElementwiseValidator;
+    return status;
+  }
+
+  Validator<T>* clone() const
+  {
+    Validator<T> *inst = new STLVectorValidator<T>(*NumberOfElementsValidator, *ElementwiseValidator);
+    return inst;
+  }
+
+private:
+  /** Constructor for class STLVectorValidator, number of elements given by \ref RangeValidator.
+   *
+   * \note Is only used in STLVectorValidator::clone() as it may lead to ambiguities
+   *  with a signature of two validators in case value_type equals size_t.
+   *
+   * @param validator validator for the single element
+   * @param rangevalidator validator for the valid number of elements
+   */
+  STLVectorValidator(const Validator<size_t> &rangevalidator, const Validator<value_type> &validator) :
+    ElementwiseValidator(validator.clone()),
+    NumberOfElementsValidator(dynamic_cast< Validator<size_t> *>(rangevalidator.clone()))
+  {}
+
+
+private:
+  Validator<value_type> *ElementwiseValidator;
+  Validator<size_t> *NumberOfElementsValidator;
+};
+
+
+#endif /* STLVECTORVALIDATOR_HPP_ */
Index: src/Parameters/Validators/Specific/BoxLengthValidator.cpp
===================================================================
--- src/Parameters/Validators/Specific/BoxLengthValidator.cpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
+++ src/Parameters/Validators/Specific/BoxLengthValidator.cpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+/*
+ * BoxLengthValidator.cpp
+ *
+ *  Created on: May 9, 2012
+ *      Author: heber
+ */
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "BoxLengthValidator.hpp"
+
+#include "LinearAlgebra/RealSpaceMatrix.hpp"
+
+#include "Box.hpp"
+#include "World.hpp"
+
+bool BoxLengthValidator::isValid(const double & _value) const
+{
+  const RealSpaceMatrix &M = World::getInstance().getDomain().getM();
+  bool status = true;
+  for (size_t i=0;i<NDIM;++i)
+    status = status && (_value >=0) && (M.column(i).NormSquared() > _value);
+  return status;
+}
+
+bool BoxLengthValidator::operator==(const Validator<double> &_instance) const
+{
+  const BoxLengthValidator *inst =
+      dynamic_cast<const BoxLengthValidator *>(&_instance);
+  if (inst)
+    return true;
+  else
+    return false;
+}
+
+Validator< double >* BoxLengthValidator::clone() const
+{
+  Validator< double > *inst =
+      new BoxLengthValidator();
+  return inst;
+}
Index: src/Parameters/Validators/Specific/BoxLengthValidator.hpp
===================================================================
--- src/Parameters/Validators/Specific/BoxLengthValidator.hpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
+++ src/Parameters/Validators/Specific/BoxLengthValidator.hpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
@@ -0,0 +1,26 @@
+/*
+ * BoxLengthValidator.hpp
+ *
+ *  Created on: May 9, 2012
+ *      Author: heber
+ */
+
+#ifndef BOXLENGTHVALIDATOR_HPP_
+#define BOXLENGTHVALIDATOR_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Parameters/Validators/Validator.hpp"
+
+class BoxLengthValidator : public Validator< double >
+{
+  bool isValid(const double & _value) const;
+  bool operator==(const Validator<double> &_instance) const;
+  Validator< double >* clone() const;;
+};
+
+#endif /* BOXLENGTHVALIDATOR_HPP_ */
Index: src/Parameters/Validators/Specific/ElementValidator.hpp
===================================================================
--- src/Parameters/Validators/Specific/ElementValidator.hpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
+++ src/Parameters/Validators/Specific/ElementValidator.hpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
@@ -0,0 +1,25 @@
+/*
+ * ElementValidator.hpp
+ *
+ *  Created on: May 9, 2012
+ *      Author: heber
+ */
+
+#ifndef ELEMENTVALIDATOR_HPP_
+#define ELEMENTVALIDATOR_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Parameters/Validators/DummyValidator.hpp"
+
+class element;
+
+class ElementValidator : public DummyValidator<const element *>
+{};
+
+
+#endif /* ELEMENTVALIDATOR_HPP_ */
Index: src/Parameters/Validators/Specific/FilePresentValidator.hpp
===================================================================
--- src/Parameters/Validators/Specific/FilePresentValidator.hpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
+++ src/Parameters/Validators/Specific/FilePresentValidator.hpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
@@ -0,0 +1,46 @@
+/*
+ * FilePresentValidator.hpp
+ *
+ *  Created on: May 9, 2012
+ *      Author: heber
+ */
+
+#ifndef FILEPRESENTVALIDATOR_HPP_
+#define FILEPRESENTVALIDATOR_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Parameters/Validators/DummyValidator.hpp"
+
+#include <boost/filesystem.hpp>
+
+class FilePresentValidator : public Validator< boost::filesystem::path >
+{
+  bool isValid(const boost::filesystem::path & _value) const
+  {
+    return boost::filesystem::exists(_value);
+  }
+  bool operator==(const Validator<boost::filesystem::path> &_instance) const
+  {
+    const FilePresentValidator *inst =
+        dynamic_cast<const FilePresentValidator *>(&_instance);
+    if (inst)
+      return true;
+    else
+      return false;
+  }
+
+  Validator< boost::filesystem::path >* clone() const
+  {
+    Validator< boost::filesystem::path > *inst =
+        new FilePresentValidator();
+    return inst;
+  }
+};
+
+
+#endif /* FILEPRESENTVALIDATOR_HPP_ */
Index: src/Parameters/unittests/stubs/BoxLengthValidatorStub.cpp
===================================================================
--- src/Parameters/unittests/stubs/BoxLengthValidatorStub.cpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
+++ src/Parameters/unittests/stubs/BoxLengthValidatorStub.cpp	(revision 8453b3ae6d0c496d19f44e98134c48a38e3c79da)
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+
+/*
+ * BoxLengthValidatorStub.cpp
+ *
+ *  Created on: Jun 6, 2012
+ *      Author: heber
+ */
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "Parameters/Validators/Specific/BoxLengthValidator.hpp"
+
+bool BoxLengthValidator::isValid(const double & _value) const
+{
+  return true;
+}
+
+bool BoxLengthValidator::operator==(const Validator<double> &_instance) const
+{
+  const BoxLengthValidator *inst =
+      dynamic_cast<const BoxLengthValidator *>(&_instance);
+  if (inst)
+    return true;
+  else
+    return false;
+}
+
+Validator< double >* BoxLengthValidator::clone() const
+{
+  Validator< double > *inst =
+      new BoxLengthValidator();
+  return inst;
+}
