Index: src/Actions/FragmentationAction/FragmentationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAction.cpp	(revision edecbab733e2e5f7d3ca8b8784d033c00dca3c0d)
+++ src/Actions/FragmentationAction/FragmentationAction.cpp	(revision 8a4b88626f69e80cb6fd4391cb051f4a17d8a519)
@@ -45,8 +45,8 @@
 
   LOG(0, "STATUS: Fragmenting molecular system with current connection matrix maximum bond distance "
-      << params.distance << " up to "
-      << params.order << " order. Fragment files begin with "
-      << params.prefix << " and are stored as: "
-      << params.types << "." << std::endl);
+      << params.distance.get() << " up to "
+      << params.order.get() << " order. Fragment files begin with "
+      << params.prefix.get() << " and are stored as: "
+      << params.types.get() << "." << std::endl);
 
   DepthFirstSearchAnalysis DFS;
@@ -54,10 +54,10 @@
     mol = iter->second;
     ASSERT(mol != NULL, "No molecule has been picked for fragmentation.");
-    LOG(2, "INFO: Fragmenting molecule with bond distance " << params.distance << " angstroem, order of " << params.order << ".");
+    LOG(2, "INFO: Fragmenting molecule with bond distance " << params.distance.get() << " angstroem, order of " << params.order.get() << ".");
     start = clock();
     if (mol->hasBondStructure()) {
-      Fragmentation Fragmenter(mol, params.DoSaturation ? DoSaturate : DontSaturate);
-      Fragmenter.setOutputTypes(params.types);
-      ExitFlag = Fragmenter.FragmentMolecule(params.order, params.prefix, DFS);
+      Fragmentation Fragmenter(mol, params.DoSaturation.get() ? DoSaturate : DontSaturate);
+      Fragmenter.setOutputTypes(params.types.get());
+      ExitFlag = Fragmenter.FragmentMolecule(params.order.get(), params.prefix.get(), DFS);
     }
     World::getInstance().setExitFlag(ExitFlag);
Index: src/Actions/FragmentationAction/FragmentationAction.def
===================================================================
--- src/Actions/FragmentationAction/FragmentationAction.def	(revision edecbab733e2e5f7d3ca8b8784d033c00dca3c0d)
+++ src/Actions/FragmentationAction/FragmentationAction.def	(revision 8a4b88626f69e80cb6fd4391cb051f4a17d8a519)
@@ -7,15 +7,28 @@
 
 // all includes and forward declarations necessary for non-integral types below
+#include <boost/assign.hpp> 
 #include <string>
 #include <vector>
 
+#include "Parameters/Validators/DummyValidator.hpp"
+#include "Parameters/Validators/GenericValidators.hpp"
+#include "Parameters/Validators/STLVectorValidator.hpp"
+#include "Parameters/Validators/Specific/BoxLengthValidator.hpp"
+#include "Parameters/Validators/Specific/ParserTypeValidator.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 (NODEFAULT) for each (undefined) default value
-#define paramtypes (std::string)(double)(int)(bool)(std::vector<std::string>)
+// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
+#define paramtypes (std::string)(double)(unsigned int)(bool)(std::vector<std::string>)
 #define paramtokens ("fragment-molecule")("distance")("order")("DoSaturate")("output-types")
 #define paramdescriptions ("prefix of each fragment file")("distance in space")("order of a discretization, dissection, ...")("do saturate dangling bonds with hydrogen")("type(s) of parsers that output fragment config files")
-#define paramdefaults (NODEFAULT)(NODEFAULT)(NODEFAULT)("1")("pcp tremolo xyz")
+#define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT(true)) (PARAM_DEFAULT(std::vector<std::string>(1, std::string("pcp"))))
 #define paramreferences (prefix)(distance)(order)(DoSaturation)(types)
+#define paramvalids \
+(DummyValidator< std::string >()) \
+(BoxLengthValidator()) \
+(DummyValidator< unsigned int >()) \
+(DummyValidator< bool >()) \
+(STLVectorValidator< std::vector<std::string> >(1, 10, ParserTypeValidator()))
 
 #undef statetypes
Index: src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision edecbab733e2e5f7d3ca8b8784d033c00dca3c0d)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 8a4b88626f69e80cb6fd4391cb051f4a17d8a519)
@@ -267,5 +267,6 @@
 
   // Phase One: obtain ids
-  controller.requestIds(params.host, params.port, params.jobfiles.size());
+  std::vector< boost::filesystem::path > jobfiles = params.jobfiles.get();
+  controller.requestIds(params.host.get(), params.port.get(), jobfiles.size());
   {
     io_service.reset();
@@ -276,6 +277,6 @@
   {
     std::vector<FragmentJob::ptr> jobs;
-    for (std::vector< boost::filesystem::path >::const_iterator iter = params.jobfiles.begin();
-        iter != params.jobfiles.end(); ++iter) {
+    for (std::vector< boost::filesystem::path >::const_iterator iter = jobfiles .begin();
+        iter != jobfiles .end(); ++iter) {
       const std::string &filename = (*iter).string();
       if (boost::filesystem::exists(filename)) {
@@ -283,5 +284,5 @@
         LOG(1, "INFO: Creating MPQCCommandJob with filename'"
             +filename+"', and id "+toString(next_id)+".");
-        parsejob(jobs, params.executable.string(), filename, next_id);
+        parsejob(jobs, params.executable.get().string(), filename, next_id);
       } else {
         ELOG(1, "Fragment job "+filename+" does not exist.");
@@ -290,5 +291,5 @@
     }
     controller.addJobs(jobs);
-    controller.sendJobs(params.host, params.port);
+    controller.sendJobs(params.host.get(), params.port.get());
   }
   {
@@ -299,5 +300,5 @@
   // Phase Three: calculate result
   size_t NoCalculatedResults = 0;
-  while (NoCalculatedResults != params.jobfiles.size()) {
+  while (NoCalculatedResults != jobfiles.size()) {
     // wait a bit
     boost::asio::deadline_timer timer(io_service);
@@ -305,5 +306,5 @@
     timer.wait();
     // then request status
-    controller.checkResults(params.host, params.port);
+    controller.checkResults(params.host.get(), params.port.get());
     {
       io_service.reset();
@@ -316,5 +317,5 @@
   }
   // Phase Three: get result
-  controller.receiveResults(params.host, params.port);
+  controller.receiveResults(params.host.get(), params.port.get());
   {
     io_service.reset();
@@ -324,10 +325,10 @@
   // Final phase: print result
   {
-    LOG(1, "INFO: Parsing fragment files from " << params.path << ".");
+    LOG(1, "INFO: Parsing fragment files from " << params.path.get() << ".");
     std::vector<FragmentResult::ptr> results = controller.getReceivedResults();
     printReceivedMPQCResults(
         results,
-        params.path,
-        getNoAtomsFromAdjacencyFile(params.path));
+        params.path.get(),
+        getNoAtomsFromAdjacencyFile(params.path.get()));
   }
   size_t Exitflag = controller.getExitflag();
Index: src/Actions/FragmentationAction/FragmentationAutomationAction.def
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.def	(revision edecbab733e2e5f7d3ca8b8784d033c00dca3c0d)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.def	(revision 8a4b88626f69e80cb6fd4391cb051f4a17d8a519)
@@ -11,12 +11,24 @@
 #include <vector>
 
+#include "Parameters/Validators/DummyValidator.hpp"
+#include "Parameters/Validators/Ops_Validator.hpp"
+#include "Parameters/Validators/STLVectorValidator.hpp"
+#include "Parameters/Validators/Specific/ParserFileValidator.hpp"
+#include "Parameters/Validators/Specific/FilePresentValidator.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 (NODEFAULT) for each (undefined) default value
+// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
 #define paramtypes (std::vector< boost::filesystem::path >)(std::string)(std::string)(std::string)(boost::filesystem::path)
 #define paramtokens ("fragment-jobs")("fragment-path")("server-address")("server-port")("fragment-executable")
 #define paramdescriptions ("vector of fragment files")("prefix of each fragment file")("hostname of server")("controller port of server")("executable to launch on clients")
-#define paramdefaults (NODEFAULT)(NODEFAULT)("127.0.0.1")("1026")(NODEFAULT)
+#define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT("127.0.0.1"))(PARAM_DEFAULT("1026"))(NOPARAM_DEFAULT)
 #define paramreferences (jobfiles)(path)(host)(port)(executable)
+#define paramvalids \
+(STLVectorValidator< std::vector< boost::filesystem::path > >(ParserFileValidator() && FilePresentValidator())) \
+(DummyValidator< std::string >()) \
+(DummyValidator< std::string >()) \
+(DummyValidator< std::string >()) \
+(DummyValidator< boost::filesystem::path >())
 
 #undef statetypes
