Index: trunk/src/Makefile.am
===================================================================
--- trunk/src/Makefile.am	(revision 7461)
+++ trunk/src/Makefile.am	(revision 7462)
@@ -40,4 +40,7 @@
 		\
 		util/multiplayer_team_deathmatch.cc \
+		util/singleplayer_shootemup.cc \
+		\
+		util/kill_target.cc \
 		\
 		subprojects/benchmark.cc
Index: trunk/src/lib/util/loading/factory.cc
===================================================================
--- trunk/src/lib/util/loading/factory.cc	(revision 7461)
+++ trunk/src/lib/util/loading/factory.cc	(revision 7462)
@@ -117,5 +117,5 @@
   if (factory != Factory::factoryList->end())
   {
-    PRINTF(4)("Create a new Object of type %s\n", (*factory)->getName());
+    PRINTF(2)("Create a new Object of type %s\n", (*factory)->getName());
     return (*factory)->fabricateObject(root);
   }
Index: trunk/src/story_entities/game_world_data.cc
===================================================================
--- trunk/src/story_entities/game_world_data.cc	(revision 7461)
+++ trunk/src/story_entities/game_world_data.cc	(revision 7462)
@@ -382,10 +382,10 @@
     PRINTF(2)("creating %s\n", element->Value());
     BaseObject* created = Factory::fabricate(element);
-    if (created != NULL && created->isA(CL_GAME_RULES))
+    if (created != NULL /*&& created->isA(CL_GAME_RULES)*/)
     {
       this->gameRule = dynamic_cast<GameRules*>(created);
       State::setGameRules(this->gameRule);
       // if there is a valid game rule loaded, break because it is not thought to load multiple game rules
-      break;
+      return;
     }
     else
Index: trunk/src/util/game_rules.cc
===================================================================
--- trunk/src/util/game_rules.cc	(revision 7461)
+++ trunk/src/util/game_rules.cc	(revision 7462)
@@ -47,4 +47,5 @@
   BaseObject::loadParams(root);
 
+  PRINTF(0)("GameRules::loadParams(...) hit me\n");
   LoadParamXML(root, "MissionGoal", this, GameRules, loadMissionGoal)
       .describe("an XML-Element to load the missions from");
@@ -55,4 +56,5 @@
 void GameRules::loadMissionGoal(const TiXmlElement* root)
 {
+  PRINTF(0)("Trying to load MissionGoals\n");
   const TiXmlElement* element = root->FirstChildElement();
   while( element != NULL)
@@ -61,5 +63,5 @@
     PRINTF(2)("Adding Mission Goal:%s\n", element->Value());
     BaseObject* created = Factory::fabricate(element);
-    if (created != NULL && created->isA(CL_GAME_RULES))
+    if (created != NULL /*&& created->isA(CL_GAME_RULES)*/)
     {
       MissionGoal* mg = dynamic_cast<MissionGoal*>(created);
Index: trunk/src/util/kill_target.cc
===================================================================
--- trunk/src/util/kill_target.cc	(revision 7461)
+++ trunk/src/util/kill_target.cc	(revision 7462)
@@ -18,5 +18,9 @@
 #include "kill_target.h"
 
+#include "util/loading/factory.h"
+
 using namespace std;
+
+CREATE_FACTORY(KillTarget, CL_KILL_TARGET);
 
 
@@ -29,6 +33,4 @@
 {
   this->setClassID(CL_KILL_TARGET, "KillTarget");
-
-  PRINTF(0)("Created a KillTarget Mission Goal <==================================\n");
 
   if( root != NULL)
@@ -49,4 +51,7 @@
 {
   MissionGoal::loadParams(root);
+
+  //   LoadParam(root, "death-penalty-timeout", this, SingleplayerShootemup, setDeathPenaltyTimeout)
+//       .describe("sets the time in seconds a player has to wait for respawn");
 }
 
@@ -54,2 +59,3 @@
 MissionState KillTarget::checkMissionGoal()
 {}
+
Index: trunk/src/util/kill_target.h
===================================================================
--- trunk/src/util/kill_target.h	(revision 7461)
+++ trunk/src/util/kill_target.h	(revision 7462)
@@ -15,17 +15,24 @@
 
 //! A class representing a mission goal to kill a specific amount of a specific object type
-class KillTarget : public MissionGoal {
+class KillTarget : public MissionGoal
+{
 
- public:
-  KillTarget(const TiXmlElement* root);
-  virtual ~KillTarget();
+  public:
+    KillTarget(const TiXmlElement* root);
+    virtual ~KillTarget();
 
-  virtual void loadParams(const TiXmlElement* root);
-
-  virtual MissionState checkMissionGoal();
+    virtual void loadParams(const TiXmlElement* root);
 
 
- protected:
+    void setNumberOfKills( int kills) { this->numberOfKills = kills; }
+    void setTartetClassID( int classID) { this->targetClassID = classID; }
 
+
+    virtual MissionState checkMissionGoal();
+
+
+  private:
+    int numberOfKills;                                                 //!< the amount of kills of this kind
+    int targetClassID;                                                 //!< id of the target class
 };
 
Index: trunk/src/util/singleplayer_shootemup.cc
===================================================================
--- trunk/src/util/singleplayer_shootemup.cc	(revision 7461)
+++ trunk/src/util/singleplayer_shootemup.cc	(revision 7462)
@@ -41,4 +41,5 @@
 
 
+
 /**
  * constructor
@@ -48,6 +49,4 @@
 {
   this->setClassID(CL_SINGLEPLAYER_SHOOTEMUP, "SingleplayerShootemup");
-
-  PRINTF(0)("Created a SinglePlayer Shootemup game\n");
 
   if( root != NULL)
