Index: src/Actions/PotentialAction/FitCompoundPotentialAction.cpp
===================================================================
--- src/Actions/PotentialAction/FitCompoundPotentialAction.cpp	(revision 98d166e8fbc83bccb5843ecc5d4296f2c25488c0)
+++ src/Actions/PotentialAction/FitCompoundPotentialAction.cpp	(revision f1eabd03d00ab44fb84ebc758d0ebfc85d6dee6d)
@@ -49,8 +49,4 @@
 #include "Fragmentation/Homology/HomologyGraph.hpp"
 #include "Fragmentation/Summation/SetValues/Fragment.hpp"
-#include "Potentials/Exceptions.hpp"
-#include "Potentials/PotentialDeserializer.hpp"
-#include "Potentials/PotentialFactory.hpp"
-#include "Potentials/PotentialRegistry.hpp"
 #include "Potentials/PotentialTrainer.hpp"
 #include "Potentials/SerializablePotential.hpp"
@@ -65,44 +61,5 @@
 
 ActionState::ptr PotentialFitCompoundPotentialAction::performCall() {
-  // fragment specifies the homology fragment to use
-  SerializablePotential::ParticleTypes_t fragmentnumbers =
-      PotentialTrainer::getNumbersFromElements(params.fragment.get());
-
-  // either charges and a potential is specified or a file
-  if (boost::filesystem::exists(params.potential_file.get())) {
-    std::ifstream returnstream(params.potential_file.get().string().c_str());
-    if (returnstream.good()) {
-      try {
-        PotentialDeserializer deserialize(returnstream);
-        deserialize();
-      } catch (SerializablePotentialMissingValueException &e) {
-        if (const std::string *key = boost::get_error_info<SerializablePotentialKey>(e))
-          STATUS("Missing value when parsing information for potential "+*key+".");
-        else
-          STATUS("Missing value parsing information for potential with unknown key.");
-        return Action::failure;
-      } catch (SerializablePotentialIllegalKeyException &e) {
-        if (const std::string *key = boost::get_error_info<SerializablePotentialKey>(e))
-          STATUS("Illegal key parsing information for potential "+*key+".");
-        else
-          STATUS("Illegal key parsing information for potential with unknown key.");
-        return Action::failure;
-      }
-    } else {
-      STATUS("Failed to parse from "+params.potential_file.get().string()+".");
-      return Action::failure;
-    }
-    returnstream.close();
-
-    LOG(0, "STATUS: I'm training now a set of potentials parsed from "
-        << params.potential_file.get().string() << " on a fragment "
-        << fragmentnumbers << " on data from World's homologies.");
-
-  } else {
-      STATUS("No existing potential file given!");
-      return Action::failure;
-  }
-
-  // parse homologies into container
+  // get homologies container
   HomologyContainer &homologies = World::getInstance().getHomologies();
 
@@ -118,4 +75,8 @@
   }
 
+  // fragment specifies the homology fragment to use
+  SerializablePotential::ParticleTypes_t fragmentnumbers =
+      PotentialTrainer::getNumbersFromElements(params.fragment.get());
+
   // then we ought to pick the right HomologyGraph ...
   const HomologyGraph graph =
@@ -129,5 +90,5 @@
   }
 
-  // training
+  // next we use the set of homologous fragments for training from the present potentials
   PotentialTrainer trainer;
   const bool status = trainer(
Index: src/Actions/PotentialAction/FitCompoundPotentialAction.def
===================================================================
--- src/Actions/PotentialAction/FitCompoundPotentialAction.def	(revision 98d166e8fbc83bccb5843ecc5d4296f2c25488c0)
+++ src/Actions/PotentialAction/FitCompoundPotentialAction.def	(revision f1eabd03d00ab44fb84ebc758d0ebfc85d6dee6d)
@@ -17,5 +17,4 @@
 #include "Parameters/Validators/STLVectorValidator.hpp"
 #include "Parameters/Validators/Specific/ElementValidator.hpp"
-#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
 #include "Parameters/Validators/Specific/FileSuffixValidator.hpp"
 #include "Parameters/Validators/Specific/PotentialTypeValidator.hpp"
@@ -31,5 +30,5 @@
 #define paramvalids \
 (DummyValidator<boost::filesystem::path>()) \
-(FilePresentValidator() && FileSuffixValidator("potentials")) \
+(FileSuffixValidator("potentials")) \
 (STLVectorValidator< std::vector<const element *> >(1,99, ElementValidator())) \
 (PositiveValidator<unsigned int>()) \
Index: src/Actions/PotentialAction/ParsePotentialsAction.cpp
===================================================================
--- src/Actions/PotentialAction/ParsePotentialsAction.cpp	(revision f1eabd03d00ab44fb84ebc758d0ebfc85d6dee6d)
+++ src/Actions/PotentialAction/ParsePotentialsAction.cpp	(revision f1eabd03d00ab44fb84ebc758d0ebfc85d6dee6d)
@@ -0,0 +1,114 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2014 Frederik Heber. All rights reserved.
+ * 
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * ParsePotentialsAction.cpp
+ *
+ *  Created on: Sep 12, 2014
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// include headers that implement a archive in simple text format
+// and before MemDebug due to placement new
+#include <boost/archive/text_oarchive.hpp>
+#include <boost/archive/text_iarchive.hpp>
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "Actions/PotentialAction/ParsePotentialsAction.hpp"
+
+#include <boost/filesystem.hpp>
+#include <fstream>
+
+#include "CodePatterns/Log.hpp"
+
+#include "Potentials/Exceptions.hpp"
+#include "Potentials/PotentialDeserializer.hpp"
+
+using namespace MoleCuilder;
+
+// and construct the stuff
+#include "ParsePotentialsAction.def"
+#include "Action_impl_pre.hpp"
+/** =========== define the function ====================== */
+
+ActionState::ptr PotentialParsePotentialsAction::performCall()
+{
+  if (boost::filesystem::exists(params.potential_file.get())) {
+    std::ifstream returnstream(params.potential_file.get().string().c_str());
+    if (returnstream.good()) {
+      try {
+        PotentialDeserializer deserialize(returnstream);
+        deserialize();
+      } catch (SerializablePotentialMissingValueException &e) {
+        if (const std::string *key = boost::get_error_info<SerializablePotentialKey>(e))
+          STATUS("Missing value when parsing information for potential "+*key+".");
+        else
+          STATUS("Missing value parsing information for potential with unknown key.");
+        return Action::failure;
+      } catch (SerializablePotentialIllegalKeyException &e) {
+        if (const std::string *key = boost::get_error_info<SerializablePotentialKey>(e))
+          STATUS("Illegal key parsing information for potential "+*key+".");
+        else
+          STATUS("Illegal key parsing information for potential with unknown key.");
+        return Action::failure;
+      }
+    } else {
+      STATUS("Failed to parse from "+params.potential_file.get().string()+".");
+      return Action::failure;
+    }
+    returnstream.close();
+
+    LOG(0, "STATUS: Parsed a set of potentials parsed from "
+        << params.potential_file.get().string() << ".");
+
+  } else {
+      STATUS("No existing potential file given!");
+      return Action::failure;
+  }
+
+  return Action::success;
+}
+
+ActionState::ptr PotentialParsePotentialsAction::performUndo(ActionState::ptr _state) {
+  STATUS("Undo of PotentialParsePotentialsAction not implemented.");
+  return Action::failure;
+}
+
+ActionState::ptr PotentialParsePotentialsAction::performRedo(ActionState::ptr _state){
+  STATUS("Redo of PotentialParsePotentialsAction not implemented.");
+  return Action::failure;
+}
+
+bool PotentialParsePotentialsAction::canUndo() {
+  return false;
+}
+
+bool PotentialParsePotentialsAction::shouldUndo() {
+  return false;
+}
+/** =========== end of function ====================== */
Index: src/Actions/PotentialAction/ParsePotentialsAction.def
===================================================================
--- src/Actions/PotentialAction/ParsePotentialsAction.def	(revision f1eabd03d00ab44fb84ebc758d0ebfc85d6dee6d)
+++ src/Actions/PotentialAction/ParsePotentialsAction.def	(revision f1eabd03d00ab44fb84ebc758d0ebfc85d6dee6d)
@@ -0,0 +1,37 @@
+/*
+ * ParsePotentialsAction.def
+ *
+ *  Created on: Sep 12, 2014
+ *      Author: heber
+ */
+
+// all includes and forward declarations necessary for non-integral types below
+#include "Parameters/Validators/Ops_Validator.hpp"
+#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
+#include "Parameters/Validators/Specific/FileSuffixValidator.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 (boost::filesystem::path)
+#define paramtokens ("parse-potentials")
+#define paramdescriptions ("TREMOLO potentials file to parse")
+#define paramdefaults (NOPARAM_DEFAULT)
+#define paramreferences (potential_file)
+#define paramvalids \
+(FilePresentValidator() && FileSuffixValidator("potentials"))
+
+#undef statetypes
+#undef statereferences
+
+// some defines for all the names, you may use ACTION, STATE and PARAMS
+#define CATEGORY Potential
+#define MENUNAME "potential"
+#define MENUPOSITION 1
+#define ACTIONNAME ParsePotentials
+#define TOKEN "parse-potentials"
+
+
+// finally the information stored in the ActionTrait specialization
+#define DESCRIPTION "parses TREMOLO potentials file and instantiates each potential"
+#undef SHORTFORM
Index: src/Actions/PotentialAction/ParsePotentialsAction.hpp
===================================================================
--- src/Actions/PotentialAction/ParsePotentialsAction.hpp	(revision f1eabd03d00ab44fb84ebc758d0ebfc85d6dee6d)
+++ src/Actions/PotentialAction/ParsePotentialsAction.hpp	(revision f1eabd03d00ab44fb84ebc758d0ebfc85d6dee6d)
@@ -0,0 +1,22 @@
+/*
+ * ParsePotentialsAction.hpp
+ *
+ *  Created on: Sep 12, 2014
+ *      Author: heber
+ */
+
+#ifndef PARSEPOTENTIALSACTION_HPP_
+#define PARSEPOTENTIALSACTION_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include "Actions/Action.hpp"
+
+#include "ParsePotentialsAction.def"
+#include "Action_impl_header.hpp"
+
+#endif /* PARSEPOTENTIALSACTION_HPP_ */
