Index: src/Actions/Action.cpp
===================================================================
--- src/Actions/Action.cpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/Action.cpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -168,4 +168,8 @@
 }
 
+void Action::insertAction(Action *_action, enum Action::QueryOptions state)
+{
+  ActionQueue::getInstance().insertAction(_action, state);
+}
 
 bool Action::isActive(){
Index: src/Actions/Action.hpp
===================================================================
--- src/Actions/Action.hpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/Action.hpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -261,4 +261,13 @@
   virtual void endTimer() const {};
 
+  /** Function pass-through for ActionQueue::insertAction().
+   *
+   * This pass-through is present to allow each derived Action access to private
+   * ActionQueue::insertAction() which is not possible otherwise as friendship
+   * is not inherited.
+   *
+   */
+  static void insertAction(Action *_action, enum Action::QueryOptions state);
+
 private:
 
Index: src/Actions/ActionQueue.cpp
===================================================================
--- src/Actions/ActionQueue.cpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/ActionQueue.cpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -87,4 +87,9 @@
     World::getInstance().setExitFlag(5);
   }
+}
+
+void ActionQueue::insertAction(Action *_action, enum Action::QueryOptions state)
+{
+  queueAction(_action, state);
 }
 
Index: src/Actions/ActionQueue.hpp
===================================================================
--- src/Actions/ActionQueue.hpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/ActionQueue.hpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -140,4 +140,12 @@
   void clear();
 
+  /** Insert an action after CurrentAction.
+   *
+   * This is implemented only to allow action's COMMAND to work. If we
+   * were to use queueAction, actions would come after all other already
+   * present actions.
+   */
+  void insertAction(Action *_action, enum Action::QueryOptions state);
+
 private:
   /** Private cstor for ActionQueue.
Index: src/Actions/Action_impl_header.hpp
===================================================================
--- src/Actions/Action_impl_header.hpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/Action_impl_header.hpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -144,4 +144,9 @@
   ASSERT(tester.second, "ActionTrait<ACTION>::ActionTrait<ACTION>() option token present twice!");
 
+#define stringtype std::string
+
+#define type2string(s, data, elem) \
+  stringtype
+
 namespace MoleCuilder {
 
@@ -149,4 +154,12 @@
 #if defined paramtypes && defined paramreferences
 #define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, paramtypes, paramreferences)
+#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
+#include BOOST_PP_LOCAL_ITERATE()
+#endif
+    );
+
+void BOOST_PP_CAT( COMMAND, _stringargs)(
+#if defined paramtypes && defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
+#define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, BOOST_PP_SEQ_TRANSFORM( type2string, , paramtypes), paramreferences)
 #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
 #include BOOST_PP_LOCAL_ITERATE()
@@ -199,13 +212,19 @@
 class ACTION : public Action {
 #endif
-  #if defined paramtypes && defined paramreferences
   friend void COMMAND(
-  #define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, paramtypes, paramreferences)
-  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
-  #include BOOST_PP_LOCAL_ITERATE()
+#if defined paramtypes && defined paramreferences
+#define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, paramtypes, paramreferences)
+#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
+#include BOOST_PP_LOCAL_ITERATE()
+#endif
       );
-  # else
-  void COMMAND();
-  #endif
+
+  friend void BOOST_PP_CAT( COMMAND, _stringargs)(
+#if defined paramtypes && defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
+#define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, BOOST_PP_SEQ_TRANSFORM( type2string, , paramtypes), paramreferences)
+#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
+#include BOOST_PP_LOCAL_ITERATE()
+#endif
+      );
 
 public:
Index: src/Actions/Action_impl_pre.hpp
===================================================================
--- src/Actions/Action_impl_pre.hpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/Action_impl_pre.hpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -376,5 +376,5 @@
 #include BOOST_PP_LOCAL_ITERATE()
 #endif
-  ActionQueue::getInstance().queueAction( ToCall, Action::NonInteractive);
+  Action::insertAction( ToCall, Action::NonInteractive);
 };
 
@@ -393,5 +393,5 @@
 #include BOOST_PP_LOCAL_ITERATE()
 #endif
-  ActionQueue::getInstance().queueAction( ToCall, Action::NonInteractive);
+  Action::insertAction( ToCall, Action::NonInteractive);
 };
 
Index: src/Actions/GlobalListOfActions.hpp
===================================================================
--- src/Actions/GlobalListOfActions.hpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/GlobalListOfActions.hpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -15,4 +15,5 @@
 
 #include <boost/preprocessor/seq/push_back.hpp>
+#include <boost/preprocessor/seq/remove.hpp>
 
 // this is global list of actions valid for all cases
@@ -166,5 +167,4 @@
 
 // define final list
-
 #ifdef HAVE_PYTHON
 #define GLOBALLISTOFACTIONS_PYTHON \
Index: src/Actions/Makefile.am
===================================================================
--- src/Actions/Makefile.am	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/Makefile.am	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -663,7 +663,9 @@
 	echo "#define ALLACTIONPYTHON_HPP_" >>$@; \
 	for file in $(ACTIONPROTOTYPESHEADER); do \
-		echo "#include \"`echo $$file | sed -e 's/hpp/def/'`\"" >>$@; \
-		echo "#include \"Actions/Action_impl_python.hpp\"" >>$@; \
-		echo "#include \"Actions/Action_impl_undef.hpp\"" >>$@; \
+		if test "$$file" != "Actions/CommandAction/LoadSessionAction.hpp"; then \
+			echo "#include \"`echo $$file | sed -e 's/hpp/def/'`\"" >>$@; \
+			echo "#include \"Actions/Action_impl_python.hpp\"" >>$@; \
+			echo "#include \"Actions/Action_impl_undef.hpp\"" >>$@; \
+		fi; \
 	done; \
 	echo "#endif /* ALLACTIONPYTHON_HPP_ */" >>$@;
Index: src/Actions/MakroAction_impl_header.hpp
===================================================================
--- src/Actions/MakroAction_impl_header.hpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/MakroAction_impl_header.hpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -145,4 +145,9 @@
   ASSERT(tester.second, "ActionTrait<ACTION>::ActionTrait<ACTION>() option token present twice!");
 
+#define stringtype std::string
+
+#define type2string(s, data, elem) \
+  stringtype
+
 namespace MoleCuilder {
 
@@ -150,4 +155,12 @@
 #if defined paramtypes && defined paramreferences
 #define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, paramtypes, paramreferences)
+#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
+#include BOOST_PP_LOCAL_ITERATE()
+#endif
+    );
+
+void BOOST_PP_CAT( COMMAND, _stringargs)(
+#if defined paramtypes && defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
+#define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, BOOST_PP_SEQ_TRANSFORM( type2string, , paramtypes), paramreferences)
 #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
 #include BOOST_PP_LOCAL_ITERATE()
@@ -196,13 +209,19 @@
 
 class ACTION : public MakroAction {
-  #if defined paramtypes && defined paramreferences
   friend void COMMAND(
-  #define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, paramtypes, paramreferences)
-  #define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
-  #include BOOST_PP_LOCAL_ITERATE()
+#if defined paramtypes && defined paramreferences
+#define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, paramtypes, paramreferences)
+#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
+#include BOOST_PP_LOCAL_ITERATE()
+#endif
       );
-  # else
-  void COMMAND();
-  #endif
+
+  friend void BOOST_PP_CAT( COMMAND, _stringargs)(
+#if defined paramtypes && defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
+#define BOOST_PP_LOCAL_MACRO(n) type_list(~, n, BOOST_PP_SEQ_TRANSFORM( type2string, , paramtypes), paramreferences)
+#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
+#include BOOST_PP_LOCAL_ITERATE()
+#endif
+      );
 
 public:
Index: src/Actions/MakroAction_impl_pre.hpp
===================================================================
--- src/Actions/MakroAction_impl_pre.hpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Actions/MakroAction_impl_pre.hpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -371,5 +371,5 @@
 #include BOOST_PP_LOCAL_ITERATE()
 #endif
-  ActionQueue::getInstance().queueAction( ToCall, Action::NonInteractive);
+  Action::insertAction( ToCall, Action::NonInteractive);
 };
 
@@ -388,5 +388,5 @@
 #include BOOST_PP_LOCAL_ITERATE()
 #endif
-  ActionQueue::getInstance().queueAction( ToCall, Action::NonInteractive);
+  Action::insertAction( ToCall, Action::NonInteractive);
 };
 
Index: src/Python/PythonScripting_impl.hpp
===================================================================
--- src/Python/PythonScripting_impl.hpp	(revision cc6e5c6fa2abf74b6087c374278e2a20dc23706e)
+++ src/Python/PythonScripting_impl.hpp	(revision 975b83561278df8e9f4dc52a379883b4c726b00e)
@@ -119,6 +119,6 @@
 #define export_print(z,n,list) \
   BOOST_PP_CAT(export_, BOOST_PP_SEQ_ELEM(n, list))();
-#define BOOST_PP_LOCAL_MACRO(n) export_print(~, n, GLOBALLISTOFACTIONS)
-#define BOOST_PP_LOCAL_LIMITS  (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GLOBALLISTOFACTIONS)))
+#define BOOST_PP_LOCAL_MACRO(n) export_print(~, n, GLOBALLISTOFPYTHONACTIONS)
+#define BOOST_PP_LOCAL_LIMITS  (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GLOBALLISTOFPYTHONACTIONS)))
 #include BOOST_PP_LOCAL_ITERATE()
 #undef instance_print
