Index: src/Actions/ActionTraits.cpp
===================================================================
--- src/Actions/ActionTraits.cpp	(revision d57341daabb0139273e143142890dd48dd9c3dd5)
+++ src/Actions/ActionTraits.cpp	(revision 53be342642ecc5d8c92481d78bf7924d629aad3f)
@@ -30,7 +30,7 @@
 
 /** Returns Current Value for this ActionTrait.
- * \return current value as std::string
+ * \return ActionTraits::CurrentValue as std::string
  */
-const std::string ActionTraits::getCurrentValue()
+const std::string ActionTraits::getCurrentValue() const
 {
  return CurrentValue;
@@ -38,15 +38,43 @@
 
 /** Returns Description for this ActionTrait.
- * \return current value as std::string
+ * \return ActionTraits::Description as std::string
  */
-const std::string ActionTraits::getDescription()
+const std::string ActionTraits::getDescription() const
 {
   return Description;
 }
 
+/** Returns menu title for this ActionTrait.
+ * \return ActionTraits::MenuTitle as std::string
+ */
+const std::string ActionTraits::getMenuName() const
+{
+  return MenuTitle;
+}
+
+/** Returns menu title for this ActionTrait.
+ * \return ActionTraits::MenuPosition as std::string
+ */
+const int ActionTraits::getMenuPosition() const
+{
+  return MenuPosition;
+}
+
+/** Returns Description for the given option of this ActionTrait.
+ * \param token of option
+ * \return ActionTraits::OptionDescription as std::string
+ */
+const std::string ActionTraits::getOptionDescription(const std::string descr) const
+{
+  if (OptionDescription.find(descr) != OptionDescription.end())
+    return OptionDescription.find(descr)->second;
+  else
+    return std::string();
+}
+
 /** Returns ShortForm for this ActionTrait.
- * \return current value as std::string
+ * \return ActionTraits::ShortForm as std::string
  */
-const std::string ActionTraits::getShortForm()
+const std::string ActionTraits::getShortForm() const
 {
   return ShortForm;
@@ -54,9 +82,42 @@
 
 /** Returns Type for this ActionTrait.
- * \return current value as std::type_info reference
+ * \return ActionTraits::InternalType as std::type_info reference
  */
-const std::type_info * ActionTraits::getType()
+const std::type_info * ActionTraits::getType() const
 {
   return InternalType;
 }
 
+/** Forward iterator from beginning of list of options.
+ * \return iterator
+ */
+ActionTraits::options_iterator ActionTraits::getBeginIter()
+{
+  return OptionDescription.begin();
+}
+
+/** Forward iterator at end of list of options.
+ * \return iterator
+ */
+ActionTraits::options_iterator ActionTraits::getEndIter()
+{
+  return OptionDescription.end();
+}
+
+/** Constant forward iterator from beginning of list of options.
+ * \return constant iterator
+ */
+ActionTraits::options_const_iterator ActionTraits::getBeginIter() const
+{
+  return OptionDescription.begin();
+}
+
+/** Constant forward iterator at end of list of options.
+ * \return constant iterator
+ */
+ActionTraits::options_const_iterator ActionTraits::getEndIter() const
+{
+  return OptionDescription.end();
+}
+
+
Index: src/Actions/ActionTraits.hpp
===================================================================
--- src/Actions/ActionTraits.hpp	(revision d57341daabb0139273e143142890dd48dd9c3dd5)
+++ src/Actions/ActionTraits.hpp	(revision 53be342642ecc5d8c92481d78bf7924d629aad3f)
@@ -14,4 +14,5 @@
 #endif
 
+#include <map>
 #include <string>
 
@@ -28,14 +29,22 @@
 class ActionTraits {
 public:
-  /* TODO: This internal reference is only needed as long as information is not
-   * yet local. Here it is used to gather info from MapOfActions.
-   */
   explicit ActionTraits();
   virtual ~ActionTraits();
 
-  const std::string getCurrentValue();
-  const std::string getDescription();
-  const std::string getShortForm();
-  const std::type_info * getType();
+  typedef std::map<std::string, std::string>::iterator    options_iterator;
+  typedef std::map<std::string, std::string>::const_iterator    options_const_iterator;
+
+  const std::string getCurrentValue() const;
+  const std::string getDescription() const;
+  const std::string getMenuName() const;
+  const int getMenuPosition() const;
+  const std::string getOptionDescription(const std::string descr) const;
+  const std::string getShortForm() const;
+  const std::type_info * getType() const;
+
+  options_iterator getBeginIter();
+  options_iterator getEndIter();
+  options_const_iterator getBeginIter() const;
+  options_const_iterator getEndIter() const;
 
 protected:
@@ -44,4 +53,7 @@
   std::string CurrentValue;
   std::string Description;
+  std::string MenuTitle;
+  int MenuPosition;
+  std::map<std::string, std::string> OptionDescription;
   std::string ShortForm;
   const std::type_info *InternalType;
Index: src/Actions/Action_impl_header.hpp
===================================================================
--- src/Actions/Action_impl_header.hpp	(revision d57341daabb0139273e143142890dd48dd9c3dd5)
+++ src/Actions/Action_impl_header.hpp	(revision 53be342642ecc5d8c92481d78bf7924d629aad3f)
@@ -54,4 +54,21 @@
 )
 #endif
+#ifdef paramdescriptions
+BOOST_PP_ASSERT_MSG(BOOST_PP_EQUAL(MAXPARAMTYPES, BOOST_PP_SEQ_SIZE(paramdescriptions)),\
+  ERROR: There are not the same number of "paramtokens" and "paramdescriptions" in: __FILE__ \
+)
+#endif
+
+// check for mandatory defines
+#ifndef DESCRIPTION
+BOOST_PP_ASSERT_MSG(0, \
+    "ERROR: Description is mandatory for Actions, here for ACTION " \
+)
+#endif
+#ifndef TYPEINFO
+BOOST_PP_ASSERT_MSG(0, \
+    "ERROR: Type is mandatory for Actions, here for ACTION " \
+)
+#endif
 
 // print a list of type ref followed by a separator, i.e. "int i;"
@@ -66,4 +83,13 @@
   BOOST_PP_SEQ_ELEM(n, TYPELIST) \
   BOOST_PP_SEQ_ELEM(n, VARLIST)
+
+// prints OptionDescription.insert
+#define optiondescription_print(z,n,unused, unused2) \
+  OptionDescription. insert (\
+      pair<std::string, std::string> (\
+  BOOST_PP_SEQ_ELEM(n, paramtokens), \
+  BOOST_PP_SEQ_ELEM(n, paramdescriptions) )\
+  );
+
 
 #if defined paramtypes && defined paramreferences
@@ -89,8 +115,15 @@
 #ifdef DESCRIPTION
     Description = DESCRIPTION;
-#else
-    BOOST_PP_ASSERT_MSG(0, \
-        "ERROR: Description is mandatory for Actions, here for ACTION " \
-    )
+#endif
+#ifdef paramdescriptions
+#define BOOST_PP_LOCAL_MACRO(n) optiondescription_print(~, n, ~, )
+#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
+#include BOOST_PP_LOCAL_ITERATE()
+#endif
+#ifdef MENUNAME
+    MenuTitle = MENUNAME;
+#endif
+#ifdef MENUPOSITION
+    MenuPosition = MENUPOSITION;
 #endif
 #ifdef SHORTFORM
@@ -99,8 +132,4 @@
 #ifdef TYPEINFO
     InternalType = TYPEINFO;
-#else
-    BOOST_PP_ASSERT_MSG(0, \
-        "ERROR: Type is mandatory for Actions, here for ACTION " \
-    )
 #endif
   }
