Index: src/Actions/FragmentationAction/FragmentationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAction.cpp	(revision 569e4266ba1a86102a1aa628754109f76b5f4ad9)
+++ src/Actions/FragmentationAction/FragmentationAction.cpp	(revision ac9ca46967e95fa2cebeb516a6755eef363225d5)
@@ -39,4 +39,7 @@
 #include "CodePatterns/Log.hpp"
 #include "Fragmentation/Exporters/ExportGraph_ToFiles.hpp"
+#ifdef HAVE_JOBMARKET
+#include "Fragmentation/Exporters/ExportGraph_ToJobs.hpp"
+#endif
 #include "Fragmentation/Fragmentation.hpp"
 #include "Fragmentation/Graph.hpp"
@@ -167,12 +170,24 @@
   }
 
-  // store molecule's fragment to file
   {
     const enum HydrogenSaturation saturation =  params.DoSaturation.get() ? DoSaturate : DontSaturate;
     const enum HydrogenTreatment treatment =  params.HowtoTreatHydrogen.get() ? ExcludeHydrogen : IncludeHydrogen;
-    ExportGraph_ToFiles exporter(TotalGraph, treatment, saturation);
-    exporter.setPrefix(params.prefix.get());
-    exporter.setOutputTypes(params.types.get());
-    exporter();
+    if (params.types.get().size() != 0) {
+      // store molecule's fragment to file
+      ExportGraph_ToFiles exporter(TotalGraph, treatment, saturation);
+      exporter.setPrefix(params.prefix.get());
+      exporter.setOutputTypes(params.types.get());
+      exporter();
+    } else {
+#ifdef HAVE_JOBMARKET
+      // store molecule's fragment in FragmentJobQueue
+      ExportGraph_ToJobs exporter(TotalGraph, treatment, saturation);
+      exporter.setLevel(params.level.get());
+      exporter();
+#else
+      ELOG(1, "No output file types specified and JobMarket support is not compiled in.");
+      return Action::failure;
+#endif
+    }
   }
 
Index: src/Actions/FragmentationAction/FragmentationAction.def
===================================================================
--- src/Actions/FragmentationAction/FragmentationAction.def	(revision 569e4266ba1a86102a1aa628754109f76b5f4ad9)
+++ src/Actions/FragmentationAction/FragmentationAction.def	(revision ac9ca46967e95fa2cebeb516a6755eef363225d5)
@@ -13,4 +13,5 @@
 #include "Parameters/Validators/DummyValidator.hpp"
 #include "Parameters/Validators/GenericValidators.hpp"
+#include "Parameters/Validators/RangeValidator.hpp"
 #include "Parameters/Validators/STLVectorValidator.hpp"
 #include "Parameters/Validators/Specific/BoxLengthValidator.hpp"
@@ -20,9 +21,9 @@
 // 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)(double)(unsigned int)(bool)(bool)(std::vector<std::string>)
-#define paramtokens ("fragment-molecule")("distance")("order")("DoSaturate")("ExcludeHydrogen")("output-types")
-#define paramdescriptions ("prefix of each fragment file")("distance in space")("order of a discretization, dissection, ...")("do saturate dangling bonds with hydrogen")("whether to exclude hydrogen in the bond graph dissection or not")("type(s) of parsers that output fragment config files")
-#define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT(true))(PARAM_DEFAULT(true))(PARAM_DEFAULT(std::vector<std::string>(1, std::string("pcp"))))
-#define paramreferences (prefix)(distance)(order)(DoSaturation)(HowtoTreatHydrogen)(types)
+#define paramtypes (std::string)(double)(unsigned int)(bool)(bool)(std::vector<std::string>)(unsigned int)
+#define paramtokens ("fragment-molecule")("distance")("order")("DoSaturate")("ExcludeHydrogen")("output-types")("grid-level")
+#define paramdescriptions ("prefix of each fragment file")("distance in space")("order of a discretization, dissection, ...")("do saturate dangling bonds with hydrogen")("whether to exclude hydrogen in the bond graph dissection or not")("type(s) of parsers that output fragment config files")("resolution of density sampling multigrid")
+#define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT(true))(PARAM_DEFAULT(true))(NOPARAM_DEFAULT)(PARAM_DEFAULT(5))
+#define paramreferences (prefix)(distance)(order)(DoSaturation)(HowtoTreatHydrogen)(types)(level)
 #define paramvalids \
 (DummyValidator< std::string >()) \
@@ -31,5 +32,6 @@
 (DummyValidator< bool >()) \
 (DummyValidator< bool >()) \
-(STLVectorValidator< std::vector<std::string> >(1, 10, ParserTypeValidator()))
+(STLVectorValidator< std::vector<std::string> >(0, 10, ParserTypeValidator())) \
+(RangeValidator< unsigned int >(1, 10))
 
 #undef statetypes
Index: src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 569e4266ba1a86102a1aa628754109f76b5f4ad9)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision ac9ca46967e95fa2cebeb516a6755eef363225d5)
@@ -57,4 +57,5 @@
 #include "Fragmentation/Automation/extractJobIds.hpp"
 #include "Fragmentation/Automation/FragmentationChargeDensity.hpp"
+#include "Fragmentation/Automation/FragmentJobQueue.hpp"
 #include "Fragmentation/Automation/FragmentationResults.hpp"
 #include "Fragmentation/Automation/MPQCFragmentController.hpp"
@@ -478,21 +479,47 @@
   // TODO: Have io_service run in second thread and merge with current again eventually
 
+  // check some things prior to work
+  enum OutputType_t {
+    ToFiles,
+    ToJobs,
+    ToNone
+  };
+  enum OutputType_t outputtype = ToNone;
+  if (params.jobfiles.get().size() != 0) {
+    // we got no job files, hence we use FragmentJobQueue
+    if (params.path.get().size() == 0) {
+      ELOG(1, "Missing path to fragment files.");
+      return Action::failure;
+    }
+    outputtype = ToFiles;
+
+    // parse in fragment-jobs if given
+    if(!FragmentJobQueue::getInstance().addJobsFromFiles(
+        params.jobfiles.get(),
+        params.level.get()))
+      return Action::failure;
+  } else {
+    if (params.path.get().size() != 0) {
+      ELOG(2, "Path to fragment given although we use FragmentJobQueue.");
+    }
+    outputtype = ToJobs;
+  }
+
   size_t Exitflag = 0;
   std::map<JobId_t, MPQCData> fragmentData;
   {
+    const size_t NumberJobs = FragmentJobQueue::getInstance().size();
     MPQCFragmentController mpqccontroller(io_service);
     mpqccontroller.setHost(params.host.get());
     mpqccontroller.setPort(params.port.get());
-    mpqccontroller.setLevel(params.level.get());
     // Phase One: obtain ids
-    std::vector< boost::filesystem::path > jobfiles = params.jobfiles.get();
-    mpqccontroller.requestIds(jobfiles.size());
-
-    // Phase Two: create and add MPQCJobs
-    if (!mpqccontroller.addJobsFromFiles(params.executable.get().string(), jobfiles))
-      return Action::failure;
+    mpqccontroller.requestIds(NumberJobs);
+
+    // Phase Two: add MPQCJobs and send
+    mpqccontroller.addJobsFromQueue();
+    mpqccontroller.run();
 
     // Phase Three: calculate result
-    mpqccontroller.waitforResults(jobfiles.size());
+    mpqccontroller.waitforResults(NumberJobs);
     mpqccontroller.getResults(fragmentData);
 
@@ -572,5 +599,5 @@
 
   // append all keysets to homology file
-  if (Exitflag == 0) {
+  if ((Exitflag == 0) && (!params.homology_file.get().empty())) {
     const boost::filesystem::path &homology_file = params.homology_file.get();
     if (homology_file.string() != "") {
Index: src/Actions/FragmentationAction/FragmentationAutomationAction.def
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.def	(revision 569e4266ba1a86102a1aa628754109f76b5f4ad9)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.def	(revision ac9ca46967e95fa2cebeb516a6755eef363225d5)
@@ -24,5 +24,5 @@
 #define paramtokens ("fragment-jobs")("fragment-path")("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")("homology-file")
 #define paramdescriptions ("vector of fragment files")("prefix of each fragment file")("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("interpolation degree for getting the nuclei potential from the grid")("whether to calculate long-range contributions")("path to file containing homology containerto append to")
-#define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT("127.0.0.1"))(PARAM_DEFAULT("1026"))(NOPARAM_DEFAULT)(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))
+#define paramdefaults (NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT("127.0.0.1"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("mpqc"))(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))
 #define paramreferences (jobfiles)(path)(host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)(homology_file)
 #define paramvalids \
Index: src/Actions/FragmentationAction/StoreSaturatedFragmentAction.def
===================================================================
--- src/Actions/FragmentationAction/StoreSaturatedFragmentAction.def	(revision 569e4266ba1a86102a1aa628754109f76b5f4ad9)
+++ src/Actions/FragmentationAction/StoreSaturatedFragmentAction.def	(revision ac9ca46967e95fa2cebeb516a6755eef363225d5)
@@ -20,5 +20,5 @@
 #define paramtokens ("store-saturated-fragment")("DoSaturate")("output-types")
 #define paramdescriptions ("name of fragment file")("do saturate dangling bonds with hydrogen")("type(s) of parsers that output fragment config files")
-#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT(true))(PARAM_DEFAULT(std::vector<std::string>(1, std::string("pcp"))))
+#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT(true))(NOPARAM_DEFAULT)
 #define paramreferences (prefix)(DoSaturation)(types)
 #define paramvalids \
