Index: src/Actions/Action.cpp
===================================================================
--- src/Actions/Action.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Actions/Action.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -128,6 +128,6 @@
 {
   // unregister us if still registered
-  if(ActionQueue::getInstance().getActionRegistry().isActionPresentByName(getName()))
-    if (ActionQueue::getInstance().getActionRegistry().getActionByName(getName()) == this)
+  if(ActionQueue::getInstance().isActionKnownByName(getName()))
+    if (ActionQueue::getInstance().getActionByName(getName()) == this)
       ActionQueue::getInstance().getActionRegistry().unregisterInstance(this);
 
Index: src/Actions/ActionQueue.cpp
===================================================================
--- src/Actions/ActionQueue.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Actions/ActionQueue.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -35,5 +35,5 @@
 #include "CodePatterns/MemDebug.hpp"
 
-#include "ActionQueue.hpp"
+#include "Actions/ActionQueue.hpp"
 
 #include "CodePatterns/Singleton_impl.hpp"
@@ -47,3 +47,18 @@
 {}
 
+Action* ActionQueue::getActionByName(const std::string name)
+{
+  return AR.getActionByName(name);
+}
+
+bool ActionQueue::isActionKnownByName(const std::string name) const
+{
+  return AR.isActionPresentByName(name);
+}
+
+int ActionQueue::getLastPosition(const std::string &MenuName) const
+{
+  return AR.getLastPosition(MenuName);
+}
+
 CONSTRUCT_SINGLETON(ActionQueue)
Index: src/Actions/ActionQueue.hpp
===================================================================
--- src/Actions/ActionQueue.hpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Actions/ActionQueue.hpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -16,4 +16,6 @@
 #include "CodePatterns/Singleton.hpp"
 
+#include <list>
+
 #include "Actions/ActionRegistry.hpp"
 
@@ -24,5 +26,6 @@
 /** This class combines the whole handling of Actions into a single class.
  *
- * It spawns new Actions by its internal ActionRegistry.
+ * It spawns new Actions by its internal ActionRegistry. Spawned Actions are
+ * automatically queued and placed into a History after execution.
  */
 class ActionQueue : public Singleton<ActionQueue>
@@ -30,4 +33,28 @@
   friend class Singleton<ActionQueue>;
 public:
+  typedef std::list<Action *> ActionQueue_t;
+
+  /** Returns the spawned action by token \a name.
+   *
+   * Action is checked into internal queue.
+   *
+   * \return pointer to newly spawned action
+   */
+  Action* getActionByName(const std::string name);
+
+  /** Checks whether the Action is known by the given \a name.
+   *
+   * \param name token of action to check
+   * \return true - token is known, false - else
+   */
+  bool isActionKnownByName(const std::string name) const;
+
+  /** Returns the last taken position for the Menu with \a MenuName.
+   *
+   * \param MenuName name of menu to check for last position
+   * \return index of last position
+   */
+  int getLastPosition(const std::string &MenuName) const;
+
   /** Getter function for the ActionRegistry for transitional purpose.
    *
@@ -38,10 +65,23 @@
   }
 
+
 private:
+  /** Private cstor for ActionQueue.
+   *
+   * Must be private as is singleton.
+   *
+   */
   ActionQueue();
+
+  /** Dstor for ActionQueue.
+   *
+   */
   ~ActionQueue();
 
   //!> ActionRegistry to spawn new actions
   ActionRegistry AR;
+
+  //!> internal queue of actions
+  ActionQueue_t queue;
 };
 
Index: src/Actions/Action_impl_pre.hpp
===================================================================
--- src/Actions/Action_impl_pre.hpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Actions/Action_impl_pre.hpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -290,5 +290,5 @@
 )
 {
-  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionRegistry().getActionByName( TOKEN )); //->clone(params);
+  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionByName( TOKEN )); //->clone(params);
   //ACTION::PARAMS params;
 #if defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
@@ -307,5 +307,5 @@
 #endif
 	) {
-  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionRegistry().getActionByName( TOKEN )); //->clone(params);
+  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionByName( TOKEN )); //->clone(params);
   //ACTION::PARAMS params;
 #if defined paramtypes && defined paramtypes && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
Index: src/Actions/CommandAction/HelpAction.cpp
===================================================================
--- src/Actions/CommandAction/HelpAction.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Actions/CommandAction/HelpAction.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -78,5 +78,6 @@
   std::cout << std::endl;
   // print list of actions or its options
-  ActionRegistry &AR = ActionQueue::getInstance().getActionRegistry();
+  ActionQueue &AQ = ActionQueue::getInstance();
+  ActionRegistry &AR = AQ.getActionRegistry();
   if (params.actionname.get() == std::string("none")) {
     // print list of all Actions
@@ -91,6 +92,6 @@
   } else {
     // retrieve command from Registry and print its help
-    if (AR.isActionPresentByName(params.actionname.get())) {
-      const Action *instance = AR.getActionByName(params.actionname.get());
+    if (AQ.isActionKnownByName(params.actionname.get())) {
+      const Action *instance = AQ.getActionByName(params.actionname.get());
       // else give description of Action and its option value if present
       std::cout << instance->help();
Index: src/Actions/FragmentationAction/MolecularDynamicsAction.cpp
===================================================================
--- src/Actions/FragmentationAction/MolecularDynamicsAction.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Actions/FragmentationAction/MolecularDynamicsAction.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -71,14 +71,14 @@
 Action::state_ptr FragmentationMolecularDynamicsAction::performCall(){
   // now we can truely prepare
-  ActionRegistry &AR = ActionQueue::getInstance().getActionRegistry();
+  ActionQueue &AQ = ActionQueue::getInstance();
   // perform a verlet-integration first, if there are already forces or velocities
   // present. If not, we still copy the position cleanly into a new step where then
   // forces are set according to summed fragmentary contributions. This is much cleaner.
-  actions.addAction(AR.getActionByName(std::string("verlet-integration")));
+  actions.addAction(AQ.getActionByName(std::string("verlet-integration")));
   if (params.DoOutput.get())
-    actions.addAction(AR.getActionByName(std::string("output")));
-  actions.addAction(AR.getActionByName(std::string("fragment-molecule")));
-  actions.addAction(AR.getActionByName(std::string("fragment-automation")));
-  actions.addAction(AR.getActionByName(std::string("analyse-fragment-results")));
+    actions.addAction(AQ.getActionByName(std::string("output")));
+  actions.addAction(AQ.getActionByName(std::string("fragment-molecule")));
+  actions.addAction(AQ.getActionByName(std::string("fragment-automation")));
+  actions.addAction(AQ.getActionByName(std::string("analyse-fragment-results")));
   setLoop(params.steps.get());
   isPrepared = true;
Index: src/Actions/GraphAction/SubgraphDissectionAction.cpp
===================================================================
--- src/Actions/GraphAction/SubgraphDissectionAction.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Actions/GraphAction/SubgraphDissectionAction.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -151,5 +151,5 @@
 )
 {
-  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionRegistry().getActionByName( TOKEN )); //->clone(params);
+  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionByName( TOKEN )); //->clone(params);
   //ACTION::PARAMS params;
 #if defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
@@ -168,5 +168,5 @@
 #endif
   ) {
-  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionRegistry().getActionByName( TOKEN )); //->clone(params);
+  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionByName( TOKEN )); //->clone(params);
   //ACTION::PARAMS params;
 #if defined paramtypes && defined paramtypes && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
Index: src/Actions/MakroAction_impl_pre.hpp
===================================================================
--- src/Actions/MakroAction_impl_pre.hpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Actions/MakroAction_impl_pre.hpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -290,5 +290,5 @@
 )
 {
-  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionRegistry().getActionByName( TOKEN )); //->clone(params);
+  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionByName( TOKEN )); //->clone(params);
   //ACTION::PARAMS params;
 #if defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
@@ -307,5 +307,5 @@
 #endif
 	) {
-  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionRegistry().getActionByName( TOKEN )); //->clone(params);
+  ACTION *ToCall = dynamic_cast<ACTION*>(ActionQueue::getInstance().getActionByName( TOKEN )); //->clone(params);
   //ACTION::PARAMS params;
 #if defined paramtypes && defined paramtypes && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
Index: src/Actions/Reaction_impl_pre.hpp
===================================================================
--- src/Actions/Reaction_impl_pre.hpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Actions/Reaction_impl_pre.hpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -194,5 +194,5 @@
 )
 {
-  Action *ToCall = ActionQueue::getInstance().getActionRegistry().getActionByName( TOKEN ); //->clone(params);
+  Action *ToCall = ActionQueue::getInstance().getActionByName( TOKEN ); //->clone(params);
   //REACTION::PARAMS params;
 #if BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
@@ -213,5 +213,5 @@
 #endif
 	) {
-  Action *ToCall = ActionQueue::getInstance().getActionRegistry().getActionByName( TOKEN ); //->clone(params);
+  Action *ToCall = ActionQueue::getInstance().getActionByName( TOKEN ); //->clone(params);
   //REACTION::PARAMS params;
 #if BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
Index: src/Parameters/Validators/Specific/ActionNameValidator.cpp
===================================================================
--- src/Parameters/Validators/Specific/ActionNameValidator.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/Parameters/Validators/Specific/ActionNameValidator.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -43,5 +43,5 @@
 {
   if (MoleCuilder::ActionRegistry::getCompletely_instatiated())
-    return MoleCuilder::ActionQueue::getInstance().getActionRegistry().isActionPresentByName(_value);
+    return MoleCuilder::ActionQueue::getInstance().isActionKnownByName(_value);
   else
     return false;
Index: src/UIElements/CommandLineUI/CommandLineWindow.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -65,5 +65,5 @@
 
 void CommandLineWindow::display() {
-  ActionRegistry &AR = ActionQueue::getInstance().getActionRegistry();
+  ActionQueue &AQ = ActionQueue::getInstance();
   //cout << AR;
 
@@ -71,7 +71,7 @@
   LOG(0, "Calling Actions ... ");
   for (std::list<std::string>::iterator CommandRunner = CommandLineParser::getInstance().SequenceOfActions.begin(); CommandRunner != CommandLineParser::getInstance().SequenceOfActions.end(); ++CommandRunner) {
-    if (AR.isActionPresentByName(*CommandRunner)) {
+    if (AQ.isActionKnownByName(*CommandRunner)) {
 //      LOG1, "INFO: Checking presence of " << *CommandRunner << ": " << "calling " << *CommandRunner);
-      AR.getActionByName(*CommandRunner)->call();
+      AQ.getActionByName(*CommandRunner)->call();
     } else {
 //      LOG(1, "INFO: Checking presence of " << *CommandRunner << ": " << "absent.");
Index: src/UIElements/Menu/Qt4/QtMenuPipe.cpp
===================================================================
--- src/UIElements/Menu/Qt4/QtMenuPipe.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/UIElements/Menu/Qt4/QtMenuPipe.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -55,5 +55,5 @@
 
 void QtMenuPipe::called() {
-  Action* action = ActionQueue::getInstance().getActionRegistry().getActionByName(ActionName);
+  Action* action = ActionQueue::getInstance().getActionByName(ActionName);
   try{
     action->call();
Index: src/UIElements/Menu/TextMenu/ActionMenuItem.cpp
===================================================================
--- src/UIElements/Menu/TextMenu/ActionMenuItem.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/UIElements/Menu/TextMenu/ActionMenuItem.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -53,10 +53,10 @@
 
 void ActionMenuItem::doTrigger() {
-  Action* action = ActionQueue::getInstance().getActionRegistry().getActionByName(ActionName);
+  Action* action = ActionQueue::getInstance().getActionByName(ActionName);
   action->call();
 }
 
 bool ActionMenuItem::isActive() {
-  Action* action = ActionQueue::getInstance().getActionRegistry().getActionByName(ActionName);
+  Action* action = ActionQueue::getInstance().getActionByName(ActionName);
   return action->isActive();
 }
Index: src/UIElements/Menu/TextMenu/TextMenu.hpp
===================================================================
--- src/UIElements/Menu/TextMenu/TextMenu.hpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/UIElements/Menu/TextMenu/TextMenu.hpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -148,5 +148,5 @@
         MoleCuilder::OptionTrait("leave"+token, &typeid(void), "leave menu "+token),
         token,
-        MoleCuilder::ActionQueue::getInstance().getActionRegistry().getLastPosition(token)+2); // have a separator in between
+        MoleCuilder::ActionQueue::getInstance().getLastPosition(token)+2); // have a separator in between
     new TxMenu::LeaveAction(NewMenu->getMenuInstance(), leaveTrait);
     NewMenu->init();
Index: src/UIElements/Qt4/QtMainWindow.cpp
===================================================================
--- src/UIElements/Qt4/QtMainWindow.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/UIElements/Qt4/QtMainWindow.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -172,5 +172,5 @@
           MoleCuilder::WorldOutput();
         else{
-          Action* action = ActionQueue::getInstance().getActionRegistry().getActionByName("output-as");
+          Action* action = ActionQueue::getInstance().getActionByName("output-as");
           try{
             action->call();
Index: src/UIElements/TextUI/TextWindow.cpp
===================================================================
--- src/UIElements/TextUI/TextWindow.cpp	(revision 6285776145c5bb3604f2a9b1387bdcc7c69c1ffe)
+++ src/UIElements/TextUI/TextWindow.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
@@ -86,5 +86,5 @@
 
   // save has reserved key 's'
-//  Action *saveConfigAction = ActionQueue::getInstance().getActionRegistry().getActionByName("output");
+//  Action *saveConfigAction = ActionQueue::getInstance().getActionByName("output");
   new ActionMenuItem('s',"save current setup to config files",main_menu->getMenuInstance(),"output");
 
