Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision 623e89168dc407fe77c5dbbf192859477cae91d7)
+++ src/Actions/MapOfActions.cpp	(revision 7e6b008345766c6fe1944b6cb57c2847aa592191)
@@ -545,4 +545,16 @@
 }
 
+/** Returns the inverse to MapOfActions::ShortFormMap, i.e. lookup actionname for its short form.
+ * \return map from short form of action to name of action
+ */
+map <std::string, std::string> MapOfActions::getShortFormToActionMap()
+{
+  map <std::string, std::string> result;
+
+  for (map<std::string, std::string>::iterator iter = ShortFormMap.begin(); iter != ShortFormMap.end();  ++iter)
+    result[iter->second] = iter->first;
+
+  return result;
+}
 
 
Index: src/Actions/MapOfActions.hpp
===================================================================
--- src/Actions/MapOfActions.hpp	(revision 623e89168dc407fe77c5dbbf192859477cae91d7)
+++ src/Actions/MapOfActions.hpp	(revision 7e6b008345766c6fe1944b6cb57c2847aa592191)
@@ -30,4 +30,5 @@
   std::string getKeyAndShortForm(string actionname);
   std::string getShortForm(string actionname);
+  map <std::string, std::string> getShortFormToActionMap();
 
   void AddOptionsToParser();
Index: src/CommandLineParser.cpp
===================================================================
--- src/CommandLineParser.cpp	(revision 623e89168dc407fe77c5dbbf192859477cae91d7)
+++ src/CommandLineParser.cpp	(revision 7e6b008345766c6fe1944b6cb57c2847aa592191)
@@ -9,7 +9,10 @@
 #include <fstream>
 #include <iostream>
+#include <map>
 
 #include "Patterns/Singleton_impl.hpp"
 #include "CommandLineParser.hpp"
+#include "log.hpp"
+#include "verbose.hpp"
 
 using namespace std;
@@ -45,4 +48,28 @@
 }
 
+/** Scan the argument list for -a or --arguments and store their order for later use.
+ * \param &ShortFormToActionMap e.g. gives "help" for "h"
+ */
+void CommandLineParser::scanforSequenceOfArguments(map <std::string, std::string> &ShortFormToActionMap)
+{
+  // go through all arguments
+  for (int i=1;i<argc;i++) {
+    (cout << Verbose(1) << "Checking on " << argv[i] << endl);
+    // check whether they begin with - or -- and check that next letter is not numeric, if so insert
+    if (argv[i][0] == '-') {
+      (cout << Verbose(1) << "Possible argument: " << argv[i] << endl);
+      if (argv[i][1] == '-') {
+        (cout << Verbose(1) << "Putting " << argv[i] << " into the sequence." << endl);
+        SequenceOfActions.push_back(&(argv[i][2]));
+      } else if (((argv[i][1] < '0') || (argv[i][1] > '9')) && ((argv[i][1] != '.'))) {
+        map <std::string, std::string>::iterator iter = ShortFormToActionMap.find(&(argv[i][1]));
+        if (iter != ShortFormToActionMap.end()) {
+          (cout << Verbose(1) << "Putting " << iter->second << " for " << iter->first << " into the sequence." << endl);
+          SequenceOfActions.push_back(iter->second);
+        }
+      }
+    }
+  }
+}
 
 
@@ -72,8 +99,9 @@
  * \param **_argv argument array from main()
  */
-void CommandLineParser::Run(int _argc, char **_argv)
+void CommandLineParser::Run(int _argc, char **_argv, map <std::string, std::string> &ShortFormToActionMap)
 {
   setOptions(_argc,_argv);
   Parse();
+  scanforSequenceOfArguments(ShortFormToActionMap);
 }
 
Index: src/CommandLineParser.hpp
===================================================================
--- src/CommandLineParser.hpp	(revision 623e89168dc407fe77c5dbbf192859477cae91d7)
+++ src/CommandLineParser.hpp	(revision 7e6b008345766c6fe1944b6cb57c2847aa592191)
@@ -15,4 +15,5 @@
 #include "Patterns/Singleton.hpp"
 
+#include <list>
 
 class CommandLineParser : public Singleton<CommandLineParser> {
@@ -21,5 +22,5 @@
 
   // Parses the command line arguments in CommandLineParser::**argv with currently known options.
-  void Run(int _argc, char **_argv);
+  void Run(int _argc, char **_argv, std::map <std::string, std::string> &ShortFormToActionMap);
 
   // Checks whether there have been any commands on the command line.
@@ -40,4 +41,7 @@
   po::variables_map vm;
 
+  // private sequence of actions as they appeared on the command line
+  std::list<std::string> SequenceOfActions;
+
 private:
   // private constructor and destructor
@@ -57,4 +61,8 @@
   void Parse();
 
+  // as boost's program_options does not care about of order of appearance but we do for actions,
+  // we have to have a list and a function to obtain it.
+  void scanforSequenceOfArguments(std::map <std::string, std::string> &ShortFormToActionMap);
+
   // argument counter and array passed on from main()
   int argc;
Index: src/UIElements/CommandLineUI/CommandLineWindow.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision 623e89168dc407fe77c5dbbf192859477cae91d7)
+++ src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision 7e6b008345766c6fe1944b6cb57c2847aa592191)
@@ -79,8 +79,8 @@
 void CommandLineWindow::display() {
   // go through all possible actions
-  for (po::variables_map::iterator CommandRunner = CommandLineParser::getInstance().vm.begin(); CommandRunner != CommandLineParser::getInstance().vm.end(); ++CommandRunner) {
-    cout << "Checking presence of " << CommandRunner->first << endl;
-    if (ActionRegistry::getInstance().isActionByNamePresent(CommandRunner->first))
-      ActionRegistry::getInstance().getActionByName(CommandRunner->first)->call();
+  for (std::list<std::string>::iterator CommandRunner = CommandLineParser::getInstance().SequenceOfActions.begin(); CommandRunner != CommandLineParser::getInstance().SequenceOfActions.end(); ++CommandRunner) {
+    cout << "Checking presence of " << *CommandRunner << endl;
+    if (ActionRegistry::getInstance().isActionByNamePresent(*CommandRunner))
+      ActionRegistry::getInstance().getActionByName(*CommandRunner)->call();
   }
 }
Index: src/builder.cpp
===================================================================
--- src/builder.cpp	(revision 623e89168dc407fe77c5dbbf192859477cae91d7)
+++ src/builder.cpp	(revision 7e6b008345766c6fe1944b6cb57c2847aa592191)
@@ -2315,5 +2315,6 @@
       // handle remaining arguments by CommandLineParser
       MapOfActions::getInstance().AddOptionsToParser();
-      CommandLineParser::getInstance().Run(ArgcSize,Arguments);
+      map <std::string, std::string> ShortFormToActionMap = MapOfActions::getInstance().getShortFormToActionMap();
+      CommandLineParser::getInstance().Run(ArgcSize,Arguments, ShortFormToActionMap);
       if (!CommandLineParser::getInstance().isEmpty()) {
         DoLog(0) && (Log() << Verbose(0) << "Setting UI to CommandLine." << endl);
