Index: src/Actions/ActionQueue.cpp
===================================================================
--- src/Actions/ActionQueue.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
+++ src/Actions/ActionQueue.cpp	(revision 690741f440dd11d80473492d65b155ecd85e1aac)
@@ -37,5 +37,9 @@
 #include "Actions/ActionQueue.hpp"
 
+#include "CodePatterns/Assert.hpp"
+#include "CodePatterns/IteratorAdaptors.hpp"
 #include "CodePatterns/Singleton_impl.hpp"
+
+#include <vector>
 
 using namespace MoleCuilder;
@@ -62,3 +66,22 @@
 }
 
+const ActionTrait& ActionQueue::getActionsTrait(const std::string name) const
+{
+  // this const_cast is just required as long as we have a non-const getActionByName
+  const Action * const action = const_cast<ActionQueue *>(this)->getActionByName(name);
+  return action->Traits;
+}
+
+const ActionQueue::ActionTokens_t ActionQueue::getListOfActions() const
+{
+  ActionTokens_t returnlist;
+
+  returnlist.insert(
+      returnlist.end(),
+      MapKeyConstIterator<ActionRegistry::const_iterator>(AR.getBeginIter()),
+      MapKeyConstIterator<ActionRegistry::const_iterator>(AR.getEndIter()));
+
+  return returnlist;
+}
+
 CONSTRUCT_SINGLETON(ActionQueue)
Index: src/Actions/ActionQueue.hpp
===================================================================
--- src/Actions/ActionQueue.hpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
+++ src/Actions/ActionQueue.hpp	(revision 690741f440dd11d80473492d65b155ecd85e1aac)
@@ -17,4 +17,5 @@
 
 #include <list>
+#include <vector>
 
 #include "Actions/ActionRegistry.hpp"
@@ -33,4 +34,5 @@
   friend class Singleton<ActionQueue>;
 public:
+  typedef std::vector<std::string> ActionTokens_t;
   typedef std::list<Action *> ActionQueue_t;
 
@@ -57,4 +59,17 @@
   int getLastPosition(const std::string &MenuName) const;
 
+  /** Returns the vector with the tokens of all currently known Actions.
+   *
+   * \return list of all tokens
+   */
+  const ActionTokens_t getListOfActions() const;
+
+  /** Returns the trait to an Action.
+   *
+   * \param name name of Action
+   * \return const ref to its default Trait.
+   */
+  const ActionTrait& getActionsTrait(const std::string name) const;
+
   /** Getter function for the ActionRegistry for transitional purpose.
    *
@@ -64,5 +79,4 @@
     return AR;
   }
-
 
 private:
Index: src/Actions/CommandAction/HelpAction.cpp
===================================================================
--- src/Actions/CommandAction/HelpAction.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
+++ src/Actions/CommandAction/HelpAction.cpp	(revision 690741f440dd11d80473492d65b155ecd85e1aac)
@@ -79,14 +79,13 @@
   // print list of actions or its options
   ActionQueue &AQ = ActionQueue::getInstance();
-  ActionRegistry &AR = AQ.getActionRegistry();
+  ActionQueue::ActionTokens_t tokens = AQ.getListOfActions();
   if (params.actionname.get() == std::string("none")) {
     // print list of all Actions
     std::cout << "Here is a list of all available Actions:" << std::endl;
-    for(ActionRegistry::const_iterator iter = AR.getBeginIter();
-        iter != AR.getEndIter();
+    for(ActionQueue::ActionTokens_t::const_iterator iter = tokens.begin();
+        iter != tokens.end();
         ++iter) {
-      const Action *instance = iter->second;
-      std::cout << "'" << iter->first << "': \t "
-          << instance->Traits.getDescription() << std::endl;
+      std::cout << "'" << *iter << "': \t "
+          << AQ.getActionsTrait(*iter).getDescription() << std::endl;
     }
   } else {
Index: src/Actions/OptionRegistry.cpp
===================================================================
--- src/Actions/OptionRegistry.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
+++ src/Actions/OptionRegistry.cpp	(revision 690741f440dd11d80473492d65b155ecd85e1aac)
@@ -71,15 +71,16 @@
 //void OptionRegistry::Init()
 //{
-//  ActionRegistry &AR = ActionQueue::getInstance().getActionRegistry();
-//  for (ActionRegistry::const_iterator actioniter = AR.getBeginIter();
-//      actioniter != AR.getEndIter();
+//  ActionQueue &AQ = ActionQueue::getInstance();
+//  ActionQueue::ActionTokens_t tokens = AQ.getListOfActions();
+//  for (ActionQueue::ActionTokens_t::const_iterator actioniter = tokens.begin();
+//      actioniter != tokens.end();
 //      ++actioniter) {
-//    Action* const currentAction = actioniter->second;
-//    for (ActionTrait::options_const_iterator optioniter = currentAction->Traits.getBeginIter();
-//        optioniter != currentAction->Traits.getEndIter();
+//    const ActionTrait& currentTrait = AQ.getActionsTrait(*actioniter);
+//    for (ActionTrait::options_const_iterator optioniter = currentTrait.getBeginIter();
+//        optioniter != currentTrait.getEndIter();
 //        ++optioniter) {
 //      // wrap option in a shared_ptr to have it exist till and automatically removed at end of code
 //      std::string const &OptionName = optioniter->first;
-//      std::type_info const &typeDesired = *((actioniter->second)->Traits.getOptionType(OptionName));
+//      std::type_info const &typeDesired = *(currentTrait.getOptionType(OptionName));
 //      if (isOptionPresentByName(OptionName)) {
 //        std::type_info const &typePresent = *(getOptionByName(OptionName)->getType());
@@ -98,14 +99,16 @@
 void OptionRegistry::ConsistencyCheck()
 {
-  ActionRegistry &AR = ActionQueue::getInstance().getActionRegistry();
-  for (ActionRegistry::const_iterator actioniter = AR.getBeginIter();
-      actioniter != AR.getEndIter();
+  ActionQueue &AQ = ActionQueue::getInstance();
+  ActionQueue::ActionTokens_t tokens = AQ.getListOfActions();
+  for (ActionQueue::ActionTokens_t::const_iterator actioniter = tokens.begin();
+      actioniter != tokens.end();
       ++actioniter) {
-    for (ActionTrait::options_const_iterator optioniter = (actioniter->second)->Traits.getBeginIter();
-        optioniter != (actioniter->second)->Traits.getEndIter();
+    const ActionTrait& currentTrait = AQ.getActionsTrait(*actioniter);
+    for (ActionTrait::options_const_iterator optioniter = currentTrait.getBeginIter();
+        optioniter != currentTrait.getEndIter();
         ++optioniter) {
 #ifndef NDEBUG
       std::string const &OptionName = optioniter->first;
-      std::type_info const &typeDesired = *((actioniter->second)->Traits.getOption(OptionName).getType());
+      std::type_info const &typeDesired = *(currentTrait.getOption(OptionName).getType());
       std::type_info const &typePresent = *(getOptionByName(OptionName)->getType());
 #endif
Index: src/Actions/unittests/ActionRegistryUnitTest.cpp
===================================================================
--- src/Actions/unittests/ActionRegistryUnitTest.cpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
+++ src/Actions/unittests/ActionRegistryUnitTest.cpp	(revision 690741f440dd11d80473492d65b155ecd85e1aac)
@@ -61,5 +61,4 @@
 void ActionRegistryTest::setUp()
 {
-  AR = &ActionQueue::getInstance().getActionRegistry();
 };
 
@@ -74,11 +73,15 @@
   std::map <std::string, std::string> result;
 
-  for (ActionRegistry::const_iterator iter = AR->getBeginIter(); iter != AR->getEndIter(); ++iter) {
-    if ((iter->second)->Traits.hasShortForm()) {
-      ASSERT(result.find((iter->second)->Traits.getShortForm()) == result.end(),
-          "Short form "+toString((iter->second)->Traits.getShortForm())+
-          " for action "+toString(iter->first)+" already present from "+
-          std::string(result[(iter->second)->Traits.getShortForm()])+"!");
-      result[(iter->second)->Traits.getShortForm()] = (iter->second)->getName();
+  ActionQueue &AQ = ActionQueue::getInstance();
+  ActionQueue::ActionTokens_t tokens = AQ.getListOfActions();
+  for (ActionQueue::ActionTokens_t::const_iterator iter = tokens.begin();
+      iter != tokens.end(); ++iter) {
+    const ActionTrait &CurrentTrait = AQ.getActionsTrait(*iter);
+    if (CurrentTrait.hasShortForm()) {
+      ASSERT(result.find(CurrentTrait.getShortForm()) == result.end(),
+          "Short form "+toString(CurrentTrait.getShortForm())+
+          " for action "+toString(*iter)+" already present from "+
+          std::string(result[CurrentTrait.getShortForm()])+"!");
+      result[CurrentTrait.getShortForm()] = *iter;
     }
   }
Index: src/Actions/unittests/ActionRegistryUnitTest.hpp
===================================================================
--- src/Actions/unittests/ActionRegistryUnitTest.hpp	(revision 1d3563e3cf6937663297eb9e5e881d34105948a0)
+++ src/Actions/unittests/ActionRegistryUnitTest.hpp	(revision 690741f440dd11d80473492d65b155ecd85e1aac)
@@ -17,8 +17,4 @@
 #include <cppunit/extensions/HelperMacros.h>
 
-namespace MoleCuilder {
-class ActionRegistry;
-};
-
 /********************************************** Test classes **************************************/
 
@@ -33,7 +29,4 @@
       void tearDown();
       void CheckDoublyUsedShortforms();
-
-private:
-      MoleCuilder::ActionRegistry *AR;
 };
 
