Index: src/Actions/AnalysisAction/MolecularVolumeAction.cpp
===================================================================
--- src/Actions/AnalysisAction/MolecularVolumeAction.cpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/MolecularVolumeAction.cpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -20,6 +20,4 @@
 #include "Helpers/MemDebug.hpp"
 
-#include "Actions/AnalysisAction/MolecularVolumeAction.hpp"
-#include "Actions/ActionRegistry.hpp"
 #include "boundary.hpp"
 #include "config.hpp"
@@ -36,32 +34,13 @@
 using namespace std;
 
-#include "UIElements/UIFactory.hpp"
-#include "UIElements/Dialog.hpp"
-#include "Actions/ValueStorage.hpp"
+#include "Actions/AnalysisAction/MolecularVolumeAction.hpp"
 
-const char AnalysisMolecularVolumeAction::NAME[] = "molecular-volume";
+// and construct the stuff
+#include "Action_impl_pre.hpp"
 
-AnalysisMolecularVolumeAction::AnalysisMolecularVolumeAction() :
-  Action(NAME)
-{}
-
-AnalysisMolecularVolumeAction::~AnalysisMolecularVolumeAction()
-{}
-
-void AnalysisMolecularVolume() {
-  ActionRegistry::getInstance().getActionByName(AnalysisMolecularVolumeAction::NAME)->call(Action::NonInteractive);
-};
-
-Dialog * AnalysisMolecularVolumeAction::fillDialog(Dialog *dialog) {
-  ASSERT(dialog,"No Dialog given when filling action dialog");
-  dialog->queryEmpty(NAME, ValueStorage::getInstance().getDescription(NAME));
-
-  return dialog;
-}
-
-Action::state_ptr AnalysisMolecularVolumeAction::performCall() {
-  int molID = -1;
+/** =========== define the function ====================== */
+Action::state_ptr ACTION::performCall() {
   // obtain information
-  ValueStorage::getInstance().queryCurrentValue(NAME, molID);
+  getParametersfromValueStorage();
 
   // execute action
@@ -87,21 +66,25 @@
 }
 
-Action::state_ptr AnalysisMolecularVolumeAction::performUndo(Action::state_ptr _state) {
+Action::state_ptr ACTION::performUndo(Action::state_ptr _state) {
   return Action::success;
 }
 
-Action::state_ptr AnalysisMolecularVolumeAction::performRedo(Action::state_ptr _state){
+Action::state_ptr ACTION::performRedo(Action::state_ptr _state){
   return Action::success;
 }
 
-bool AnalysisMolecularVolumeAction::canUndo() {
+bool ACTION::canUndo() {
   return true;
 }
 
-bool AnalysisMolecularVolumeAction::shouldUndo() {
+bool ACTION::shouldUndo() {
   return true;
 }
 
-const string AnalysisMolecularVolumeAction::getName() {
+const string ACTION::getName() {
   return NAME;
 }
+/** =========== end of function ====================== */
+
+// and clean the stuff
+#include "Action_impl_post.hpp"
Index: src/Actions/AnalysisAction/MolecularVolumeAction.hpp
===================================================================
--- src/Actions/AnalysisAction/MolecularVolumeAction.hpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/MolecularVolumeAction.hpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -16,26 +16,16 @@
 #include "Actions/Action.hpp"
 
-void AnalysisMolecularVolume();
+// 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
+//#define types (int)
+//#define references (molID)
+//#define tokens (NAME)
+// some defines for all the names, you may use ACTION, STATE and PARAMS
+#define CATEGORY Analysis
+#define ACTIONNAME MolecularVolume
+#define TOKEN "molecular-volume"
 
-class AnalysisMolecularVolumeAction : public Action {
-  friend void AnalysisMolecularVolume();
-public:
-  AnalysisMolecularVolumeAction();
-  virtual ~AnalysisMolecularVolumeAction();
-
-  bool canUndo();
-  bool shouldUndo();
-
-  virtual const std::string getName();
-
-protected:
-  virtual Dialog * fillDialog(Dialog*);
-private:
-  virtual Action::state_ptr performCall();
-  virtual Action::state_ptr performUndo(Action::state_ptr);
-  virtual Action::state_ptr performRedo(Action::state_ptr);
-
-  static const char NAME[];
-};
+#include "Action_impl_header.hpp"
 
 #endif /* MOLECULARVOLUMEACTION_HPP_ */
Index: src/Actions/AnalysisAction/PairCorrelationAction.cpp
===================================================================
--- src/Actions/AnalysisAction/PairCorrelationAction.cpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/PairCorrelationAction.cpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -62,4 +62,7 @@
 };
 
+
+void AnalysisPairCorrelationAction::getParametersfromValueStorage()
+{};
 
 Dialog* AnalysisPairCorrelationAction::fillDialog(Dialog* dialog) {
Index: src/Actions/AnalysisAction/PairCorrelationAction.hpp
===================================================================
--- src/Actions/AnalysisAction/PairCorrelationAction.hpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/PairCorrelationAction.hpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -35,5 +35,6 @@
   virtual Dialog * fillDialog(Dialog*);
 private:
-   virtual Action::state_ptr performCall();
+   virtual void getParametersfromValueStorage();
+  virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
   virtual Action::state_ptr performRedo(Action::state_ptr);
Index: src/Actions/AnalysisAction/PointCorrelationAction.cpp
===================================================================
--- src/Actions/AnalysisAction/PointCorrelationAction.cpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/PointCorrelationAction.cpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -63,4 +63,7 @@
   ActionRegistry::getInstance().getActionByName(AnalysisPointCorrelationAction::NAME)->call(Action::NonInteractive);
 };
+
+void AnalysisPointCorrelationAction::getParametersfromValueStorage()
+{};
 
 Dialog* AnalysisPointCorrelationAction::fillDialog(Dialog *dialog) {
Index: src/Actions/AnalysisAction/PointCorrelationAction.hpp
===================================================================
--- src/Actions/AnalysisAction/PointCorrelationAction.hpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/PointCorrelationAction.hpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -37,4 +37,5 @@
   virtual Dialog * fillDialog(Dialog*);
 private:
+  virtual void getParametersfromValueStorage();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
Index: src/Actions/AnalysisAction/PrincipalAxisSystemAction.cpp
===================================================================
--- src/Actions/AnalysisAction/PrincipalAxisSystemAction.cpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/PrincipalAxisSystemAction.cpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -50,4 +50,7 @@
   ActionRegistry::getInstance().getActionByName(AnalysisPrincipalAxisSystemAction::NAME)->call(Action::NonInteractive);
 };
+
+void AnalysisPrincipalAxisSystemAction::getParametersfromValueStorage()
+{};
 
 Dialog* AnalysisPrincipalAxisSystemAction::fillDialog(Dialog *dialog) {
Index: src/Actions/AnalysisAction/PrincipalAxisSystemAction.hpp
===================================================================
--- src/Actions/AnalysisAction/PrincipalAxisSystemAction.hpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/PrincipalAxisSystemAction.hpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -27,4 +27,5 @@
   virtual Dialog * fillDialog(Dialog *);
 private:
+  virtual void getParametersfromValueStorage();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
Index: src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp
===================================================================
--- src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -64,4 +64,7 @@
 };
 
+
+void AnalysisSurfaceCorrelationAction::getParametersfromValueStorage()
+{};
 
 Dialog* AnalysisSurfaceCorrelationAction::fillDialog(Dialog *dialog) {
Index: src/Actions/AnalysisAction/SurfaceCorrelationAction.hpp
===================================================================
--- src/Actions/AnalysisAction/SurfaceCorrelationAction.hpp	(revision 146cff20ef08f9e72090351efc803d678278fe81)
+++ src/Actions/AnalysisAction/SurfaceCorrelationAction.hpp	(revision 0b2ce98def2d6ab9548ba5ac25acbb2ab5bc233c)
@@ -31,4 +31,5 @@
   virtual Dialog * fillDialog(Dialog*);
 private:
+  virtual void getParametersfromValueStorage();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
