Index: src/Actions/Action_impl_python.hpp
===================================================================
--- src/Actions/Action_impl_python.hpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
+++ src/Actions/Action_impl_python.hpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
@@ -0,0 +1,141 @@
+/*
+ * Action_impl_python.hpp
+ *
+ *  Created on: Sep 25, 2011
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/comparison/equal.hpp>
+#include <boost/preprocessor/control/if.hpp>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/preprocessor/debug/assert.hpp>
+#include <boost/preprocessor/facilities/expand.hpp>
+#include <boost/preprocessor/iteration/local.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+
+#define NODEFAULT ""
+
+// some derived names: if CATEGORY is not given, we don't prefix with it
+#ifdef CATEGORY
+#define ACTION BOOST_PP_CAT(CATEGORY, BOOST_PP_CAT(ACTIONNAME, Action))
+#define COMMAND BOOST_PP_CAT(CATEGORY, ACTIONNAME)
+#define PARAMS BOOST_PP_CAT(CATEGORY, BOOST_PP_CAT(ACTIONNAME, Parameters))
+#else
+#define ACTION BOOST_PP_CAT(ACTIONNAME, Action)
+#define COMMAND ACTIONNAME
+#define PARAMS BOOST_PP_CAT(ACTIONNAME, Parameters)
+#endif
+
+// check if no lists given
+#ifndef paramtokens
+#define MAXPARAMTYPES 0
+#else
+#define MAXPARAMTYPES BOOST_PP_SEQ_SIZE(paramtokens)
+#endif
+
+// calculate numbers and check whether all have same size
+#ifdef paramtokens
+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
+
+// print a list of "action separator description linenend, i.e. "Action - descrption\n"
+#define help_print(z,n,TYPELIST, VARLIST, separator, lineend) \
+  BOOST_PP_IF(n, +, BOOST_PP_EMPTY()) \
+  "\t" + std::string( BOOST_PP_SEQ_ELEM(n, TYPELIST) ) + \
+  std::string( separator ) + \
+  std::string( BOOST_PP_SEQ_ELEM(n, VARLIST) ) + \
+  std::string( lineend )
+
+// print a list of comma-separated list, i.e. (,)arg("Action")=default
+#define stringdefault_print(z,n,STRINGLIST, DEFAULTLIST) \
+  BOOST_PP_COMMA_IF(n) \
+  boost::python::arg( \
+  BOOST_PP_SEQ_ELEM(n, STRINGLIST) \
+  ) \
+  = BOOST_PP_SEQ_ELEM(n, DEFAULTLIST)
+
+// print a list of comma-separated list, i.e. (,)arg("Action")
+#define string_print(z,n,STRINGLIST) \
+  BOOST_PP_COMMA_IF(n) \
+  boost::python::arg( \
+  BOOST_PP_SEQ_ELEM(n, STRINGLIST) \
+  )
+
+// print a list of type ref followed, i.e. "int i, double position"
+#define type_list(z,n,TYPELIST, VARLIST) \
+  BOOST_PP_COMMA_IF(n)\
+  BOOST_PP_SEQ_ELEM(n, TYPELIST) \
+  BOOST_PP_SEQ_ELEM(n, VARLIST)
+
+// prints set/queryCurrentValue (command) for paramreferences and paramtokens
+#define value_print(z,n,command, prefix) \
+  ValueStorage::getInstance(). command (\
+  BOOST_PP_SEQ_ELEM(n, paramtokens)\
+  , \
+  prefix\
+  BOOST_PP_SEQ_ELEM(n, paramreferences)\
+  );
+
+#define stringtype std::string
+
+#define type2string(s, data, elem) \
+	stringtype
+
+#include "Actions/Action.hpp"
+#include "Actions/ActionRegistry.hpp"
+#include "Actions/ValueStorage.hpp"
+
+namespace MoleCuilder {
+	void BOOST_PP_CAT( COMMAND, _stringargs)(
+#if defined paramtypes
+#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
+	);
+}
+
+void BOOST_PP_CAT(export_, COMMAND)()
+{
+  std::string docstring =
+    std::string( DESCRIPTION ) + "\n\n"
+#if defined paramtokens && defined paramdescriptions
+#define BOOST_PP_LOCAL_MACRO(n) help_print(~, n, paramtokens, paramdescriptions, " - ", "\n")
+#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
+#include BOOST_PP_LOCAL_ITERATE()
+#endif
+  ;
+  boost::python::def(
+    BOOST_PP_STRINGIZE(COMMAND),
+    MoleCuilder:: BOOST_PP_CAT( COMMAND, _stringargs)
+#if defined paramtokens // do we have parameters at all?
+   ,(
+#if defined paramdefaults
+#define BOOST_PP_LOCAL_MACRO(n) stringdefault_print(~, n, paramtokens, paramdefaults)
+#else
+#define BOOST_PP_LOCAL_MACRO(n) string_print(~, n, paramtokens)
+#endif
+#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
+#include BOOST_PP_LOCAL_ITERATE()
+  ), docstring.c_str()
+#endif
+  );
+}
+
+#undef COMMAND
+#undef ACTION
+#undef PARAMS
+#undef MAXPARAMTYPES
+
+#undef value_print
+#undef type_list
+#undef string_print
+#undef stringdefault_print
Index: src/Actions/Action_impl_undef.hpp
===================================================================
--- src/Actions/Action_impl_undef.hpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
+++ src/Actions/Action_impl_undef.hpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
@@ -0,0 +1,29 @@
+/*
+ * Action_impl_undef.hpp
+ *
+ *  Created on: Sep 25, 2011
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#undef paramtypes
+#undef paramtokens
+#undef paramdescriptions
+#undef paramdefaults
+#undef paramreferences
+
+#undef statetypes
+#undef statereferences
+
+#undef CATEGORY
+#undef MENUNAME
+#undef MENUPOSITION
+#undef ACTIONNAME
+#undef TOKEN
+
+#undef DESCRIPTION
+#undef SHORTFORM
Index: src/Actions/Makefile.am
===================================================================
--- src/Actions/Makefile.am	(revision 0712434880db2974e2088075ea714dc43b8900e6)
+++ src/Actions/Makefile.am	(revision 9499532892bd8d49658849069d442402314d3a4b)
@@ -407,5 +407,5 @@
 libMolecuilderActionPrototypes_la_includedir = $(includedir)/MoleCuilder/Actions/
 
-BUILT_SOURCES += AllActionHeaders.hpp
+BUILT_SOURCES += AllActionHeaders.hpp AllActionPython.hpp
 
 #	UIElements/libMolecuilderUI.la
@@ -459,4 +459,16 @@
 	echo "#endif /* ALLACTIONHEADERS_HPP_ */" >>$@;
 
+AllActionPython.hpp: $(ACTIONPROTOTYPESHEADER)
+	echo "#ifndef ALLACTIONPYTHON_HPP_" >$@; \
+	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\"" >>$@; \
+	done; \
+	echo "#endif /* ALLACTIONPYTHON_HPP_ */" >>$@;
+
+
 MOSTLYCLEANFILES += \
-	AllActionHeaders.hpp
+	AllActionHeaders.hpp \
+	AllActionPython.hpp
Index: src/Actions/pyMoleCuilder.cpp
===================================================================
--- src/Actions/pyMoleCuilder.cpp	(revision 0712434880db2974e2088075ea714dc43b8900e6)
+++ src/Actions/pyMoleCuilder.cpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
@@ -18,5 +18,5 @@
 #endif
 
-#include <boost/python/def.hpp>
+#include <boost/python.hpp>
 #include <boost/python/module.hpp>
 #include <boost/python/args.hpp>
@@ -24,13 +24,31 @@
 #include "CodePatterns/MemDebug.hpp"
 
-#include "Actions/CommandAction/HelpAction.hpp"
+//!> define all present actions
+#include "GlobalListOfActions.hpp"
+
+//!> python wrapping for all of these actions
+#include "AllActionPython.hpp"
+
+#include "cleanUp.hpp"
+#include "Actions/ActionHistory.hpp"
+
 
 BOOST_PYTHON_MODULE(pyMoleCuilder)
 {
-  boost::python::def(
-      "CommandHelp",
-      MoleCuilder::CommandHelp,
-      boost::python::args("actionname"),
-      "this gives a list of all Actions."
-      );
+  // need to init the history before any action is created
+  MoleCuilder::ActionHistory::init();
+
+  // from this moment on, we need to be sure to deeinitialize in the correct order
+  // this is handled by the cleanup function
+  atexit(cleanUp);
+
+  // set the docstring of the current module scope
+  boost::python::scope().attr("__doc__") = "pyMolecuilder are the python bindings to all Actions of the program suite MoleCuilder.\n\nMoleCuilder is a program to build molecular (dynamics) worlds, allowing you indefinite manipulation, control and analysis over the atoms and molecules within a simulation domain.";
+
+#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)))
+#include BOOST_PP_LOCAL_ITERATE()
+#undef instance_print  
 }
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 0712434880db2974e2088075ea714dc43b8900e6)
+++ src/Makefile.am	(revision 9499532892bd8d49658849069d442402314d3a4b)
@@ -271,5 +271,8 @@
 
 pyexec_LTLIBRARIES += pyMoleCuilder.la
-pyMoleCuilder_la_SOURCES = Actions/pyMoleCuilder.cpp
+pyMoleCuilder_la_SOURCES = \
+	cleanUp.cpp \
+	cleanUp.hpp \
+	Actions/pyMoleCuilder.cpp
 pyMoleCuilder_la_CPPFLAGS = ${BOOST_CPPFLAGS} ${CodePatterns_CFLAGS} -I$(PYTHON_INCLUDE_DIR)
 pyMoleCuilder_la_LDFLAGS = -module -avoid-version -shared
@@ -284,5 +287,10 @@
 #molecuilder_CXXFLAGS += -DNO_CACHING
 molecuilder_LDFLAGS = $(AM_LDFLAGS) $(BOOST_FILESYSTEM_LDFLAGS) $(BOOST_PROGRAM_OPTIONS_LDFLAGS) $(BOOST_RANDOM_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_THREAD_LDFLAGS)
-molecuilder_SOURCES = builder.cpp builder_init.cpp builder_init.hpp
+molecuilder_SOURCES = \
+	builder.cpp \
+	builder_init.cpp \
+	builder_init.hpp \
+	cleanUp.cpp \
+	cleanUp.hpp
 molecuilder_LDADD = \
 	libMolecuilderUI.la \
@@ -296,5 +304,10 @@
 
 #Stuff for building the GUI using Qt
-molecuildergui_SOURCES = builder.cpp builder_init.cpp builder_init.hpp
+molecuildergui_SOURCES = \
+	builder.cpp \
+	builder_init.cpp \
+	builder_init.hpp \
+	cleanUp.cpp \
+	cleanUp.hpp
 molecuildergui_CXXFLAGS = $(AM_CPPFLAGS) -DUSE_GUI_QT
 molecuildergui_LDFLAGS = $(AM_LDFLAGS) $(BOOST_FILESYSTEM_LDFLAGS) $(BOOST_PROGRAM_OPTIONS_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_THREAD_LDFLAGS)
Index: src/builder_init.cpp
===================================================================
--- src/builder_init.cpp	(revision 0712434880db2974e2088075ea714dc43b8900e6)
+++ src/builder_init.cpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
@@ -23,37 +23,30 @@
 #include <iostream>
 
-#include "config.hpp"
-#include "molecule.hpp"
-#include "World.hpp"
+#include "Actions/ActionHistory.hpp"
+#include "Actions/ActionExceptions.hpp"
 
-#include "Actions/ActionExceptions.hpp"
-#include "Actions/ActionHistory.hpp"
-#include "Actions/ActionRegistry.hpp"
+#include "builder_init.hpp"
+#include "cleanUp.hpp"
 
-#include "CodePatterns/Chronos.hpp"
 #include "CodePatterns/Log.hpp"
-#include "Element/periodentafel.hpp"
+
 #include "Graph/BondGraph.hpp"
+
 #include "Parser/ChangeTracker.hpp"
 #include "Parser/FormatParserStorage.hpp"
-#include "RandomNumbers/RandomNumberDistributionFactory.hpp"
-#include "RandomNumbers/RandomNumberEngineFactory.hpp"
-#include "RandomNumbers/RandomNumberGeneratorFactory.hpp"
-#include "Tesselation/tesselationhelpers.hpp"
+
+#include "UIElements/UIFactory.hpp"
+#include "UIElements/CommandLineUI/CommandLineParser.hpp"
 #include "UIElements/CommandLineUI/CommandLineUIFactory.hpp"
-#include "UIElements/CommandLineUI/CommandLineUIFactory.hpp"
-#include "UIElements/CommandLineUI/CommandLineParser.hpp"
-#include "UIElements/Dialog.hpp"
-#include "UIElements/MainWindow.hpp"
-#include "UIElements/Menu/MenuDescription.hpp"
 #ifdef USE_GUI_QT
 #include "UIElements/Qt4/QtUIFactory.hpp"
 #endif
 #include "UIElements/TextUI/TextUIFactory.hpp"
-#include "UIElements/UIFactory.hpp"
+#include "UIElements/MainWindow.hpp"
 
 #include "version.h"
 
-#include "builder_init.hpp"
+#include "World.hpp"
+
 
 /** Print some initial information output the program.
@@ -148,74 +141,4 @@
 }
 
-
-/** In this function all dynamicly allocated member variables to static/global
- * variables are added to the ignore list of Memory/MemDebug.
- *
- * Use this to prevent their listing in the Memory::getState() at the end of the
- * program. Check with valgrind that truely no memory leak occurs!
- */
-void AddStaticEntitiestoIgnoreList()
-{
-  // zeroVec and unitVec are global variables (on the stack) but vectorContent
-  // within is situated on the heap and has to be ignored
-  Memory::ignore(zeroVec.get());
-  Memory::ignore(unitVec[0].get());
-  Memory::ignore(unitVec[1].get());
-  Memory::ignore(unitVec[2].get());
-}
-
-/** We give a list of all times per action and a total time.
- *
- */
-void printTimings()
-{
-  const MoleCuilder::ActionRegistry &AR = MoleCuilder::ActionRegistry::getInstance();
-  const Chronos &Chron = Chronos::getInstance();
-  std::cout << "(Non-zero) Times used per Action [seconds]:" << std::endl;
-  for (MoleCuilder::ActionRegistry::const_iterator iter = AR.getBeginIter(); iter != AR.getEndIter(); ++iter)
-    if (Chron.getTime(iter->first) != 0.) { // dont give if action has not been used
-      std::cout << "  " << setiosflags(ios::left) << setw(24) << setfill('.') << iter->first;
-      std::cout << setiosflags(ios::left) << setprecision(6) << fixed << Chron.getTime(iter->first) << std::endl;
-    }
-  std::cout << "Total Time: " << Chron.SumUpTotalTime() << " seconds" << std::endl;
-  std::cout << "Total Actions called: " << Chron.SumUpTotalFunctions() << std::endl;
-}
-
-/** Cleans all singleton instances in an orderly fashion.
- * C++ does not guarantee any specific sequence of removal of single instances
- * which have static/global variables. Some singletons depend on others hence we
- * acertain a specific ordering here, which is is used via the atexit() hook.
- */
-void cleanUp()
-{
-  printTimings();
-  Chronos::purgeInstance();
-
-  RandomNumberDistributionFactory::purgeInstance();
-  RandomNumberEngineFactory::purgeInstance();
-  RandomNumberGeneratorFactory::purgeInstance();
-  FormatParserStorage::purgeInstance();
-  ChangeTracker::purgeInstance();
-  World::purgeInstance();
-  MenuDescription::purgeInstance();
-  UIFactory::purgeInstance();
-  ValueStorage::purgeInstance();
-  CommandLineParser::purgeInstance();
-  MoleCuilder::ActionRegistry::purgeInstance();
-  MoleCuilder::OptionRegistry::purgeInstance();
-  MoleCuilder::ActionHistory::purgeInstance();
-  // we have to remove these two static as otherwise their boost::shared_ptrs are still present
-  MoleCuilder::Action::removeStaticStateEntities();
-  // put some static variables' dynamic contents on the Memory::ignore map to avoid their
-  // admonishing lateron
-  AddStaticEntitiestoIgnoreList();
-  logger::purgeInstance();
-  errorLogger::purgeInstance();
-#ifdef LOG_OBSERVER
-  cout << observerLog().getLog();
-#endif
-  Memory::getState();
-}
-
 /** Dump current memory chunks.
  *
Index: src/builder_init.hpp
===================================================================
--- src/builder_init.hpp	(revision 0712434880db2974e2088075ea714dc43b8900e6)
+++ src/builder_init.hpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
@@ -20,6 +20,4 @@
 void doUI();
 
-void AddStaticEntitiestoIgnoreList();
-void cleanUp();
 void dumpMemory();
 
Index: src/cleanUp.cpp
===================================================================
--- src/cleanUp.cpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
+++ src/cleanUp.cpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
@@ -0,0 +1,115 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2010 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * cleanUp.cpp
+ *
+ *  Created on: Oct 28, 2011
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <iostream>
+#include <iomanip>
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "cleanUp.hpp"
+
+#include "CodePatterns/Chronos.hpp"
+#include "CodePatterns/errorlogger.hpp"
+#include "CodePatterns/logger.hpp"
+
+#include "Actions/ActionHistory.hpp"
+#include "Actions/ActionRegistry.hpp"
+#include "Actions/OptionRegistry.hpp"
+#include "Actions/ValueStorage.hpp"
+
+#include "RandomNumbers/RandomNumberDistributionFactory.hpp"
+#include "RandomNumbers/RandomNumberEngineFactory.hpp"
+#include "RandomNumbers/RandomNumberGeneratorFactory.hpp"
+
+#include "Parser/ChangeTracker.hpp"
+#include "Parser/FormatParserStorage.hpp"
+
+#include "UIElements/CommandLineUI/CommandLineParser.hpp"
+#include "UIElements/Menu/MenuDescription.hpp"
+#include "UIElements/UIFactory.hpp"
+#include "World.hpp"
+
+/** In this function all dynamicly allocated member variables to static/global
+ * variables are added to the ignore list of Memory/MemDebug.
+ *
+ * Use this to prevent their listing in the Memory::getState() at the end of the
+ * program. Check with valgrind that truely no memory leak occurs!
+ */
+void AddStaticEntitiestoIgnoreList()
+{
+  // zeroVec and unitVec are global variables (on the stack) but vectorContent
+  // within is situated on the heap and has to be ignored
+  Memory::ignore(zeroVec.get());
+  Memory::ignore(unitVec[0].get());
+  Memory::ignore(unitVec[1].get());
+  Memory::ignore(unitVec[2].get());
+}
+
+/** Cleans all singleton instances in an orderly fashion.
+ * C++ does not guarantee any specific sequence of removal of single instances
+ * which have static/global variables. Some singletons depend on others hence we
+ * acertain a specific ordering here, which is is used via the atexit() hook.
+ */
+void cleanUp()
+{
+  printTimings();
+  Chronos::purgeInstance();
+
+  RandomNumberDistributionFactory::purgeInstance();
+  RandomNumberEngineFactory::purgeInstance();
+  RandomNumberGeneratorFactory::purgeInstance();
+  FormatParserStorage::purgeInstance();
+  ChangeTracker::purgeInstance();
+  World::purgeInstance();
+  MenuDescription::purgeInstance();
+  UIFactory::purgeInstance();
+  ValueStorage::purgeInstance();
+  CommandLineParser::purgeInstance();
+  MoleCuilder::ActionRegistry::purgeInstance();
+  MoleCuilder::OptionRegistry::purgeInstance();
+  MoleCuilder::ActionHistory::purgeInstance();
+  // we have to remove these two static as otherwise their boost::shared_ptrs are still present
+  MoleCuilder::Action::removeStaticStateEntities();
+  // put some static variables' dynamic contents on the Memory::ignore map to avoid their
+  // admonishing lateron
+  AddStaticEntitiestoIgnoreList();
+  logger::purgeInstance();
+  errorLogger::purgeInstance();
+#ifdef LOG_OBSERVER
+  cout << observerLog().getLog();
+#endif
+  Memory::getState();
+}
+
+/** We give a list of all times per action and a total time.
+ *
+ */
+void printTimings()
+{
+  const MoleCuilder::ActionRegistry &AR = MoleCuilder::ActionRegistry::getInstance();
+  const Chronos &Chron = Chronos::getInstance();
+  std::cout << "(Non-zero) Times used per Action [seconds]:" << std::endl;
+  for (MoleCuilder::ActionRegistry::const_iterator iter = AR.getBeginIter(); iter != AR.getEndIter(); ++iter)
+    if (Chron.getTime(iter->first) != 0.) { // dont give if action has not been used
+      std::cout << "  " << setiosflags(ios::left) << setw(24) << setfill('.') << iter->first;
+      std::cout << setiosflags(ios::left) << setprecision(6) << fixed << Chron.getTime(iter->first) << std::endl;
+    }
+  std::cout << "Total Time: " << Chron.SumUpTotalTime() << " seconds" << std::endl;
+  std::cout << "Total Actions called: " << Chron.SumUpTotalFunctions() << std::endl;
+}
Index: src/cleanUp.hpp
===================================================================
--- src/cleanUp.hpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
+++ src/cleanUp.hpp	(revision 9499532892bd8d49658849069d442402314d3a4b)
@@ -0,0 +1,20 @@
+/*
+ * cleanUp.hpp
+ *
+ *  Created on: Oct 28, 2011
+ *      Author: heber
+ */
+
+#ifndef CLEANUP_HPP_
+#define CLEANUP_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+void AddStaticEntitiestoIgnoreList();
+void cleanUp();
+void printTimings();
+
+#endif /* CLEANUP_HPP_ */
