Index: src/Actions/Action.cpp
===================================================================
--- src/Actions/Action.cpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Action.cpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -41,6 +41,6 @@
 #include "Actions/Action.hpp"
 #include "Actions/ActionExceptions.hpp"
-#include "Actions/ActionQueue.hpp"
 #include "Actions/ActionHistory.hpp"
+#include "Actions/ActionRegistry.hpp"
 #include "Actions/OptionRegistry.hpp"
 #include "Actions/OptionTrait.hpp"
@@ -75,10 +75,11 @@
 Action::state_ptr Action::failure;
 
-Action::Action(const ActionTrait &_Traits, bool _doRegister) :
-    Traits(_Traits)
+Action::Action(const ActionTrait &_Traits, ActionRegistry * const _AR) :
+    Traits(_Traits),
+    AR(_AR)
 {
   // register with ActionRegistry
-  if(_doRegister){
-    ActionQueue::getInstance().getActionRegistry().registerInstance(this);
+  if(AR != NULL) {
+    AR->registerInstance(this);
   }
 
@@ -128,7 +129,6 @@
 {
   // unregister us if still registered
-  if(ActionQueue::getInstance().isActionKnownByName(getName()))
-    if (ActionQueue::getInstance().getActionByName(getName()) == this)
-      ActionQueue::getInstance().getActionRegistry().unregisterInstance(this);
+  if (AR != NULL)
+    AR->unregisterInstance(this);
 
   for (ActionTrait::options_const_iterator optioniter = Traits.getBeginIter();
Index: src/Actions/Action.hpp
===================================================================
--- src/Actions/Action.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Action.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -28,4 +28,5 @@
 
 namespace MoleCuilder {
+  class ActionRegistry;
   class ActionState;
   class ActionSequence;
@@ -101,7 +102,7 @@
    *
    * \param Traits information class to this action
-   * \param _doRegister whether to register with ActionRegistry
-   */
-  Action(const ActionTrait &_Traits, bool _doRegister=true);
+   * \param _AR pointer to ActionRegistry to register, NULL - do not register
+   */
+  Action(const ActionTrait &_Traits, ActionRegistry * const _AR = NULL);
   virtual ~Action();
 
@@ -167,4 +168,9 @@
   const ActionTrait Traits;
 
+  /** Action is registered with an ActionRegistry and stores its pointer internally.
+   *
+   */
+  ActionRegistry* const AR;
+
 protected:
   /** Removes the static entities Action::success and Action::failure.
Index: src/Actions/Action_impl_pre.hpp
===================================================================
--- src/Actions/Action_impl_pre.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Action_impl_pre.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -187,5 +187,4 @@
 
 
-#include "Actions/ActionRegistry.hpp"
 //#include "Actions/ActionTraits.hpp"
 #include "UIElements/Dialog.hpp"
@@ -235,5 +234,5 @@
 // =========== constructor ===========
 ACTION::ACTION () :
-  Action(ActionTraits< ACTION >(), false)
+  Action(ActionTraits< ACTION >(), NULL)
 {}
 
Index: src/Actions/Action_impl_python.hpp
===================================================================
--- src/Actions/Action_impl_python.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Action_impl_python.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -101,5 +101,4 @@
 
 #include "Actions/Action.hpp"
-#include "Actions/ActionRegistry.hpp"
 
 namespace MoleCuilder {
Index: src/Actions/AtomsCalculation_impl.hpp
===================================================================
--- src/Actions/AtomsCalculation_impl.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/AtomsCalculation_impl.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -22,5 +22,5 @@
 template<typename T>
 AtomsCalculation<T>::AtomsCalculation(boost::function<T(atom*)> _op,const ActionTrait &_trait,AtomDescriptor _descr) :
-  Calculation<std::vector<T> >(0,_trait,false),
+  Calculation<std::vector<T> >(0,_trait,NULL),
   descr(_descr),
   op(_op)
Index: src/Actions/Calculation.hpp
===================================================================
--- src/Actions/Calculation.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Calculation.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -14,8 +14,9 @@
 #endif
 
-
 #include "Actions/Process.hpp"
 
 namespace MoleCuilder {
+
+class ActionRegistry;
 
 /**
@@ -29,5 +30,5 @@
 {
 public:
-  Calculation(int _maxSteps, const ActionTrait &_trait, bool _doRegister=true);
+  Calculation(int _maxSteps, const ActionTrait &_trait, ActionRegistry * const _AR);
   virtual ~Calculation();
 
Index: src/Actions/Calculation_impl.hpp
===================================================================
--- src/Actions/Calculation_impl.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Calculation_impl.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -22,6 +22,6 @@
 
 template<typename T>
-Calculation<T>::Calculation(int _maxSteps, const ActionTrait &_trait, bool _doRegister) :
-  Process(_maxSteps,_trait,_doRegister),
+Calculation<T>::Calculation(int _maxSteps, const ActionTrait &_trait, ActionRegistry * const _AR) :
+  Process(_maxSteps,_trait,_AR),
   result(0),
   done(false)
Index: src/Actions/CommandAction/HelpRedistributeAction.cpp
===================================================================
--- src/Actions/CommandAction/HelpRedistributeAction.cpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/CommandAction/HelpRedistributeAction.cpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -38,7 +38,5 @@
 #include <string>
 
-#include "Actions/ActionRegistry.hpp"
 #include "Actions/ActionTrait.hpp"
-#include "Actions/OptionRegistry.hpp"
 #include "Actions/OptionTrait.hpp"
 #include "CodePatterns/Log.hpp"
Index: src/Actions/ErrorAction.cpp
===================================================================
--- src/Actions/ErrorAction.cpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/ErrorAction.cpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -44,6 +44,6 @@
 using namespace MoleCuilder;
 
-ErrorAction::ErrorAction(const ActionTrait &_trait,const char * _errorMsg,bool _doRegister) :
-Action(_trait,_doRegister),
+ErrorAction::ErrorAction(const ActionTrait &_trait,const char * _errorMsg, ActionRegistry * const _AR) :
+Action(_trait,_AR),
 errorMsg(_errorMsg)
 {
Index: src/Actions/ErrorAction.hpp
===================================================================
--- src/Actions/ErrorAction.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/ErrorAction.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -23,5 +23,5 @@
 {
 public:
-  ErrorAction(const ActionTrait &_trait,const char * _errorMsg,bool _doRegister=true);
+  ErrorAction(const ActionTrait &_trait,const char * _errorMsg, ActionRegistry * const _AR);
   virtual ~ErrorAction();
 
Index: src/Actions/MakroAction.cpp
===================================================================
--- src/Actions/MakroAction.cpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/MakroAction.cpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -41,4 +41,5 @@
 #include "Actions/Action.hpp"
 #include "Actions/ActionExceptions.hpp"
+#include "Actions/ActionRegistry.hpp"
 #include "Actions/ActionSequence.hpp"
 #include "CodePatterns/Assert.hpp"
@@ -60,6 +61,6 @@
 };
 
-MakroAction::MakroAction(const ActionTrait &_trait,ActionSequence& _actions,bool _doRegister) :
-Action(_trait,_doRegister),
+MakroAction::MakroAction(const ActionTrait &_trait,ActionSequence& _actions, ActionRegistry * const _AR) :
+Action(_trait,_AR),
 actions(_actions)
 {
Index: src/Actions/MakroAction.hpp
===================================================================
--- src/Actions/MakroAction.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/MakroAction.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -31,5 +31,5 @@
 {
 public:
-  MakroAction(const ActionTrait &_trait,ActionSequence& _actions,bool _doRegister=true);
+  MakroAction(const ActionTrait &_trait,ActionSequence& _actions, ActionRegistry * const _AR=NULL);
   virtual ~MakroAction();
 
Index: src/Actions/MakroAction_impl_pre.hpp
===================================================================
--- src/Actions/MakroAction_impl_pre.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/MakroAction_impl_pre.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -235,5 +235,5 @@
 // =========== constructor ===========
 ACTION::ACTION () :
-  MakroAction(ActionTraits< ACTION >(), actions, false)
+  MakroAction(ActionTraits< ACTION >(), actions, NULL)
 {}
 
Index: src/Actions/ManipulateAtomsProcess.cpp
===================================================================
--- src/Actions/ManipulateAtomsProcess.cpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/ManipulateAtomsProcess.cpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -48,6 +48,6 @@
     AtomDescriptor _descr,
     const ActionTrait &_trait,
-    bool _doRegister) :
-  Process(0,_trait,_doRegister),
+    ActionRegistry * const _AR) :
+  Process(0,_trait,_AR),
   descr(_descr),
   operation(_operation)
Index: src/Actions/ManipulateAtomsProcess.hpp
===================================================================
--- src/Actions/ManipulateAtomsProcess.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/ManipulateAtomsProcess.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -25,8 +25,10 @@
 namespace MoleCuilder {
 
+class ActionRegistry;
+
 class ManipulateAtomsProcess : public Process
 {
 public:
-  ManipulateAtomsProcess(boost::function<void(atom*)> _operation, AtomDescriptor descr,const ActionTrait &_trait,bool _doRegister=true);
+  ManipulateAtomsProcess(boost::function<void(atom*)> _operation, AtomDescriptor descr,const ActionTrait &_trait,ActionRegistry * const _AR);
   virtual ~ManipulateAtomsProcess();
 
Index: src/Actions/MethodAction.cpp
===================================================================
--- src/Actions/MethodAction.cpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/MethodAction.cpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -44,6 +44,6 @@
 using namespace MoleCuilder;
 
-MethodAction::MethodAction(const ActionTrait &_trait,boost::function<void()> _executeMethod,bool _doRegister) :
-   Action(_trait,_doRegister),
+MethodAction::MethodAction(const ActionTrait &_trait,boost::function<void()> _executeMethod,ActionRegistry * const _AR) :
+   Action(_trait,_AR),
 executeMethod(_executeMethod)
 {
Index: src/Actions/MethodAction.hpp
===================================================================
--- src/Actions/MethodAction.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/MethodAction.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -21,4 +21,6 @@
 namespace MoleCuilder {
 
+class ActionRegistry;
+
 /**
  * Wrapper class that allows the construction of Actions from any kind of Method
@@ -27,5 +29,5 @@
 {
 public:
-  MethodAction(const ActionTrait &_trait,boost::function<void()> _executeMethod,bool _doRegister=true);
+  MethodAction(const ActionTrait &_trait,boost::function<void()> _executeMethod,ActionRegistry * const _AR);
   virtual ~MethodAction();
   virtual bool canUndo();
Index: src/Actions/Process.cpp
===================================================================
--- src/Actions/Process.cpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Process.cpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -41,6 +41,6 @@
 using namespace MoleCuilder;
 
-Process::Process(int _maxSteps, const ActionTrait &_trait, bool _doRegister) :
-  Action(_trait,_doRegister),
+Process::Process(int _maxSteps, const ActionTrait &_trait, ActionRegistry * const _AR) :
+  Action(_trait,_AR),
   Observable("Process"),
   maxSteps(_maxSteps),
Index: src/Actions/Process.hpp
===================================================================
--- src/Actions/Process.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Process.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -28,4 +28,6 @@
 namespace MoleCuilder {
 
+class ActionRegistry;
+
 /**
  * A Process is an Action that might take some time and therefore has special
@@ -49,5 +51,5 @@
 {
 public:
-  Process(int _maxSteps, const ActionTrait &_trait, bool _doRegister=true);
+  Process(int _maxSteps, const ActionTrait &_trait, ActionRegistry * const _AR);
   virtual ~Process();
 
Index: src/Actions/Reaction.hpp
===================================================================
--- src/Actions/Reaction.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Reaction.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -30,5 +30,5 @@
 {
 public:
-  Reaction(const ActionTrait &_trait, bool _doRegister=true);
+  Reaction(const ActionTrait &_trait, ActionRegistry * const _AR=NULL);
   virtual ~Reaction();
 
Index: src/Actions/Reaction_impl.hpp
===================================================================
--- src/Actions/Reaction_impl.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Reaction_impl.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -23,6 +23,6 @@
 
 template<typename T>
-Reaction<T>::Reaction(const ActionTrait &_trait, bool _doRegister) :
-  Action(_trait,_doRegister),
+Reaction<T>::Reaction(const ActionTrait &_trait, ActionRegistry * const _AR) :
+  Action(_trait,_AR),
   result(0),
   done(false)
Index: src/Actions/Reaction_impl_pre.hpp
===================================================================
--- src/Actions/Reaction_impl_pre.hpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/Reaction_impl_pre.hpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -163,5 +163,5 @@
 // =========== constructor ===========
 REACTION::REACTION () :
-  Reaction< RETURNTYPE >(ActionTraits< REACTION >(), false)
+  Reaction< RETURNTYPE >(ActionTraits< REACTION >(), NULL)
 {}
 
Index: src/Actions/unittests/ActionSequenceUnitTest.cpp
===================================================================
--- src/Actions/unittests/ActionSequenceUnitTest.cpp	(revision a6ceab4933015c9172ad635e7d938f944fc8e4e4)
+++ src/Actions/unittests/ActionSequenceUnitTest.cpp	(revision 0c8056d9293d313cfa38b28df33256e0a68da0b6)
@@ -63,5 +63,5 @@
 public:
   canUndoActionStub(const ActionTrait &_trait):
-    Action(_trait,false){}
+    Action(_trait,NULL){}
   virtual ~canUndoActionStub(){}
 
@@ -92,5 +92,5 @@
 public:
   cannotUndoActionStub(const ActionTrait &_trait) :
-    Action(_trait,false){}
+    Action(_trait,NULL){}
   virtual ~cannotUndoActionStub(){}
 
@@ -121,5 +121,5 @@
 public:
   wasCalledActionStub(const ActionTrait &_trait) :
-      Action(_trait,false),
+      Action(_trait,NULL),
       called(false)
   {}
@@ -278,5 +278,5 @@
 
   ActionTrait MakroTrait("Test MakroAction");
-  MakroAction act(MakroTrait,*sequence,false);
+  MakroAction act(MakroTrait,*sequence,NULL);
 
   act.call();
