Index: /orxonox/trunk/src/Makefile.am
===================================================================
--- /orxonox/trunk/src/Makefile.am	(revision 4345)
+++ /orxonox/trunk/src/Makefile.am	(revision 4346)
@@ -25,4 +25,5 @@
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/util/animation
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/util/common
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/util/event
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/util/loading
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/util/track
@@ -55,4 +56,7 @@
 		 util/animation/animation3d.cc \
 		 util/animation/animation_player.cc \
+		 util/event/event.cc \
+		 util/event/event_handler.cc \
+		 util/event/event_listener.cc \
 		 util/object_manager.cc \
 		 util/garbage_collector.cc \
@@ -117,4 +121,7 @@
 		 util/animation/animation3d.h \
 		 util/animation/animation_player.h \
+		 util/event/event.h \
+		 util/event/event_listener.h \
+		 util/event/event_handler.h \
 		 util/object_manager.h \
 		 util/garbage_collector.h \
Index: /orxonox/trunk/src/Makefile.in
===================================================================
--- /orxonox/trunk/src/Makefile.in	(revision 4345)
+++ /orxonox/trunk/src/Makefile.in	(revision 4346)
@@ -57,7 +57,8 @@
 	track_manager.$(OBJEXT) track_node.$(OBJEXT) \
 	animation.$(OBJEXT) animation3d.$(OBJEXT) \
-	animation_player.$(OBJEXT) object_manager.$(OBJEXT) \
-	garbage_collector.$(OBJEXT) list.$(OBJEXT) \
-	resource_manager.$(OBJEXT) factory.$(OBJEXT) \
+	animation_player.$(OBJEXT) event.$(OBJEXT) \
+	event_handler.$(OBJEXT) event_listener.$(OBJEXT) \
+	object_manager.$(OBJEXT) garbage_collector.$(OBJEXT) \
+	list.$(OBJEXT) resource_manager.$(OBJEXT) factory.$(OBJEXT) \
 	load_param.$(OBJEXT) state.$(OBJEXT) story_entity.$(OBJEXT) \
 	campaign.$(OBJEXT) world.$(OBJEXT) world_entity.$(OBJEXT) \
@@ -89,6 +90,8 @@
 @AMDEP_TRUE@	./$(DEPDIR)/character_attributes.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/command_node.Po ./$(DEPDIR)/curve.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/environment.Po ./$(DEPDIR)/factory.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/game_loader.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/environment.Po ./$(DEPDIR)/event.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/event_handler.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/event_listener.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/factory.Po ./$(DEPDIR)/game_loader.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/garbage_collector.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/glmenu_imagescreen.Po \
@@ -247,5 +250,5 @@
 target_vendor = @target_vendor@
 MAINSRCDIR = .
-AM_CXXFLAGS = -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/graphics -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/graphics/particles -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/gui/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/lib/tinyxml -I$(MAINSRCDIR)/lib/physics -I$(MAINSRCDIR)/lib/physics/fields -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai -I$(MAINSRCDIR)/util -I$(MAINSRCDIR)/util/animation -I$(MAINSRCDIR)/util/common -I$(MAINSRCDIR)/util/loading -I$(MAINSRCDIR)/util/track -I$(MAINSRCDIR)/subprojects
+AM_CXXFLAGS = -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/graphics -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/graphics/particles -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/gui/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/lib/tinyxml -I$(MAINSRCDIR)/lib/physics -I$(MAINSRCDIR)/lib/physics/fields -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai -I$(MAINSRCDIR)/util -I$(MAINSRCDIR)/util/animation -I$(MAINSRCDIR)/util/common -I$(MAINSRCDIR)/util/event -I$(MAINSRCDIR)/util/loading -I$(MAINSRCDIR)/util/track -I$(MAINSRCDIR)/subprojects
 orxonox_DEPENDENCIES = lib/gui/gui/libORXgui.a \
 		       lib/physics/libORXphysics.a \
@@ -266,4 +269,7 @@
 		 util/animation/animation3d.cc \
 		 util/animation/animation_player.cc \
+		 util/event/event.cc \
+		 util/event/event_handler.cc \
+		 util/event/event_listener.cc \
 		 util/object_manager.cc \
 		 util/garbage_collector.cc \
@@ -328,4 +334,7 @@
 		 util/animation/animation3d.h \
 		 util/animation/animation_player.h \
+		 util/event/event.h \
+		 util/event/event_listener.h \
+		 util/event/event_handler.h \
 		 util/object_manager.h \
 		 util/garbage_collector.h \
@@ -483,4 +492,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curve.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/environment.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/event.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/event_handler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/event_listener.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/factory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/game_loader.Po@am__quote@
@@ -657,4 +669,52 @@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o animation_player.obj `if test -f 'util/animation/animation_player.cc'; then $(CYGPATH_W) 'util/animation/animation_player.cc'; else $(CYGPATH_W) '$(srcdir)/util/animation/animation_player.cc'; fi`
 
+event.o: util/event/event.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT event.o -MD -MP -MF "$(DEPDIR)/event.Tpo" -c -o event.o `test -f 'util/event/event.cc' || echo '$(srcdir)/'`util/event/event.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/event.Tpo" "$(DEPDIR)/event.Po"; else rm -f "$(DEPDIR)/event.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/event/event.cc' object='event.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/event.Po' tmpdepfile='$(DEPDIR)/event.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o event.o `test -f 'util/event/event.cc' || echo '$(srcdir)/'`util/event/event.cc
+
+event.obj: util/event/event.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT event.obj -MD -MP -MF "$(DEPDIR)/event.Tpo" -c -o event.obj `if test -f 'util/event/event.cc'; then $(CYGPATH_W) 'util/event/event.cc'; else $(CYGPATH_W) '$(srcdir)/util/event/event.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/event.Tpo" "$(DEPDIR)/event.Po"; else rm -f "$(DEPDIR)/event.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/event/event.cc' object='event.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/event.Po' tmpdepfile='$(DEPDIR)/event.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o event.obj `if test -f 'util/event/event.cc'; then $(CYGPATH_W) 'util/event/event.cc'; else $(CYGPATH_W) '$(srcdir)/util/event/event.cc'; fi`
+
+event_handler.o: util/event/event_handler.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT event_handler.o -MD -MP -MF "$(DEPDIR)/event_handler.Tpo" -c -o event_handler.o `test -f 'util/event/event_handler.cc' || echo '$(srcdir)/'`util/event/event_handler.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/event_handler.Tpo" "$(DEPDIR)/event_handler.Po"; else rm -f "$(DEPDIR)/event_handler.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/event/event_handler.cc' object='event_handler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/event_handler.Po' tmpdepfile='$(DEPDIR)/event_handler.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o event_handler.o `test -f 'util/event/event_handler.cc' || echo '$(srcdir)/'`util/event/event_handler.cc
+
+event_handler.obj: util/event/event_handler.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT event_handler.obj -MD -MP -MF "$(DEPDIR)/event_handler.Tpo" -c -o event_handler.obj `if test -f 'util/event/event_handler.cc'; then $(CYGPATH_W) 'util/event/event_handler.cc'; else $(CYGPATH_W) '$(srcdir)/util/event/event_handler.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/event_handler.Tpo" "$(DEPDIR)/event_handler.Po"; else rm -f "$(DEPDIR)/event_handler.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/event/event_handler.cc' object='event_handler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/event_handler.Po' tmpdepfile='$(DEPDIR)/event_handler.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o event_handler.obj `if test -f 'util/event/event_handler.cc'; then $(CYGPATH_W) 'util/event/event_handler.cc'; else $(CYGPATH_W) '$(srcdir)/util/event/event_handler.cc'; fi`
+
+event_listener.o: util/event/event_listener.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT event_listener.o -MD -MP -MF "$(DEPDIR)/event_listener.Tpo" -c -o event_listener.o `test -f 'util/event/event_listener.cc' || echo '$(srcdir)/'`util/event/event_listener.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/event_listener.Tpo" "$(DEPDIR)/event_listener.Po"; else rm -f "$(DEPDIR)/event_listener.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/event/event_listener.cc' object='event_listener.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/event_listener.Po' tmpdepfile='$(DEPDIR)/event_listener.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o event_listener.o `test -f 'util/event/event_listener.cc' || echo '$(srcdir)/'`util/event/event_listener.cc
+
+event_listener.obj: util/event/event_listener.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT event_listener.obj -MD -MP -MF "$(DEPDIR)/event_listener.Tpo" -c -o event_listener.obj `if test -f 'util/event/event_listener.cc'; then $(CYGPATH_W) 'util/event/event_listener.cc'; else $(CYGPATH_W) '$(srcdir)/util/event/event_listener.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/event_listener.Tpo" "$(DEPDIR)/event_listener.Po"; else rm -f "$(DEPDIR)/event_listener.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/event/event_listener.cc' object='event_listener.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/event_listener.Po' tmpdepfile='$(DEPDIR)/event_listener.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o event_listener.obj `if test -f 'util/event/event_listener.cc'; then $(CYGPATH_W) 'util/event/event_listener.cc'; else $(CYGPATH_W) '$(srcdir)/util/event/event_listener.cc'; fi`
+
 object_manager.o: util/object_manager.cc
 @am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT object_manager.o -MD -MP -MF "$(DEPDIR)/object_manager.Tpo" -c -o object_manager.o `test -f 'util/object_manager.cc' || echo '$(srcdir)/'`util/object_manager.cc; \
@@ -1547,5 +1607,5 @@
 
 distdir: $(DISTFILES)
-	$(mkdir_p) $(distdir)/ai $(distdir)/defs $(distdir)/glmenu $(distdir)/lib/coord $(distdir)/lib/graphics $(distdir)/lib/graphics/importer $(distdir)/lib/graphics/particles $(distdir)/lib/lang $(distdir)/lib/math $(distdir)/lib/util $(distdir)/network $(distdir)/proto $(distdir)/story_entities $(distdir)/subprojects $(distdir)/util $(distdir)/util/animation $(distdir)/util/common $(distdir)/util/loading $(distdir)/util/track $(distdir)/world_entities
+	$(mkdir_p) $(distdir)/ai $(distdir)/defs $(distdir)/glmenu $(distdir)/lib/coord $(distdir)/lib/graphics $(distdir)/lib/graphics/importer $(distdir)/lib/graphics/particles $(distdir)/lib/lang $(distdir)/lib/math $(distdir)/lib/util $(distdir)/network $(distdir)/proto $(distdir)/story_entities $(distdir)/subprojects $(distdir)/util $(distdir)/util/animation $(distdir)/util/common $(distdir)/util/event $(distdir)/util/loading $(distdir)/util/track $(distdir)/world_entities
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
Index: /orxonox/trunk/src/class_list.h
===================================================================
--- /orxonox/trunk/src/class_list.h	(revision 4345)
+++ /orxonox/trunk/src/class_list.h	(revision 4346)
@@ -62,4 +62,8 @@
   CL_COMMAND_NODE,
 
+  CL_EVENT,
+  CL_EVENT_HANDLER,
+  CL_EVENT_LISTENER,
+
   CL_GRAPHICS_ENGINE,  
   CL_TEXT_ENGINE,
Index: /orxonox/trunk/src/subprojects/Makefile.in
===================================================================
--- /orxonox/trunk/src/subprojects/Makefile.in	(revision 4345)
+++ /orxonox/trunk/src/subprojects/Makefile.in	(revision 4346)
@@ -186,7 +186,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /orxonox/trunk/src/subprojects/gui/Makefile.in
===================================================================
--- /orxonox/trunk/src/subprojects/gui/Makefile.in	(revision 4345)
+++ /orxonox/trunk/src/subprojects/gui/Makefile.in	(revision 4346)
@@ -229,7 +229,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/gui/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/gui/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/gui/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/gui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /orxonox/trunk/src/subprojects/importer/Makefile.in
===================================================================
--- /orxonox/trunk/src/subprojects/importer/Makefile.in	(revision 4345)
+++ /orxonox/trunk/src/subprojects/importer/Makefile.in	(revision 4346)
@@ -228,7 +228,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/importer/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/importer/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/importer/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/importer/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /orxonox/trunk/src/subprojects/particles/Makefile.in
===================================================================
--- /orxonox/trunk/src/subprojects/particles/Makefile.in	(revision 4345)
+++ /orxonox/trunk/src/subprojects/particles/Makefile.in	(revision 4346)
@@ -257,7 +257,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/particles/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/particles/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/particles/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/particles/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /orxonox/trunk/src/subprojects/testmain/Makefile.in
===================================================================
--- /orxonox/trunk/src/subprojects/testmain/Makefile.in	(revision 4345)
+++ /orxonox/trunk/src/subprojects/testmain/Makefile.in	(revision 4346)
@@ -197,7 +197,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/testmain/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/testmain/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/testmain/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/testmain/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /orxonox/trunk/src/util/event/event.cc
===================================================================
--- /orxonox/trunk/src/util/event/event.cc	(revision 4345)
+++ /orxonox/trunk/src/util/event/event.cc	(revision 4346)
@@ -10,11 +10,11 @@
 
    ### File Specific:
-   main-programmer: ...
+   main-programmer: Patrick Boenzli
    co-programmer: ...
 */
 
-//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_EVENT
 
-#include "proto_class.h"
+#include "event.h"
 
 using namespace std;
@@ -25,18 +25,8 @@
    \todo this constructor is not jet implemented - do it
 */
-ProtoClass::ProtoClass () 
+Event::Event () 
 {
-   this->setClassID(CL_PROTO_ID, "ProtoClass"); 
+   this->setClassID(CL_EVENT, "Event"); 
 
-   /* If you make a new class, what is most probably the case when you write this file
-      don't forget to:
-       1. Add the new file new_class.cc to the ./src/Makefile.am
-       2. Add the class identifier to ./src/class_list.h eg. CL_NEW_CLASS
-
-      Advanced Topics:
-      - if you want to let your object be managed via the ObjectManager make sure to read
-        the object_manager.h header comments. You will use this most certanly only if you
-	make many objects of your class, like a weapon bullet.
-   */
 }
 
@@ -46,5 +36,5 @@
 
 */
-ProtoClass::~ProtoClass () 
+Event::~Event () 
 {
   // delete what has to be deleted here
Index: /orxonox/trunk/src/util/event/event.h
===================================================================
--- /orxonox/trunk/src/util/event/event.h	(revision 4345)
+++ /orxonox/trunk/src/util/event/event.h	(revision 4346)
@@ -1,28 +1,22 @@
 /*! 
-    \file proto_class.h
-    \brief Definition of ...
+    \file event.h
+    \brief an abstract event
 
 */
 
-#ifndef _PROTO_CLASS_H
-#define _PROTO_CLASS_H
+#ifndef _EVENT_H
+#define _EVENT_H
 
 #include "base_object.h"
 
-// FORWARD DEFINITION
 
-
-
-//! A class for ...
-class ProtoClass : public BaseObject {
+//! An abstract event class
+class Event : public BaseObject {
 
  public:
-  ProtoClass();
-  virtual ~ProtoClass();
-
-
- private:
+  Event();
+  virtual ~Event();
 
 };
 
-#endif /* _PROTO_CLASS_H */
+#endif /* _EVENT_H */
Index: /orxonox/trunk/src/util/event/event_handler.cc
===================================================================
--- /orxonox/trunk/src/util/event/event_handler.cc	(revision 4345)
+++ /orxonox/trunk/src/util/event/event_handler.cc	(revision 4346)
@@ -10,11 +10,11 @@
 
    ### File Specific:
-   main-programmer: ...
-   co-programmer: ...
+   main-programmer: Patrick Boenzli
+   co-programmer: 
 */
 
-//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_EVENT
 
-#include "proto_singleton.h"
+#include "event_handler.h"
 
 using namespace std;
@@ -24,19 +24,7 @@
    \brief standard constructor
 */
-ProtoSingleton::ProtoSingleton () 
+EventHandler::EventHandler () 
 {
-   this->setClassName("ProtoSingleton");
-   this->setClassID(CL_PROTO_ID, "ProtoSingleton"); 
-
-   /* If you make a new class, what is most probably the case when you write this file
-      don't forget to:
-       1. Add the new file new_class.cc to the ./src/Makefile.am
-       2. Add the class identifier to ./src/class_list.h eg. CL_NEW_CLASS
-
-      Advanced Topics:
-      - if you want to let your object be managed via the ObjectManager make sure to read
-        the object_manager.h header comments. You will use this most certanly only if you
-	make many objects of your class, like a weapon bullet.
-   */
+   this->setClassID(CL_EVENT_HANDLER, "EventHandler"); 
 }
 
@@ -44,14 +32,14 @@
    \brief the singleton reference to this class
 */
-ProtoSingleton* ProtoSingleton::singletonRef = NULL;
+EventHandler* EventHandler::singletonRef = NULL;
 
 /**
    \returns a Pointer to this Class
 */
-ProtoSingleton* ProtoSingleton::getInstance(void)
+EventHandler* EventHandler::getInstance(void)
 {
-  if (!ProtoSingleton::singletonRef)
-    ProtoSingleton::singletonRef = new ProtoSingleton();
-  return ProtoSingleton::singletonRef;
+  if (!EventHandler::singletonRef)
+    EventHandler::singletonRef = new EventHandler();
+  return EventHandler::singletonRef;
 }
 
@@ -60,7 +48,7 @@
 
 */
-ProtoSingleton::~ProtoSingleton () 
+EventHandler::~EventHandler () 
 {
-  ProtoSingleton::singletonRef = NULL;
+  EventHandler::singletonRef = NULL;
 
 }
Index: /orxonox/trunk/src/util/event/event_handler.h
===================================================================
--- /orxonox/trunk/src/util/event/event_handler.h	(revision 4345)
+++ /orxonox/trunk/src/util/event/event_handler.h	(revision 4346)
@@ -1,26 +1,48 @@
 /*! 
-    \file proto_singleton.h
-    \brief Definition of the ... singleton Class
+    \file event_handler.h
+    \brief Definition of the EventHandler
     
 */
 
-#ifndef _PROTO_SINGLETON_H
-#define _PROTO_SINGLETON_H
+#ifndef _EVENT_HANDLER_H
+#define _EVENT_HANDLER_H
 
 #include "base_object.h"
 
-// FORWARD DEFINITION
+class EventListener;
+template<class T> class tList;
 
-//! A default singleton class.
-class ProtoSingleton : public BaseObject {
+typedef enum elState
+  {
+    ES_GAME,
+    ES_GAME_MENU,
+    ES_MENU,
+
+    ES_NUMBER,
+  };
+
+
+//! The one Event Handler from Orxonox
+class EventHandler : public BaseObject {
 
  public:
-  static ProtoSingleton* getInstance(void);
-  virtual ~ProtoSingleton(void);
+  static EventHandler* getInstance(void);
+  virtual ~EventHandler(void);
+
+  void subscribeListener(EventListener* el, elState state);
+  void unsubscribeListener(EventListener* el, elState state);
+  void flush();
+  
+  void loadKeyBindings(const char* fileName);
+
+  void tick(float t);
 
  private:
-  ProtoSingleton(void);
-  static ProtoSingleton* singletonRef;
+  EventHandler(void);
+  static EventHandler* singletonRef;
+
+  EventListener** listeners;                         //!< a list of registered listeners
+  
 };
 
-#endif /* _PROTO_SINGLETON_H */
+#endif /* _EVENT_HANDLER_H */
Index: /orxonox/trunk/src/util/event/event_listener.cc
===================================================================
--- /orxonox/trunk/src/util/event/event_listener.cc	(revision 4345)
+++ /orxonox/trunk/src/util/event/event_listener.cc	(revision 4346)
@@ -10,11 +10,11 @@
 
    ### File Specific:
-   main-programmer: ...
+   main-programmer: Patrick Boenzli
    co-programmer: ...
 */
 
-//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_EVENT
 
-#include "proto_class.h"
+#include "event_listener.h"
 
 using namespace std;
@@ -25,18 +25,7 @@
    \todo this constructor is not jet implemented - do it
 */
-ProtoClass::ProtoClass () 
+EventListener::EventListener () 
 {
-   this->setClassID(CL_PROTO_ID, "ProtoClass"); 
-
-   /* If you make a new class, what is most probably the case when you write this file
-      don't forget to:
-       1. Add the new file new_class.cc to the ./src/Makefile.am
-       2. Add the class identifier to ./src/class_list.h eg. CL_NEW_CLASS
-
-      Advanced Topics:
-      - if you want to let your object be managed via the ObjectManager make sure to read
-        the object_manager.h header comments. You will use this most certanly only if you
-	make many objects of your class, like a weapon bullet.
-   */
+   this->setClassID(CL_EVENT_LISTENER, "EventListener"); 
 }
 
@@ -46,5 +35,5 @@
 
 */
-ProtoClass::~ProtoClass () 
+EventListener::~EventListener () 
 {
   // delete what has to be deleted here
Index: /orxonox/trunk/src/util/event/event_listener.h
===================================================================
--- /orxonox/trunk/src/util/event/event_listener.h	(revision 4345)
+++ /orxonox/trunk/src/util/event/event_listener.h	(revision 4346)
@@ -1,28 +1,23 @@
 /*! 
-    \file proto_class.h
-    \brief Definition of ...
+    \file event_listener.h
+    \brief Definition of an event listener base class
 
 */
 
-#ifndef _PROTO_CLASS_H
-#define _PROTO_CLASS_H
+#ifndef _EVENT_LISTENER_H
+#define _EVENT_LISTENER_H
 
 #include "base_object.h"
 
-// FORWARD DEFINITION
 
-
-
-//! A class for ...
-class ProtoClass : public BaseObject {
+//! A class for event listener
+class EventListener : public BaseObject {
 
  public:
-  ProtoClass();
-  virtual ~ProtoClass();
+  EventListener();
+  virtual ~EventListener();
 
-
- private:
 
 };
 
-#endif /* _PROTO_CLASS_H */
+#endif /* _EVENT_LISTENER_H */
