Index: trunk/src/orxonox.cc
===================================================================
--- trunk/src/orxonox.cc	(revision 5545)
+++ trunk/src/orxonox.cc	(revision 5546)
@@ -52,5 +52,5 @@
 #include "shell_buffer.h"
 
-#include "load_param.h"
+#include "load_param_description.h"
 
 #include <string.h>
Index: trunk/src/subprojects/collision_detection/Makefile.am
===================================================================
--- trunk/src/subprojects/collision_detection/Makefile.am	(revision 5545)
+++ trunk/src/subprojects/collision_detection/Makefile.am	(revision 5546)
@@ -5,5 +5,6 @@
 bin_PROGRAMS = collision
 
-collision_LDADD = $(MAINSRCDIR)/lib/physics/libORXphysics.a \
+collision_LDADD = $(MAINSRCDIR)/util/libORXutils.a \
+                  $(MAINSRCDIR)/lib/physics/libORXphysics.a \
                   $(MAINSRCDIR)/lib/collision_detection/libORXcd.a \
                   $(MAINSRCDIR)/lib/graphics/importer/libORXimporter.a \
@@ -24,12 +25,4 @@
                    collision_detection.cc \
                    \
-                   $(MAINSRCDIR)/util/loading/factory.cc \
-                   $(MAINSRCDIR)/util/loading/resource_manager.cc \
-                   $(MAINSRCDIR)/util/loading/load_param.cc \
-                   $(MAINSRCDIR)/util/animation/animation.cc \
-                   $(MAINSRCDIR)/util/animation/animation_player.cc \
-                   $(MAINSRCDIR)/util/animation/animation3d.cc \
-                   $(MAINSRCDIR)/util/state.cc \
-		   \
                    $(MAINSRCDIR)/lib/util/helper_functions.cc \
                    $(MAINSRCDIR)/lib/util/substring.cc \
@@ -47,3 +40,3 @@
                    collision_test_entity.cc
 
-noinst_HEADERS  =  collision_test_entity.h 
+noinst_HEADERS  =  collision_test_entity.h
Index: trunk/src/subprojects/collision_detection/Makefile.in
===================================================================
--- trunk/src/subprojects/collision_detection/Makefile.in	(revision 5545)
+++ trunk/src/subprojects/collision_detection/Makefile.in	(revision 5546)
@@ -55,9 +55,4 @@
 am_collision_OBJECTS = collision-framework.$(OBJEXT) \
 	collision-collision_detection.$(OBJEXT) \
-	collision-factory.$(OBJEXT) \
-	collision-resource_manager.$(OBJEXT) \
-	collision-load_param.$(OBJEXT) collision-animation.$(OBJEXT) \
-	collision-animation_player.$(OBJEXT) \
-	collision-animation3d.$(OBJEXT) collision-state.$(OBJEXT) \
 	collision-helper_functions.$(OBJEXT) \
 	collision-substring.$(OBJEXT) collision-ini_parser.$(OBJEXT) \
@@ -70,5 +65,6 @@
 collision_OBJECTS = $(am_collision_OBJECTS)
 am__DEPENDENCIES_1 =
-collision_DEPENDENCIES = $(MAINSRCDIR)/lib/physics/libORXphysics.a \
+collision_DEPENDENCIES = $(MAINSRCDIR)/util/libORXutils.a \
+	$(MAINSRCDIR)/lib/physics/libORXphysics.a \
 	$(MAINSRCDIR)/lib/collision_detection/libORXcd.a \
 	$(MAINSRCDIR)/lib/graphics/importer/libORXimporter.a \
@@ -205,5 +201,6 @@
 target_vendor = @target_vendor@
 MAINSRCDIR = ../..
-collision_LDADD = $(MAINSRCDIR)/lib/physics/libORXphysics.a \
+collision_LDADD = $(MAINSRCDIR)/util/libORXutils.a \
+                  $(MAINSRCDIR)/lib/physics/libORXphysics.a \
                   $(MAINSRCDIR)/lib/collision_detection/libORXcd.a \
                   $(MAINSRCDIR)/lib/graphics/importer/libORXimporter.a \
@@ -222,12 +219,4 @@
                    collision_detection.cc \
                    \
-                   $(MAINSRCDIR)/util/loading/factory.cc \
-                   $(MAINSRCDIR)/util/loading/resource_manager.cc \
-                   $(MAINSRCDIR)/util/loading/load_param.cc \
-                   $(MAINSRCDIR)/util/animation/animation.cc \
-                   $(MAINSRCDIR)/util/animation/animation_player.cc \
-                   $(MAINSRCDIR)/util/animation/animation3d.cc \
-                   $(MAINSRCDIR)/util/state.cc \
-		   \
                    $(MAINSRCDIR)/lib/util/helper_functions.cc \
                    $(MAINSRCDIR)/lib/util/substring.cc \
@@ -245,5 +234,5 @@
                    collision_test_entity.cc
 
-noinst_HEADERS = collision_test_entity.h 
+noinst_HEADERS = collision_test_entity.h
 all: all-am
 
@@ -312,7 +301,4 @@
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-animation.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-animation3d.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-animation_player.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-base_object.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-camera.Po@am__quote@
@@ -321,14 +307,10 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-collision_test_entity.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-color.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-factory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-framework.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-gui_gtk.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-helper_functions.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-ini_parser.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-load_param.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-null_parent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-p_node.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-resource_manager.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-state.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-substring.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-vector.Po@am__quote@
@@ -376,102 +358,4 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-collision_detection.obj `if test -f 'collision_detection.cc'; then $(CYGPATH_W) 'collision_detection.cc'; else $(CYGPATH_W) '$(srcdir)/collision_detection.cc'; fi`
-
-collision-factory.o: $(MAINSRCDIR)/util/loading/factory.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-factory.o -MD -MP -MF "$(DEPDIR)/collision-factory.Tpo" -c -o collision-factory.o `test -f '$(MAINSRCDIR)/util/loading/factory.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/factory.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-factory.Tpo" "$(DEPDIR)/collision-factory.Po"; else rm -f "$(DEPDIR)/collision-factory.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/factory.cc' object='collision-factory.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-factory.o `test -f '$(MAINSRCDIR)/util/loading/factory.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/factory.cc
-
-collision-factory.obj: $(MAINSRCDIR)/util/loading/factory.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-factory.obj -MD -MP -MF "$(DEPDIR)/collision-factory.Tpo" -c -o collision-factory.obj `if test -f '$(MAINSRCDIR)/util/loading/factory.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/factory.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-factory.Tpo" "$(DEPDIR)/collision-factory.Po"; else rm -f "$(DEPDIR)/collision-factory.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/factory.cc' object='collision-factory.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-factory.obj `if test -f '$(MAINSRCDIR)/util/loading/factory.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/factory.cc'; fi`
-
-collision-resource_manager.o: $(MAINSRCDIR)/util/loading/resource_manager.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-resource_manager.o -MD -MP -MF "$(DEPDIR)/collision-resource_manager.Tpo" -c -o collision-resource_manager.o `test -f '$(MAINSRCDIR)/util/loading/resource_manager.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/resource_manager.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-resource_manager.Tpo" "$(DEPDIR)/collision-resource_manager.Po"; else rm -f "$(DEPDIR)/collision-resource_manager.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/resource_manager.cc' object='collision-resource_manager.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-resource_manager.o `test -f '$(MAINSRCDIR)/util/loading/resource_manager.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/resource_manager.cc
-
-collision-resource_manager.obj: $(MAINSRCDIR)/util/loading/resource_manager.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-resource_manager.obj -MD -MP -MF "$(DEPDIR)/collision-resource_manager.Tpo" -c -o collision-resource_manager.obj `if test -f '$(MAINSRCDIR)/util/loading/resource_manager.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/resource_manager.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/resource_manager.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-resource_manager.Tpo" "$(DEPDIR)/collision-resource_manager.Po"; else rm -f "$(DEPDIR)/collision-resource_manager.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/resource_manager.cc' object='collision-resource_manager.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-resource_manager.obj `if test -f '$(MAINSRCDIR)/util/loading/resource_manager.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/resource_manager.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/resource_manager.cc'; fi`
-
-collision-load_param.o: $(MAINSRCDIR)/util/loading/load_param.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-load_param.o -MD -MP -MF "$(DEPDIR)/collision-load_param.Tpo" -c -o collision-load_param.o `test -f '$(MAINSRCDIR)/util/loading/load_param.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-load_param.Tpo" "$(DEPDIR)/collision-load_param.Po"; else rm -f "$(DEPDIR)/collision-load_param.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param.cc' object='collision-load_param.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-load_param.o `test -f '$(MAINSRCDIR)/util/loading/load_param.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param.cc
-
-collision-load_param.obj: $(MAINSRCDIR)/util/loading/load_param.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-load_param.obj -MD -MP -MF "$(DEPDIR)/collision-load_param.Tpo" -c -o collision-load_param.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-load_param.Tpo" "$(DEPDIR)/collision-load_param.Po"; else rm -f "$(DEPDIR)/collision-load_param.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param.cc' object='collision-load_param.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-load_param.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param.cc'; fi`
-
-collision-animation.o: $(MAINSRCDIR)/util/animation/animation.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation.o -MD -MP -MF "$(DEPDIR)/collision-animation.Tpo" -c -o collision-animation.o `test -f '$(MAINSRCDIR)/util/animation/animation.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation.Tpo" "$(DEPDIR)/collision-animation.Po"; else rm -f "$(DEPDIR)/collision-animation.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation.cc' object='collision-animation.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation.o `test -f '$(MAINSRCDIR)/util/animation/animation.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation.cc
-
-collision-animation.obj: $(MAINSRCDIR)/util/animation/animation.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation.obj -MD -MP -MF "$(DEPDIR)/collision-animation.Tpo" -c -o collision-animation.obj `if test -f '$(MAINSRCDIR)/util/animation/animation.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation.Tpo" "$(DEPDIR)/collision-animation.Po"; else rm -f "$(DEPDIR)/collision-animation.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation.cc' object='collision-animation.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation.obj `if test -f '$(MAINSRCDIR)/util/animation/animation.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation.cc'; fi`
-
-collision-animation_player.o: $(MAINSRCDIR)/util/animation/animation_player.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation_player.o -MD -MP -MF "$(DEPDIR)/collision-animation_player.Tpo" -c -o collision-animation_player.o `test -f '$(MAINSRCDIR)/util/animation/animation_player.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation_player.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation_player.Tpo" "$(DEPDIR)/collision-animation_player.Po"; else rm -f "$(DEPDIR)/collision-animation_player.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation_player.cc' object='collision-animation_player.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation_player.o `test -f '$(MAINSRCDIR)/util/animation/animation_player.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation_player.cc
-
-collision-animation_player.obj: $(MAINSRCDIR)/util/animation/animation_player.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation_player.obj -MD -MP -MF "$(DEPDIR)/collision-animation_player.Tpo" -c -o collision-animation_player.obj `if test -f '$(MAINSRCDIR)/util/animation/animation_player.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation_player.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation_player.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation_player.Tpo" "$(DEPDIR)/collision-animation_player.Po"; else rm -f "$(DEPDIR)/collision-animation_player.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation_player.cc' object='collision-animation_player.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation_player.obj `if test -f '$(MAINSRCDIR)/util/animation/animation_player.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation_player.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation_player.cc'; fi`
-
-collision-animation3d.o: $(MAINSRCDIR)/util/animation/animation3d.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation3d.o -MD -MP -MF "$(DEPDIR)/collision-animation3d.Tpo" -c -o collision-animation3d.o `test -f '$(MAINSRCDIR)/util/animation/animation3d.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation3d.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation3d.Tpo" "$(DEPDIR)/collision-animation3d.Po"; else rm -f "$(DEPDIR)/collision-animation3d.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation3d.cc' object='collision-animation3d.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation3d.o `test -f '$(MAINSRCDIR)/util/animation/animation3d.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation3d.cc
-
-collision-animation3d.obj: $(MAINSRCDIR)/util/animation/animation3d.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation3d.obj -MD -MP -MF "$(DEPDIR)/collision-animation3d.Tpo" -c -o collision-animation3d.obj `if test -f '$(MAINSRCDIR)/util/animation/animation3d.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation3d.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation3d.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation3d.Tpo" "$(DEPDIR)/collision-animation3d.Po"; else rm -f "$(DEPDIR)/collision-animation3d.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation3d.cc' object='collision-animation3d.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation3d.obj `if test -f '$(MAINSRCDIR)/util/animation/animation3d.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation3d.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation3d.cc'; fi`
-
-collision-state.o: $(MAINSRCDIR)/util/state.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-state.o -MD -MP -MF "$(DEPDIR)/collision-state.Tpo" -c -o collision-state.o `test -f '$(MAINSRCDIR)/util/state.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/state.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-state.Tpo" "$(DEPDIR)/collision-state.Po"; else rm -f "$(DEPDIR)/collision-state.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/state.cc' object='collision-state.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-state.o `test -f '$(MAINSRCDIR)/util/state.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/state.cc
-
-collision-state.obj: $(MAINSRCDIR)/util/state.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-state.obj -MD -MP -MF "$(DEPDIR)/collision-state.Tpo" -c -o collision-state.obj `if test -f '$(MAINSRCDIR)/util/state.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/state.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/state.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-state.Tpo" "$(DEPDIR)/collision-state.Po"; else rm -f "$(DEPDIR)/collision-state.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/state.cc' object='collision-state.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-state.obj `if test -f '$(MAINSRCDIR)/util/state.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/state.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/state.cc'; fi`
 
 collision-helper_functions.o: $(MAINSRCDIR)/lib/util/helper_functions.cc
Index: trunk/src/subprojects/importer/Makefile.am
===================================================================
--- trunk/src/subprojects/importer/Makefile.am	(revision 5545)
+++ trunk/src/subprojects/importer/Makefile.am	(revision 5546)
@@ -27,4 +27,5 @@
                   $(MAINSRCDIR)/lib/coord/null_parent.cc \
                   $(MAINSRCDIR)/util/loading/load_param.cc \
+                  $(MAINSRCDIR)/util/loading/load_param_description.cc \
                   $(MAINSRCDIR)/lib/util/helper_functions.cc \
                   $(MAINSRCDIR)/lib/util/substring.cc \
Index: trunk/src/subprojects/importer/Makefile.in
===================================================================
--- trunk/src/subprojects/importer/Makefile.in	(revision 5545)
+++ trunk/src/subprojects/importer/Makefile.in	(revision 5546)
@@ -58,4 +58,5 @@
 	importer-ini_parser.$(OBJEXT) importer-p_node.$(OBJEXT) \
 	importer-null_parent.$(OBJEXT) importer-load_param.$(OBJEXT) \
+	importer-load_param_description.$(OBJEXT) \
 	importer-helper_functions.$(OBJEXT) \
 	importer-substring.$(OBJEXT) importer-color.$(OBJEXT) \
@@ -213,4 +214,5 @@
                   $(MAINSRCDIR)/lib/coord/null_parent.cc \
                   $(MAINSRCDIR)/util/loading/load_param.cc \
+                  $(MAINSRCDIR)/util/loading/load_param_description.cc \
                   $(MAINSRCDIR)/lib/util/helper_functions.cc \
                   $(MAINSRCDIR)/lib/util/substring.cc \
@@ -294,4 +296,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-ini_parser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-load_param.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-load_param_description.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-null_parent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-p_node.Po@am__quote@
@@ -482,4 +485,18 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o importer-load_param.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param.cc'; fi`
+
+importer-load_param_description.o: $(MAINSRCDIR)/util/loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT importer-load_param_description.o -MD -MP -MF "$(DEPDIR)/importer-load_param_description.Tpo" -c -o importer-load_param_description.o `test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param_description.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/importer-load_param_description.Tpo" "$(DEPDIR)/importer-load_param_description.Po"; else rm -f "$(DEPDIR)/importer-load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param_description.cc' object='importer-load_param_description.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o importer-load_param_description.o `test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param_description.cc
+
+importer-load_param_description.obj: $(MAINSRCDIR)/util/loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT importer-load_param_description.obj -MD -MP -MF "$(DEPDIR)/importer-load_param_description.Tpo" -c -o importer-load_param_description.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param_description.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/importer-load_param_description.Tpo" "$(DEPDIR)/importer-load_param_description.Po"; else rm -f "$(DEPDIR)/importer-load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param_description.cc' object='importer-load_param_description.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o importer-load_param_description.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param_description.cc'; fi`
 
 importer-helper_functions.o: $(MAINSRCDIR)/lib/util/helper_functions.cc
Index: trunk/src/subprojects/particles/Makefile.am
===================================================================
--- trunk/src/subprojects/particles/Makefile.am	(revision 5545)
+++ trunk/src/subprojects/particles/Makefile.am	(revision 5546)
@@ -36,4 +36,5 @@
                    $(MAINSRCDIR)/lib/util/substring.cc \
                    $(MAINSRCDIR)/util/loading/load_param.cc \
+                   $(MAINSRCDIR)/util/loading/load_param_description.cc \
 		   $(MAINSRCDIR)/lib/util/helper_functions.cc \
                    $(MAINSRCDIR)/util/loading/factory.cc \
Index: trunk/src/subprojects/particles/Makefile.in
===================================================================
--- trunk/src/subprojects/particles/Makefile.in	(revision 5545)
+++ trunk/src/subprojects/particles/Makefile.in	(revision 5546)
@@ -62,4 +62,5 @@
 	particles-gui_gtk.$(OBJEXT) particles-substring.$(OBJEXT) \
 	particles-load_param.$(OBJEXT) \
+	particles-load_param_description.$(OBJEXT) \
 	particles-helper_functions.$(OBJEXT) \
 	particles-factory.$(OBJEXT) particles-color.$(OBJEXT) \
@@ -233,4 +234,5 @@
                    $(MAINSRCDIR)/lib/util/substring.cc \
                    $(MAINSRCDIR)/util/loading/load_param.cc \
+                   $(MAINSRCDIR)/util/loading/load_param_description.cc \
 		   $(MAINSRCDIR)/lib/util/helper_functions.cc \
                    $(MAINSRCDIR)/util/loading/factory.cc \
@@ -316,4 +318,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-light.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-load_param.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-load_param_description.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-null_parent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-p_node.Po@am__quote@
@@ -562,4 +565,18 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o particles-load_param.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param.cc'; fi`
+
+particles-load_param_description.o: $(MAINSRCDIR)/util/loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT particles-load_param_description.o -MD -MP -MF "$(DEPDIR)/particles-load_param_description.Tpo" -c -o particles-load_param_description.o `test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param_description.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/particles-load_param_description.Tpo" "$(DEPDIR)/particles-load_param_description.Po"; else rm -f "$(DEPDIR)/particles-load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param_description.cc' object='particles-load_param_description.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o particles-load_param_description.o `test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param_description.cc
+
+particles-load_param_description.obj: $(MAINSRCDIR)/util/loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT particles-load_param_description.obj -MD -MP -MF "$(DEPDIR)/particles-load_param_description.Tpo" -c -o particles-load_param_description.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param_description.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/particles-load_param_description.Tpo" "$(DEPDIR)/particles-load_param_description.Po"; else rm -f "$(DEPDIR)/particles-load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param_description.cc' object='particles-load_param_description.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o particles-load_param_description.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param_description.cc'; fi`
 
 particles-helper_functions.o: $(MAINSRCDIR)/lib/util/helper_functions.cc
Index: trunk/src/util/Makefile.am
===================================================================
--- trunk/src/util/Makefile.am	(revision 5545)
+++ trunk/src/util/Makefile.am	(revision 5546)
@@ -5,4 +5,5 @@
 
 libORXutils_a_SOURCES = fast_factory.cc \
+                        loading/factory.cc \
 			garbage_collector.cc \
 			state.cc \
@@ -12,7 +13,7 @@
 			animation/animation_player.cc \
 			loading/resource_manager.cc \
-			loading/factory.cc \
 			loading/game_loader.cc \
 			loading/load_param.cc \
+			loading/load_param_description.cc \
 			track/pilot_node.cc \
 			track/track_manager.cc \
@@ -31,4 +32,5 @@
 			loading/game_loader.h \
 			loading/load_param.h \
+			loading/load_param_description.h \
 			track/pilot_node.h \
 			track/track_manager.h \
Index: trunk/src/util/Makefile.in
===================================================================
--- trunk/src/util/Makefile.in	(revision 5545)
+++ trunk/src/util/Makefile.in	(revision 5546)
@@ -54,10 +54,10 @@
 libORXutils_a_AR = $(AR) $(ARFLAGS)
 libORXutils_a_LIBADD =
-am_libORXutils_a_OBJECTS = fast_factory.$(OBJEXT) \
+am_libORXutils_a_OBJECTS = fast_factory.$(OBJEXT) factory.$(OBJEXT) \
 	garbage_collector.$(OBJEXT) state.$(OBJEXT) \
 	user_control.$(OBJEXT) animation3d.$(OBJEXT) \
 	animation.$(OBJEXT) animation_player.$(OBJEXT) \
-	resource_manager.$(OBJEXT) factory.$(OBJEXT) \
-	game_loader.$(OBJEXT) load_param.$(OBJEXT) \
+	resource_manager.$(OBJEXT) game_loader.$(OBJEXT) \
+	load_param.$(OBJEXT) load_param_description.$(OBJEXT) \
 	pilot_node.$(OBJEXT) track_manager.$(OBJEXT) \
 	track_node.$(OBJEXT)
@@ -190,4 +190,5 @@
 noinst_LIBRARIES = libORXutils.a
 libORXutils_a_SOURCES = fast_factory.cc \
+                        loading/factory.cc \
 			garbage_collector.cc \
 			state.cc \
@@ -197,7 +198,7 @@
 			animation/animation_player.cc \
 			loading/resource_manager.cc \
-			loading/factory.cc \
 			loading/game_loader.cc \
 			loading/load_param.cc \
+			loading/load_param_description.cc \
 			track/pilot_node.cc \
 			track/track_manager.cc \
@@ -216,4 +217,5 @@
 			loading/game_loader.h \
 			loading/load_param.h \
+			loading/load_param_description.h \
 			track/pilot_node.h \
 			track/track_manager.h \
@@ -275,4 +277,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/garbage_collector.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_param.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_param_description.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pilot_node.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resource_manager.Po@am__quote@
@@ -296,4 +299,18 @@
 @am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
+factory.o: loading/factory.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT factory.o -MD -MP -MF "$(DEPDIR)/factory.Tpo" -c -o factory.o `test -f 'loading/factory.cc' || echo '$(srcdir)/'`loading/factory.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/factory.Tpo" "$(DEPDIR)/factory.Po"; else rm -f "$(DEPDIR)/factory.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='loading/factory.cc' object='factory.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.o `test -f 'loading/factory.cc' || echo '$(srcdir)/'`loading/factory.cc
+
+factory.obj: loading/factory.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT factory.obj -MD -MP -MF "$(DEPDIR)/factory.Tpo" -c -o factory.obj `if test -f 'loading/factory.cc'; then $(CYGPATH_W) 'loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/loading/factory.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/factory.Tpo" "$(DEPDIR)/factory.Po"; else rm -f "$(DEPDIR)/factory.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='loading/factory.cc' object='factory.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.obj `if test -f 'loading/factory.cc'; then $(CYGPATH_W) 'loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/loading/factory.cc'; fi`
+
 animation3d.o: animation/animation3d.cc
 @am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT animation3d.o -MD -MP -MF "$(DEPDIR)/animation3d.Tpo" -c -o animation3d.o `test -f 'animation/animation3d.cc' || echo '$(srcdir)/'`animation/animation3d.cc; \
@@ -352,18 +369,4 @@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o resource_manager.obj `if test -f 'loading/resource_manager.cc'; then $(CYGPATH_W) 'loading/resource_manager.cc'; else $(CYGPATH_W) '$(srcdir)/loading/resource_manager.cc'; fi`
 
-factory.o: loading/factory.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT factory.o -MD -MP -MF "$(DEPDIR)/factory.Tpo" -c -o factory.o `test -f 'loading/factory.cc' || echo '$(srcdir)/'`loading/factory.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/factory.Tpo" "$(DEPDIR)/factory.Po"; else rm -f "$(DEPDIR)/factory.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='loading/factory.cc' object='factory.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.o `test -f 'loading/factory.cc' || echo '$(srcdir)/'`loading/factory.cc
-
-factory.obj: loading/factory.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT factory.obj -MD -MP -MF "$(DEPDIR)/factory.Tpo" -c -o factory.obj `if test -f 'loading/factory.cc'; then $(CYGPATH_W) 'loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/loading/factory.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/factory.Tpo" "$(DEPDIR)/factory.Po"; else rm -f "$(DEPDIR)/factory.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='loading/factory.cc' object='factory.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.obj `if test -f 'loading/factory.cc'; then $(CYGPATH_W) 'loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/loading/factory.cc'; fi`
-
 game_loader.o: loading/game_loader.cc
 @am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT game_loader.o -MD -MP -MF "$(DEPDIR)/game_loader.Tpo" -c -o game_loader.o `test -f 'loading/game_loader.cc' || echo '$(srcdir)/'`loading/game_loader.cc; \
@@ -393,4 +396,18 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o load_param.obj `if test -f 'loading/load_param.cc'; then $(CYGPATH_W) 'loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/loading/load_param.cc'; fi`
+
+load_param_description.o: loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT load_param_description.o -MD -MP -MF "$(DEPDIR)/load_param_description.Tpo" -c -o load_param_description.o `test -f 'loading/load_param_description.cc' || echo '$(srcdir)/'`loading/load_param_description.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/load_param_description.Tpo" "$(DEPDIR)/load_param_description.Po"; else rm -f "$(DEPDIR)/load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='loading/load_param_description.cc' object='load_param_description.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o load_param_description.o `test -f 'loading/load_param_description.cc' || echo '$(srcdir)/'`loading/load_param_description.cc
+
+load_param_description.obj: loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT load_param_description.obj -MD -MP -MF "$(DEPDIR)/load_param_description.Tpo" -c -o load_param_description.obj `if test -f 'loading/load_param_description.cc'; then $(CYGPATH_W) 'loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/loading/load_param_description.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/load_param_description.Tpo" "$(DEPDIR)/load_param_description.Po"; else rm -f "$(DEPDIR)/load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='loading/load_param_description.cc' object='load_param_description.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o load_param_description.obj `if test -f 'loading/load_param_description.cc'; then $(CYGPATH_W) 'loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/loading/load_param_description.cc'; fi`
 
 pilot_node.o: track/pilot_node.cc
Index: trunk/src/util/loading/load_param.cc
===================================================================
--- trunk/src/util/loading/load_param.cc	(revision 5545)
+++ trunk/src/util/loading/load_param.cc	(revision 5546)
@@ -17,4 +17,5 @@
 
 #include "load_param.h"
+#include "load_param_description.h"
 
 #include "list.h"
@@ -119,287 +120,4 @@
 }
 
-/**
- * @param paramName the name of the parameter to load
-*/
-LoadParamDescription::LoadParamDescription(const char* paramName)
-{
-  this->types = NULL;
-  this->description = NULL;
-  this->defaultValues = NULL;
-  this->paramName = new char[strlen(paramName)+1];
-  strcpy(this->paramName, paramName);
-}
-
-/**
- *  removes all the alocated memory
-*/
-LoadParamDescription::~LoadParamDescription()
-{
-  if (this->defaultValues != NULL)
-  {
-    for(int i = 0; i < this->paramCount; i++)
-    {
-      delete[] this->defaultValues[i];
-    }
-  }
-
-  delete[] this->types;
-  delete[] this->defaultValues;
-  delete[] this->paramName;
-  delete[] this->description;
-}
-
-/**
- * @param descriptionText The text to set as a description for this Parameter
-*/
-void LoadParamDescription::setDescription(const char* descriptionText)
-{
-  this->description = new char[strlen(descriptionText)+1];
-  strcpy(this->description, descriptionText);
-}
-
-/**
- *  prints out this parameter, its input method and the description (if availiable)
-*/
-void LoadParamDescription::print() const
-{
-  PRINT(3)(" <%s>", this->paramName);
-  for (int i = 0; i < this->paramCount; i++)
-    {
-      if (i > 0)
-        PRINT(3)(",");
-      switch (this->types[i])
-      {
-        default:
-          PRINTF(3)("none");
-          break;
-        case ParameterBool:
-          PRINT(3)("bool");
-          break;
-        case ParameterChar:
-          PRINT(3)("char");
-          break;
-        case ParameterString:
-          PRINT(3)("string");
-          break;
-        case ParameterInt:
-          PRINT(3)("int");
-          break;
-        case ParameterUInt:
-          PRINT(3)("Uint");
-          break;
-        case ParameterFloat:
-          PRINT(3)("float");
-          break;
-        case ParameterLong:
-          PRINT(3)("long");
-          break;
-        case ParameterXML:
-          PRINT(3)("XML");
-          break;
-      }
-    }
-  PRINT(3)("</%s>", this->paramName);
-  if (this->description)
-    PRINT(3)(" -- %s", this->description);
-  // default values
-  if (this->paramCount > 0)
-  {
-    PRINT(3)(" (Default: ");
-    for (int i = 0; i < this->paramCount; i++)
-    {
-      if (i > 0)
-        PRINT(3)(", ");
-      if (this->types[i] & ParameterString)
-      { // leave brackets !!
-        PRINT(3)("\"%s\"", this->defaultValues[i]);
-      }
-      else
-      {
-        PRINT(3)("%s", this->defaultValues[i]);
-      }
-    }
-    PRINT(3)(")");
-  }
-  PRINT(3)("\n");
-}
-
-/**
- *  A list, that holds all the classes that are loadable (classes not objects!!)
-*/
-tList<LoadClassDescription>* LoadClassDescription::classList = NULL;
-
-/**
- *  if the description of Parameters should be executed
-*/
-bool LoadClassDescription::parametersDescription = false;
-
-/**
- * @param className the name of the class to be loadable
-*/
-LoadClassDescription::LoadClassDescription(const char* className)
-{
-  this->className = new char[strlen(className)+1];
-  strcpy(this->className, className);
-
-  if (LoadClassDescription::classList == NULL)
-    LoadClassDescription::classList = new tList<LoadClassDescription>;
-
-  LoadClassDescription::classList->add(this);
-
-  this->paramList = new tList<LoadParamDescription>;
-}
-
-/**
- *  deletes a classDescription (deletes all the parameterDescriptions as well
-*/
-LoadClassDescription::~LoadClassDescription()
-{
-  tIterator<LoadParamDescription>* iterator = this->paramList->getIterator();
-  LoadParamDescription* enumParamDesc = iterator->firstElement();
-  while (enumParamDesc)
-    {
-      delete enumParamDesc;
-      enumParamDesc = iterator->nextElement();
-    }
-  delete iterator;
-  delete this->paramList;
-
-  delete[] this->className;
-}
-
-void LoadClassDescription::deleteAllDescriptions()
-{
-  if (LoadClassDescription::classList != NULL)
-  {
-    tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
-    LoadClassDescription* delElem = iterator->firstElement();
-    while (delElem != NULL)
-    {
-      delete delElem;
-      delElem = iterator->nextElement();
-    }
-    delete iterator;
-    delete LoadClassDescription::classList;
-  }
-  LoadClassDescription::classList = NULL;
-}
-
-
-/**
- *  adds a class to the list of loadable classes
- * @param className The name of the class to add
-
-   this function searches for the className string, and if found just returns the appropriate Class.
-   Otherwise it returns a new classDescription
-*/
-LoadClassDescription* LoadClassDescription::addClass(const char* className)
-{
-  if (LoadClassDescription::classList != NULL)
-  {
-    tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
-   LoadClassDescription* enumClassDesc = iterator->firstElement();
-   while (enumClassDesc)
-     {
-       if (!strcmp(enumClassDesc->className, className))
-         {
-           delete iterator;
-           return enumClassDesc;
-         }
-       enumClassDesc = iterator->nextElement();
-     }
-   delete iterator;
-  }
-  return new LoadClassDescription(className);
-}
-
-/**
- *  does the same as addClass(const char* className), but with params
- * @param paramName the name of the parameter to add.
-*/
-LoadParamDescription* LoadClassDescription::addParam(const char* paramName)
-{
-  tIterator<LoadParamDescription>* iterator = this->paramList->getIterator();
-  LoadParamDescription* enumParamDesc = iterator->firstElement();
-  while (enumParamDesc)
-    {
-      if (!strcmp(enumParamDesc->paramName, paramName))
-        {
-          delete iterator;
-          //return enumParamDesc;
-          return NULL;
-        }
-      enumParamDesc = iterator->nextElement();
-    }
-  delete iterator;
-
-  LoadParamDescription* newParam = new LoadParamDescription(paramName);
-
-  this->paramList->add(newParam);
-  return newParam;
-}
-
-/**
- *  prints out all loadable Classes, and their parameters
- * @param fileName prints the output to a File
- * @todo implement it
-*/
-void LoadClassDescription::printAll(const char* fileName)
-{
-  PRINT(3)("===============================================================\n");
-  PRINT(3)(" Listing all the Loadable Options (loaded since Game started).\n\n");
-  if (LoadClassDescription::classList != NULL)
-  {
-    tIterator<LoadClassDescription>* classIT = LoadClassDescription::classList->getIterator();
-    LoadClassDescription* enumClassDesc = classIT->firstElement();
-    while (enumClassDesc)
-     {
-       PRINT(3)("<%s>\n", enumClassDesc->className);
-       tIterator<LoadParamDescription>* paramIT = enumClassDesc->paramList->getIterator();
-       LoadParamDescription* enumParamDesc = paramIT->firstElement();
-       while (enumParamDesc)
-         {
-           enumParamDesc->print();
-           enumParamDesc = paramIT->nextElement();
-         }
-       delete paramIT;
-
-       PRINT(3)("</%s>\n\n", enumClassDesc->className);
-       enumClassDesc = classIT->nextElement();
-     }
-    delete classIT;
-  }
-  else
-    PRINT(3)("no Classes defined so far\n");
-  PRINT(3)("===============================================================\n");
-}
-
-/**
- * searches for classes, which beginn with classNameBegin
- * @param classNameBegin the beginning string of a Class
- * @return a NEW char-array with ClassNames. The LIST should be deleted afterwards,
- * !! The strings MUST NOT be deleted !!
- */
-tList<const char>* LoadClassDescription::searchClassWithShort(const char* classNameBegin)
-{
-  unsigned int searchLength = strlen(classNameBegin);
-  tList<const char>* retVal = new tList<const char>;
-
-  tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
-  LoadClassDescription* enumClassDesc = iterator->firstElement();
-  while (enumClassDesc)
-  {
-    if (strlen(enumClassDesc->className)>searchLength+1 &&
-        !strncasecmp(enumClassDesc->className, classNameBegin, searchLength))
-    {
-      retVal->add(enumClassDesc->className);
-    }
-    enumClassDesc = iterator->nextElement();
-  }
-  delete iterator;
-
-  return retVal;
-}
-
 // const LoadParamDescription* LoadParamDescription::getClass(const char* className)
 // {
Index: trunk/src/util/loading/load_param.h
===================================================================
--- trunk/src/util/loading/load_param.h	(revision 5545)
+++ trunk/src/util/loading/load_param.h	(revision 5546)
@@ -33,54 +33,6 @@
 // Forward Declaration //
 template<class T> class tList;
-
-/************************
-*** DESCRIPTION STUFF ***
-************************/
-//! A class that handles the description of loadable parameters
-class LoadParamDescription
-{
-  friend class LoadParamBase;
-  friend class LoadClassDescription;
- public:
-  LoadParamDescription(const char* paramName);
-  ~LoadParamDescription();
-
-  void setDescription(const char* descriptionText);
-  /** @returns the descriptionString */
-  const char* getDescription() { return this->description; };
-
-  void print() const;
- private:
-  char*         paramName;             //!< The name of the parameter.
-  int           paramCount;            //!< The count of parameters.
-  int*          types;                 //!< What kind of parameters does this function take ??
-  char*         description;           //!< A longer description about this function.
-  char**        defaultValues;         //!< The 'Default Values'.
-};
-
-//! A class for descriptions of a loadable module
-class LoadClassDescription
-{
-  friend class LoadParamBase;
- public:
-  LoadClassDescription(const char* className);
-  ~LoadClassDescription();
-
-  static LoadClassDescription* addClass(const char* className);
-  LoadParamDescription* addParam(const char* paramName);
-
-  static void deleteAllDescriptions();
-
-  static void printAll(const char* fileName = NULL);
-  static tList<const char>* searchClassWithShort(const char* classNameBegin);
-//  static const LoadParamDescription* getClass(const char* className);
-
- private:
-  static bool                          parametersDescription;  //!< if parameter-description should be enabled.
-  static tList<LoadClassDescription>*  classList;              //!< a list, that holds all the loadable classes. (after one instance has been loaded)
-  char*                                className;              //!< name of the class
-  tList<LoadParamDescription>*         paramList;              //!< List of parameters this class knows.
-};
-
+class LoadClassDescription;
+class LoadParamDescription;
 
 /**************************
Index: trunk/src/util/loading/load_param_description.cc
===================================================================
--- trunk/src/util/loading/load_param_description.cc	(revision 5546)
+++ trunk/src/util/loading/load_param_description.cc	(revision 5546)
@@ -0,0 +1,305 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#include "functor_list.h"
+
+#include "load_param_description.h"
+#include "list.h"
+#include "base_object.h"
+#include <stdarg.h>
+
+
+/**
+ * @param paramName the name of the parameter to load
+ */
+LoadParamDescription::LoadParamDescription(const char* paramName)
+{
+  this->types = NULL;
+  this->description = NULL;
+  this->defaultValues = NULL;
+  this->paramName = new char[strlen(paramName)+1];
+  strcpy(this->paramName, paramName);
+}
+
+/**
+ *  removes all the alocated memory
+ */
+LoadParamDescription::~LoadParamDescription()
+{
+  if (this->defaultValues != NULL)
+  {
+    for(int i = 0; i < this->paramCount; i++)
+    {
+      delete[] this->defaultValues[i];
+    }
+  }
+
+  delete[] this->types;
+  delete[] this->defaultValues;
+  delete[] this->paramName;
+  delete[] this->description;
+}
+
+/**
+ * @param descriptionText The text to set as a description for this Parameter
+ */
+void LoadParamDescription::setDescription(const char* descriptionText)
+{
+  this->description = new char[strlen(descriptionText)+1];
+  strcpy(this->description, descriptionText);
+}
+
+/**
+ *  prints out this parameter, its input method and the description (if availiable)
+ */
+void LoadParamDescription::print() const
+{
+  PRINT(3)(" <%s>", this->paramName);
+  for (int i = 0; i < this->paramCount; i++)
+  {
+    if (i > 0)
+      PRINT(3)(",");
+    switch (this->types[i])
+    {
+      default:
+        PRINTF(3)("none");
+        break;
+      case ParameterBool:
+        PRINT(3)("bool");
+        break;
+      case ParameterChar:
+        PRINT(3)("char");
+        break;
+      case ParameterString:
+        PRINT(3)("string");
+        break;
+      case ParameterInt:
+        PRINT(3)("int");
+        break;
+      case ParameterUInt:
+        PRINT(3)("Uint");
+        break;
+      case ParameterFloat:
+        PRINT(3)("float");
+        break;
+      case ParameterLong:
+        PRINT(3)("long");
+        break;
+      case ParameterXML:
+        PRINT(3)("XML");
+        break;
+    }
+  }
+  PRINT(3)("</%s>", this->paramName);
+  if (this->description)
+    PRINT(3)(" -- %s", this->description);
+  // default values
+  if (this->paramCount > 0)
+  {
+    PRINT(3)(" (Default: ");
+    for (int i = 0; i < this->paramCount; i++)
+    {
+      if (i > 0)
+        PRINT(3)(", ");
+      if (this->types[i] & ParameterString)
+      { // leave brackets !!
+        PRINT(3)("\"%s\"", this->defaultValues[i]);
+      }
+      else
+      {
+        PRINT(3)("%s", this->defaultValues[i]);
+      }
+    }
+    PRINT(3)(")");
+  }
+  PRINT(3)("\n");
+}
+
+/**
+ *  A list, that holds all the classes that are loadable (classes not objects!!)
+ */
+tList<LoadClassDescription>* LoadClassDescription::classList = NULL;
+
+/**
+ *  if the description of Parameters should be executed
+ */
+bool LoadClassDescription::parametersDescription = false;
+
+/**
+ * @param className the name of the class to be loadable
+ */
+LoadClassDescription::LoadClassDescription(const char* className)
+{
+  this->className = new char[strlen(className)+1];
+  strcpy(this->className, className);
+
+  if (LoadClassDescription::classList == NULL)
+    LoadClassDescription::classList = new tList<LoadClassDescription>;
+
+  LoadClassDescription::classList->add(this);
+
+  this->paramList = new tList<LoadParamDescription>;
+}
+
+/**
+ *  deletes a classDescription (deletes all the parameterDescriptions as well
+ */
+LoadClassDescription::~LoadClassDescription()
+{
+  tIterator<LoadParamDescription>* iterator = this->paramList->getIterator();
+  LoadParamDescription* enumParamDesc = iterator->firstElement();
+  while (enumParamDesc)
+  {
+    delete enumParamDesc;
+    enumParamDesc = iterator->nextElement();
+  }
+  delete iterator;
+  delete this->paramList;
+
+  delete[] this->className;
+}
+
+void LoadClassDescription::deleteAllDescriptions()
+{
+  if (LoadClassDescription::classList != NULL)
+  {
+    tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
+    LoadClassDescription* delElem = iterator->firstElement();
+    while (delElem != NULL)
+    {
+      delete delElem;
+      delElem = iterator->nextElement();
+    }
+    delete iterator;
+    delete LoadClassDescription::classList;
+  }
+  LoadClassDescription::classList = NULL;
+}
+
+
+/**
+ *  adds a class to the list of loadable classes
+ * @param className The name of the class to add
+
+   this function searches for the className string, and if found just returns the appropriate Class.
+   Otherwise it returns a new classDescription
+ */
+LoadClassDescription* LoadClassDescription::addClass(const char* className)
+{
+  if (LoadClassDescription::classList != NULL)
+  {
+    tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
+    LoadClassDescription* enumClassDesc = iterator->firstElement();
+    while (enumClassDesc)
+    {
+      if (!strcmp(enumClassDesc->className, className))
+      {
+        delete iterator;
+        return enumClassDesc;
+      }
+      enumClassDesc = iterator->nextElement();
+    }
+    delete iterator;
+  }
+  return new LoadClassDescription(className);
+}
+
+/**
+ *  does the same as addClass(const char* className), but with params
+ * @param paramName the name of the parameter to add.
+ */
+LoadParamDescription* LoadClassDescription::addParam(const char* paramName)
+{
+  tIterator<LoadParamDescription>* iterator = this->paramList->getIterator();
+  LoadParamDescription* enumParamDesc = iterator->firstElement();
+  while (enumParamDesc)
+  {
+    if (!strcmp(enumParamDesc->paramName, paramName))
+    {
+      delete iterator;
+          //return enumParamDesc;
+      return NULL;
+    }
+    enumParamDesc = iterator->nextElement();
+  }
+  delete iterator;
+
+  LoadParamDescription* newParam = new LoadParamDescription(paramName);
+
+  this->paramList->add(newParam);
+  return newParam;
+}
+
+/**
+ *  prints out all loadable Classes, and their parameters
+ * @param fileName prints the output to a File
+ * @todo implement it
+ */
+void LoadClassDescription::printAll(const char* fileName)
+{
+  PRINT(3)("===============================================================\n");
+  PRINT(3)(" Listing all the Loadable Options (loaded since Game started).\n\n");
+  if (LoadClassDescription::classList != NULL)
+  {
+    tIterator<LoadClassDescription>* classIT = LoadClassDescription::classList->getIterator();
+    LoadClassDescription* enumClassDesc = classIT->firstElement();
+    while (enumClassDesc)
+    {
+      PRINT(3)("<%s>\n", enumClassDesc->className);
+      tIterator<LoadParamDescription>* paramIT = enumClassDesc->paramList->getIterator();
+      LoadParamDescription* enumParamDesc = paramIT->firstElement();
+      while (enumParamDesc)
+      {
+        enumParamDesc->print();
+        enumParamDesc = paramIT->nextElement();
+      }
+      delete paramIT;
+
+      PRINT(3)("</%s>\n\n", enumClassDesc->className);
+      enumClassDesc = classIT->nextElement();
+    }
+    delete classIT;
+  }
+  else
+    PRINT(3)("no Classes defined so far\n");
+  PRINT(3)("===============================================================\n");
+}
+
+/**
+ * searches for classes, which beginn with classNameBegin
+ * @param classNameBegin the beginning string of a Class
+ * @return a NEW char-array with ClassNames. The LIST should be deleted afterwards,
+ * !! The strings MUST NOT be deleted !!
+ */
+tList<const char>* LoadClassDescription::searchClassWithShort(const char* classNameBegin)
+{
+  unsigned int searchLength = strlen(classNameBegin);
+  tList<const char>* retVal = new tList<const char>;
+
+  tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
+  LoadClassDescription* enumClassDesc = iterator->firstElement();
+  while (enumClassDesc)
+  {
+    if (strlen(enumClassDesc->className)>searchLength+1 &&
+        !strncasecmp(enumClassDesc->className, classNameBegin, searchLength))
+    {
+      retVal->add(enumClassDesc->className);
+    }
+    enumClassDesc = iterator->nextElement();
+  }
+  delete iterator;
+
+  return retVal;
+}
Index: trunk/src/util/loading/load_param_description.h
===================================================================
--- trunk/src/util/loading/load_param_description.h	(revision 5546)
+++ trunk/src/util/loading/load_param_description.h	(revision 5546)
@@ -0,0 +1,85 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+/*!
+ * @file load_param.h
+ * A Class and macro-functions, that makes our lives easy to load-in parameters
+ */
+
+#ifndef _LOAD_PARAM_DESCRIPTION_H
+#define _LOAD_PARAM_DESCRIPTION_H
+
+#include "functor_list.h"
+#include "base_object.h"
+
+#include "factory.h"
+#include "debug.h"
+#include "substring.h"
+#include "tinyxml.h"
+#include "helper_functions.h"
+
+// Forward Declaration //
+template<class T> class tList;
+
+/************************
+*** DESCRIPTION STUFF ***
+************************/
+//! A class that handles the description of loadable parameters
+class LoadParamDescription
+{
+  friend class LoadParamBase;
+  friend class LoadClassDescription;
+ public:
+  LoadParamDescription(const char* paramName);
+  ~LoadParamDescription();
+
+  void setDescription(const char* descriptionText);
+  /** @returns the descriptionString */
+  const char* getDescription() { return this->description; };
+
+  void print() const;
+ private:
+  char*         paramName;             //!< The name of the parameter.
+  int           paramCount;            //!< The count of parameters.
+  int*          types;                 //!< What kind of parameters does this function take ??
+  char*         description;           //!< A longer description about this function.
+  char**        defaultValues;         //!< The 'Default Values'.
+};
+
+//! A class for descriptions of a loadable module
+class LoadClassDescription
+{
+  friend class LoadParamBase;
+ public:
+  LoadClassDescription(const char* className);
+  ~LoadClassDescription();
+
+  static LoadClassDescription* addClass(const char* className);
+  LoadParamDescription* addParam(const char* paramName);
+
+  static void deleteAllDescriptions();
+
+  static void printAll(const char* fileName = NULL);
+  static tList<const char>* searchClassWithShort(const char* classNameBegin);
+//  static const LoadParamDescription* getClass(const char* className);
+
+ private:
+  static bool                          parametersDescription;  //!< if parameter-description should be enabled.
+  static tList<LoadClassDescription>*  classList;              //!< a list, that holds all the loadable classes. (after one instance has been loaded)
+  char*                                className;              //!< name of the class
+  tList<LoadParamDescription>*         paramList;              //!< List of parameters this class knows.
+};
+
+#endif /* _LOAD_PARAM_DESCRIPTION_H */
