Index: branches/objectmanager/src/util/object_manager.cc
===================================================================
--- branches/objectmanager/src/util/object_manager.cc	(revision 6082)
+++ branches/objectmanager/src/util/object_manager.cc	(revision 6089)
@@ -19,7 +19,5 @@
 #include "class_list.h"
 
-#include "p_node.h"
 #include "world_entity.h"
-#include "list.h"
 
 using namespace std;
@@ -49,4 +47,39 @@
   ObjectManager::singletonRef = NULL;
 }
+
+
+/**
+ * @brief moves an Entity from an old list to a new One
+ * @param entity the entity to move.
+ * @param omList the new List to move the entity to.
+ *
+ * this will erase the entity from the old list
+ */
+void ObjectManager::toList (WorldEntity* entity, OM_LIST omList)
+{
+  if (likely(entity->getOMListNumber() != OM_INIT))
+    this->objectLists[entity->getOMListNumber()].erase(entity->getEntityIterator());
+
+  if (likely(omList != OM_INIT))
+  {
+    this->objectList[omList].push_back(entity);
+    entity->getOMListNumber() = omList;
+  }
+}
+
+
+/**
+ * @see ObjectManager::toList(WorldEntity* OM_LIST)
+ * @param entity the entity to move.
+ * @param omList the new List to move the entity to.
+ *
+ * this function also does a transformation from omList as char* to OM_LIST.
+ */
+void ObjectManager::toList (WorldEntity* entity, const char* omList)
+{
+  this->toList(entity, ObjectManager::StringToOMList( omList));
+}
+
+
 
 /**
@@ -68,2 +101,141 @@
   return NULL;
 }
+
+
+
+
+
+/**
+ * @brief transforms an omList into a String (usefull for debugging).
+ * @param omList the OM_LIST to be transformed into a String.
+ * @returns the String transformed from omList.
+ */
+const char* ObjectManager::StringToOMList(OM_LIST omList)
+{
+  switch (omList)
+  {
+    case OM_DEAD:
+      return "dead";
+    case OM_ENVIRON_NOTICK:
+      return "environ-notick";
+    case OM_ENVIRON:
+      return "environ";
+    case OM_COMMON:
+      return "common";
+    case OM_GROUP_00:
+      return "group00";
+    case OM_GROUP_00_PROJ:
+      return "group00-proj";
+    case OM_GROUP_01:
+      return "group01";
+    case OM_GROUP_01_PROJ:
+      return "group01-proj";
+    case OM_GROUP_02:
+      return "group02";
+    case OM_GROUP_02_PROJ:
+      return "group02-proj";
+    case OM_GROUP_03:
+      return "group03";
+    case OM_GROUP_03_PROJ:
+      return "group03-proj";
+    case OM_GROUP_04:
+      return "group04";
+    case OM_GROUP_04_PROJ:
+      return "group04-proj";
+    case OM_GROUP_05:
+      return "group05";
+    case OM_GROUP_05_PROJ:
+      return "group05-proj";
+    case OM_GROUP_06:
+      return "group06";
+    case OM_GROUP_06_PROJ:
+      return "group06-proj";
+    case OM_GROUP_07:
+      return "group07";
+    case OM_GROUP_07_PROJ:
+      return "group07-proj";
+    case OM_GROUP_08:
+      return "group08";
+    case OM_GROUP_08_PROJ:
+      return "group08-proj";
+    case OM_GROUP_09:
+      return "group09";
+    case OM_GROUP_09_PROJ:
+      return "group09-proj";
+    case OM_GROUP_10:
+      return "group10";
+    case OM_GROUP_10_PROJ:
+      return "group10-proj";
+    case OM_GROUP_11:
+      return "group11";
+    case OM_GROUP_11_PROJ:
+      return "group11-proj";
+    case OM_GROUP_12:
+      return "group11";
+    case OM_GROUP_12_PROJ:
+      return "group12-proj";
+    case OM_GROUP_13:
+      return "group03";
+    case OM_GROUP_13_PROJ:
+      return "group13-proj";
+    case OM_GROUP_14:
+      return "group14";
+    case OM_GROUP_14_PROJ:
+      return "group14-proj";
+    case OM_GROUP_15:
+      return "group15";
+    case OM_GROUP_15_PROJ:
+      return "group15-proj";
+    default:
+      return "null";
+  }
+
+}
+
+
+
+OM_LIST ObjectManager::StringToOMList(const char* listName)
+{
+  if (unlikely(listName == NULL)) return OM_DEFAULT_LIST;
+
+  if (!strcmp(listName, "dead")) return OM_DEAD;
+  if (!strcmp(listName, "environ-notick")) return OM_ENVIRON_NOTICK;
+  if (!strcmp(listName, "environ")) return OM_ENVIRON;
+  if (!strcmp(listName, "common")) return OM_COMMON;
+
+  if (!strcmp(listName, "group00")) return OM_GROUP_00;
+  if (!strcmp(listName, "group00-proj")) return OM_GROUP_00_PROJ;
+  if (!strcmp(listName, "group01")) return OM_GROUP_01;
+  if (!strcmp(listName, "group01-proj")) return OM_GROUP_01_PROJ;
+  if (!strcmp(listName, "group02")) return OM_GROUP_02;
+  if (!strcmp(listName, "group02-proj")) return OM_GROUP_02_PROJ;
+  if (!strcmp(listName, "group03")) return OM_GROUP_03;
+  if (!strcmp(listName, "group03-proj")) return OM_GROUP_03_PROJ;
+  if (!strcmp(listName, "group04")) return OM_GROUP_04;
+  if (!strcmp(listName, "group04-proj")) return OM_GROUP_04_PROJ;
+  if (!strcmp(listName, "group05")) return OM_GROUP_05;
+  if (!strcmp(listName, "group05-proj")) return OM_GROUP_05_PROJ;
+  if (!strcmp(listName, "group06")) return OM_GROUP_06;
+  if (!strcmp(listName, "group06-proj")) return OM_GROUP_06_PROJ;
+  if (!strcmp(listName, "group07")) return OM_GROUP_07;
+  if (!strcmp(listName, "group07-proj")) return OM_GROUP_07_PROJ;
+  if (!strcmp(listName, "group08")) return OM_GROUP_08;
+  if (!strcmp(listName, "group08-proj")) return OM_GROUP_08_PROJ;
+  if (!strcmp(listName, "group09")) return OM_GROUP_09;
+  if (!strcmp(listName, "group09-proj")) return OM_GROUP_09_PROJ;
+  if (!strcmp(listName, "group10")) return OM_GROUP_10;
+  if (!strcmp(listName, "group10-proj")) return OM_GROUP_10_PROJ;
+  if (!strcmp(listName, "group11")) return OM_GROUP_11;
+  if (!strcmp(listName, "group11-proj")) return OM_GROUP_11_PROJ;
+  if (!strcmp(listName, "group12")) return OM_GROUP_12;
+  if (!strcmp(listName, "group12-proj")) return OM_GROUP_12_PROJ;
+  if (!strcmp(listName, "group13")) return OM_GROUP_13;
+  if (!strcmp(listName, "group13-proj")) return OM_GROUP_13_PROJ;
+  if (!strcmp(listName, "group14")) return OM_GROUP_14;
+  if (!strcmp(listName, "group14-proj")) return OM_GROUP_14_PROJ;
+  if (!strcmp(listName, "group15")) return OM_GROUP_15;
+  if (!strcmp(listName, "group15-proj")) return OM_GROUP_15_PROJ;
+
+  return OM_DEFAULT_LIST;
+}
+
Index: branches/objectmanager/src/util/object_manager.h
===================================================================
--- branches/objectmanager/src/util/object_manager.h	(revision 6082)
+++ branches/objectmanager/src/util/object_manager.h	(revision 6089)
@@ -9,16 +9,59 @@
 #include "base_object.h"
 #include <list>
+#include <vector>
+
+/// Enumerator for Managed Object Lists
+typedef enum {
+  OM_NULL             =  0,
+  OM_DEAD,
+  OM_ENVIRON_NOTICK,
+  OM_ENVIRON,
+  OM_COMMON,
+
+  OM_GROUP_00,
+  OM_GROUP_00_PROJ,
+  OM_GROUP_01,
+  OM_GROUP_01_PROJ,
+  OM_GROUP_02,
+  OM_GROUP_02_PROJ,
+  OM_GROUP_03,
+  OM_GROUP_03_PROJ,
+  OM_GROUP_04,
+  OM_GROUP_04_PROJ,
+  OM_GROUP_05,
+  OM_GROUP_05_PROJ,
+  OM_GROUP_06,
+  OM_GROUP_06_PROJ,
+  OM_GROUP_07,
+  OM_GROUP_07_PROJ,
+  OM_GROUP_08,
+  OM_GROUP_08_PROJ,
+  OM_GROUP_09,
+  OM_GROUP_09_PROJ,
+  OM_GROUP_10,
+  OM_GROUP_10_PROJ,
+  OM_GROUP_11,
+  OM_GROUP_11_PROJ,
+  OM_GROUP_12,
+  OM_GROUP_12_PROJ,
+  OM_GROUP_13,
+  OM_GROUP_13_PROJ,
+  OM_GROUP_14,
+  OM_GROUP_14_PROJ,
+  OM_GROUP_15,
+  OM_GROUP_15_PROJ,
+
+  OM_SIZE,
+
+
+  OM_INIT             = -1, //!< DO NOT USE THIS. (WorldEntity Internal).
+} OM_LIST;
+
+#define OM_DEFAULT_LIST  OM_NULL
+
 
 // FORWARD DECLARATION
 class PNode;
 class WorldEntity;
-
-class ObjectGroupList
-{
-
-
-
-};
-
 
 //! A default singleton class.
@@ -28,10 +71,19 @@
   virtual ~ObjectManager(void);
   /** @returns a Pointer to the only object of this Class */
-  inline static ObjectManager* getInstance(void) { if (!ObjectManager::singletonRef) ObjectManager::singletonRef = new ObjectManager();  return ObjectManager::singletonRef; };
+  inline static ObjectManager* getInstance(void) { if (!ObjectManager::singletonRef) ObjectManager::singletonRef = new ObjectManager();  return ObjectManager::singletonRef; }
 
+
+  void toList (WorldEntity* entity, OM_LIST omList = OM_DEFAULT_LIST);
+  void toList (WorldEntity* entity, const char* omList);
+
+
+  std::list<WorldEntity*>& getObjectList(OM_LIST listNumber) { return this->objectLists[listNumber]; }
+  const std::list<WorldEntity*>& getObjectList(OM_LIST listNumber) const { return this->objectLists[listNumber]; }
 
   static std::list<WorldEntity*>* distanceFromObject(const PNode& center, float radius, ClassID classID);
 
-  ObjectGroupList* getGroupList( );
+
+  static OM_LIST StringToOMList(const char* listName);
+  static const char* StringToOMList(OM_LIST omList);
 
  private:
@@ -39,8 +91,8 @@
   static ObjectManager* singletonRef;
 
-  std::list<ObjectGroupList>           groupList;
+  const std::list<BaseObject>*            pNodeList;
 
-  const std::list<BaseObject>*         pNodeList;
 
+  std::list<WorldEntity*>                 objectLists[OM_SIZE];
 
 };
