Index: src/Actions/Action.hpp
===================================================================
--- src/Actions/Action.hpp	(revision be21faee0c27bbf2439e848bacfe01d94e55d9e0)
+++ src/Actions/Action.hpp	(revision b2c30277e29ff71804fcb5db963189440f56db52)
@@ -36,9 +36,42 @@
 namespace MoleCuilder {
 
-/**
- * Base class for all actions.
+/** Actions are Command patterns to allow for undoing and redoing.
+ *
+ * Each specific Action derives from this class to implement a certain functionality.
  *
  * Actions describe something that has to be done.
- * Actions can be passed around, stored, performed and undone (Command-Pattern).
+ * Actions can be passed around, stored, performed and undone (Command-Pattern:
+ * http://en.wikipedia.org/wiki/Command_pattern).
+ *
+ * Unique to each Action is its ActionTrait, i.e. the options it requires
+ * to perform a certain function. E.g. in order to execute a "add atom" Action
+ * we need to know a position and an element. These options have certain
+ * properties, see \ref OptionTrait and \ref ActionTrait wherein these are stored.
+ * Essentially, each option is stored as an \ref OptionTrait instance and
+ * contains the token, default value, a description, the type, ...
+ *
+ * ActionTrait itself is also an OptionTrait because the command token may actually
+ * coincide with an option-token. E.g. this allows "...--add-atom 3" to mean
+ * both execute the action under token "add-atom" and that the option "add-atom"
+ * (the new atom's \ref element number) should contain 3.
+ *
+ * \ref ActionTrait contains a map of all associated options. With this in the cstor
+ * we register not only the Action with the \ref ActionRegistry but also each of
+ * its \link options OptionTrait \endlink with the \ref OptionRegistry.
+ *
+ * The token of the option is unique, but two Action's may share the same token if:
+ * -# they have the same default value
+ * -# they have the same type
+ *
+ * This requirement is easy because if you need to store some option of another
+ * type, simply think of a new suitable name for it.
+ *
+ * The actual value, i.e. "3" in the "add-atom" example, is taken from the
+ * ValueStorage, see \ref Dialog for how this is possible.
+ *
+ * \note There is a unit test that checks on the consistency of all registered
+ * options, also in "--enable-debug"-mode assertions will check that an option
+ * has not been registered before under another type.
+ *
  */
 class Action
Index: src/Actions/ActionRegistry.hpp
===================================================================
--- src/Actions/ActionRegistry.hpp	(revision be21faee0c27bbf2439e848bacfe01d94e55d9e0)
+++ src/Actions/ActionRegistry.hpp	(revision b2c30277e29ff71804fcb5db963189440f56db52)
@@ -30,4 +30,11 @@
  * It is a singleton and can be called from anywhere.
  *
+ * ActionRegistry::fillRegistry() is the essential function, called in the cstor,
+ * where all the prototypical Action's are instantiated. To this end, we sadly
+ * require a global list of all present actions (\note there is a regression test
+ * check on its completeness). We include \ref GlobalListOfActionsh.hpp where a
+ * boost::preprocessor sequence is contained that is then used to install each
+ * of the Action's in the registry.
+ *
  */
 class ActionRegistry : public Singleton<ActionRegistry>, public Registry<Action>
Index: src/Actions/ValueStorage.hpp
===================================================================
--- src/Actions/ValueStorage.hpp	(revision be21faee0c27bbf2439e848bacfe01d94e55d9e0)
+++ src/Actions/ValueStorage.hpp	(revision b2c30277e29ff71804fcb5db963189440f56db52)
@@ -84,10 +84,27 @@
 #include "CodePatterns/Singleton.hpp"
 
-/** ValueStorage serves as a mediator to MapOfActions.
+/** ValueStorage is a container for any type of value.
+ *
  * This is needed to relax inter-dependencies between the Queries and the Actions.
- * I.e. this is the interface implemented in MapOfActions which both can safely rely on
- * to store&retrieve/exchange values.
- *
- * \section ValueStorage ValueStorage howto
+ *
+ * The ValueStorage is necessary because we do not a-priori know about the
+ * type of a value as given by the user. The type is handled via RTTI (run-time
+ * type information), and the value is cast to string stored under a specific
+ * token in a map inside this class.
+ *
+ * Not any value can be stored in this container. We rely on OptionRegistry to allow
+ * only tokens whose type has been defined beforehand. I.e. for each option we
+ * require a specific and unique type.
+ *
+ * Then, there are three types of functions:
+ * -# queryCurrentValue: request a value under a specific token
+ * -# setCurrentValue: set/enter a value under a specific token
+ * -# isCurrentValuePresent: ask whether a value under a specific token is contained
+ *
+ * For the first two we have templated version and a number of specialized ones to
+ * deal with some types specific to this code: \ref atom, \ref Box, \ref element,
+ * \ref molecule, ...
+ *
+ * \section ValueStorage-extend ValueStorage extension howto
  *
  * If you ever need to add a particular class to the ValueStorage, do as follows:
@@ -98,4 +115,10 @@
  *    class' members to a stringstream or use an already implemented operator<<
  *    or operator<<, respectively.
+ *
+ * \section ValueStorage-further-info Further information
+ *
+ * If you want to know in detail how this all works with the options, where they
+ * come from and how values end up in the ValueStorage, then look at \ref  actions
+ * and \ref  userinterfaces.
  *
  */
