Index: src/Actions/ActionRegistry.cpp
===================================================================
--- src/Actions/ActionRegistry.cpp	(revision aee2dabfffde9df5844f0967184afb9f4888bc87)
+++ src/Actions/ActionRegistry.cpp	(revision 83e90c5ba27374b18c88dac99eccef2300119c69)
@@ -24,4 +24,12 @@
 #include "CodePatterns/Registry_impl.hpp"
 
+#include "GlobalListOfActions.hpp"
+
+#include "AllActionHeaders.hpp"
+
+#include <boost/preprocessor/iteration/local.hpp>
+#include <boost/preprocessor/seq/elem.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+
 using namespace MoleCuilder;
 
@@ -29,5 +37,8 @@
  */
 ActionRegistry::ActionRegistry()
-{}
+{
+  //std::cout << "ActionRegistry::ActionRegistry() called, instance is " << this << "." << std::endl;
+  fillRegistry();
+}
 
 /** Destructor for class ActionRegistry.
@@ -35,5 +46,25 @@
 ActionRegistry::~ActionRegistry()
 {
+  //std::cout << "ActionRegistry::~ActionRegistry() called, instance is " << this << "." << std::endl;
   cleanup();
+}
+
+
+/** Instantiates each existing Action.
+ *
+ */
+void ActionRegistry::fillRegistry()
+{
+#define instance_print(z,n,list) \
+	{ \
+	Action * presentAction = new \
+	BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(n, list), Action) \
+	(); \
+	registerInstance(presentAction); \
+	}
+#define BOOST_PP_LOCAL_MACRO(n) instance_print(~, n, GLOBALLISTOFACTIONS)
+#define BOOST_PP_LOCAL_LIMITS  (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GLOBALLISTOFACTIONS)))
+#include BOOST_PP_LOCAL_ITERATE()
+#undef instance_print  
 }
 
Index: src/Actions/ActionRegistry.hpp
===================================================================
--- src/Actions/ActionRegistry.hpp	(revision aee2dabfffde9df5844f0967184afb9f4888bc87)
+++ src/Actions/ActionRegistry.hpp	(revision 83e90c5ba27374b18c88dac99eccef2300119c69)
@@ -44,4 +44,6 @@
   ActionRegistry();
   ~ActionRegistry();
+
+  void fillRegistry();
 };
 
Index: src/Actions/Action_impl_pre.hpp
===================================================================
--- src/Actions/Action_impl_pre.hpp	(revision aee2dabfffde9df5844f0967184afb9f4888bc87)
+++ src/Actions/Action_impl_pre.hpp	(revision 83e90c5ba27374b18c88dac99eccef2300119c69)
@@ -174,9 +174,10 @@
 
 // (const) prototype to be placed into the ActionRegistry (must be deleted by registry itself)
-const ACTION *INSTANCE = new ACTION();
+//const ACTION INSTANCE;
+//boost::shared_ptr< ACTION > INSTANCE( new ACTION() );
 
 // =========== constructor ===========
 ACTION::ACTION () :
-  Action(ActionTrait<ACTION>())
+  Action(ActionTrait< ACTION >(), false)
 {}
 
Index: src/Actions/GlobalListOfActions.hpp
===================================================================
--- src/Actions/GlobalListOfActions.hpp	(revision 83e90c5ba27374b18c88dac99eccef2300119c69)
+++ src/Actions/GlobalListOfActions.hpp	(revision 83e90c5ba27374b18c88dac99eccef2300119c69)
@@ -0,0 +1,106 @@
+/*
+ * GlobalListOfActions.hpp
+ *
+ *  Created on: Sep 21, 2011
+ *      Author: heber
+ */
+
+#ifndef GLOBALLISTOFACTIONS_HPP_
+#define GLOBALLISTOFACTIONS_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#define GLOBALLISTOFACTIONS \
+	(Redo) \
+	(GraphSubgraphDissection) \
+	(GraphCreateAdjacency) \
+	(GraphDepthFirstSearch) \
+	(MoleculeSaveTemperature) \
+	(MoleculeCopy) \
+	(MoleculeCreateMicelle) \
+	(MoleculeSuspendInWater) \
+	(MoleculeFillWithMolecule) \
+	(MoleculeRotateToPrincipalAxisSystem) \
+	(MoleculeSaveAdjacency) \
+	(MoleculeFillVoidWithMolecule) \
+	(MoleculeVerletIntegration) \
+	(MoleculeChangeName) \
+	(MoleculeRotateAroundSelfByAngle) \
+	(MoleculeSaveSelectedMolecules) \
+	(MoleculeSaveBonds) \
+	(MoleculeLinearInterpolationofTrajectories) \
+	(MoleculeLoad) \
+	(MoleculeBondFile) \
+	(TesselationNonConvexEnvelope) \
+	(TesselationConvexEnvelope) \
+	(CommandElementDb) \
+	(CommandVerbose) \
+	(CommandWarranty) \
+	(CommandVersion) \
+	(CommandHelp) \
+	(CommandBondLengthTable) \
+	(CommandFastParsing) \
+	(ParserSetTremoloAtomdata) \
+	(ParserParseTremoloPotentials) \
+	(ParserSetParserParameters) \
+	(ParserSetOutputFormats) \
+	(AnalysisDipoleAngularCorrelation) \
+	(AnalysisDipoleCorrelation) \
+	(AnalysisPairCorrelation) \
+	(AnalysisPointCorrelation) \
+	(AnalysisSurfaceCorrelation) \
+	(AnalysisMolecularVolume) \
+	(AnalysisPrincipalAxisSystem) \
+	(CommandSetRandomNumbersEngine) \
+	(CommandSetRandomNumbersDistribution) \
+	(Undo) \
+	(AtomSaveSelectedAtoms) \
+	(AtomRotateAroundOriginByAngle) \
+	(AtomChangeElement) \
+	(AtomRemove) \
+	(AtomTranslate) \
+	(AtomAdd) \
+	(WorldCenterInBox) \
+	(WorldRepeatBox) \
+	(WorldChangeBox) \
+	(WorldCenterOnEdge) \
+	(WorldSetWorldTime) \
+	(WorldOutput) \
+	(WorldSetDefaultName) \
+	(WorldScaleBox) \
+	(WorldAddEmptyBoundary) \
+	(WorldBoundInBox) \
+	(WorldInput) \
+	(SelectionNotMoleculeOfAtom) \
+	(SelectionNotAllMolecules) \
+	(SelectionNotMoleculeById) \
+	(SelectionMoleculeByOrder) \
+	(SelectionMoleculeOfAtom) \
+	(SelectionNotMoleculeByOrder) \
+	(SelectionMoleculeByName) \
+	(SelectionMoleculeById) \
+	(SelectionAllMolecules) \
+	(SelectionClearAllMolecules) \
+	(SelectionMoleculeByFormula) \
+	(SelectionNotMoleculeByFormula) \
+	(SelectionNotMoleculeByName) \
+	(SelectionNotAtomById) \
+	(SelectionAllAtomsInsideCuboid) \
+	(SelectionAllAtoms) \
+	(SelectionClearAllAtoms) \
+	(SelectionNotAllAtoms) \
+	(SelectionNotAtomByElement) \
+	(SelectionAllAtomsInsideSphere) \
+	(SelectionAllAtomsOfMolecule) \
+	(SelectionNotAllAtomsInsideSphere) \
+	(SelectionAtomByElement) \
+	(SelectionNotAllAtomsOfMolecule) \
+	(SelectionNotAllAtomsInsideCuboid) \
+	(SelectionAtomById) \
+	(FragmentationFragmentation)
+
+#endif /* GLOBALLISTOFACTIONS_HPP_ */
+
Index: src/Actions/Makefile.am
===================================================================
--- src/Actions/Makefile.am	(revision aee2dabfffde9df5844f0967184afb9f4888bc87)
+++ src/Actions/Makefile.am	(revision 83e90c5ba27374b18c88dac99eccef2300119c69)
@@ -407,7 +407,10 @@
 libMolecuilderActionPrototypes_la_includedir = $(includedir)/MoleCuilder/Actions/
 
+BUILT_SOURCES += AllActionHeaders.hpp
+
 #	UIElements/libMolecuilderUI.la
 nobase_libMolecuilderActions_la_include_HEADERS = ${ACTIONSHEADER}
-nobase_libMolecuilderActionPrototypes_la_include_HEADERS = ${ACTIONPROTOTYPESHEADER} ${ACTIONPROTOTYPESDEFS}
+nobase_libMolecuilderActionPrototypes_la_include_HEADERS = ${ACTIONPROTOTYPESHEADER} ${ACTIONPROTOTYPESDEFS} AllActionHeaders.hpp
+nodist_libMolecuilderActionPrototypes_la_include_HEADERS = AllActionHeaders.hpp
 
 ## Define the source file list for the "libexample-@MOLECUILDER_API_VERSION@.la"
@@ -447,2 +450,13 @@
 #pkgconfigdir = $(libdir)/pkgconfig
 #pkgconfig_DATA = $(top_builddir)/MoleCuilder.pc
+
+AllActionHeaders.hpp: $(ACTIONPROTOTYPESHEADER)
+	echo "#ifndef ALLACTIONHEADERS_HPP_" >$@; \
+	echo "#define ALLACTIONHEADERS_HPP_" >>$@; \
+	for file in $(ACTIONPROTOTYPESHEADER); do \
+		echo "#include \"$$file\"" >>$@; \
+	done; \
+	echo "#endif /* ALLACTIONHEADERS_HPP_ */" >>$@;
+
+MOSTLYCLEANFILES += \
+	AllActionHeaders.hpp
