Index: /trunk/src/lib/graphics/text_engine/text_engine.cc
===================================================================
--- /trunk/src/lib/graphics/text_engine/text_engine.cc	(revision 5779)
+++ /trunk/src/lib/graphics/text_engine/text_engine.cc	(revision 5780)
@@ -68,7 +68,5 @@
   {
     while(textList->size() > 0)
-    {
       delete dynamic_cast<Text*>(textList->front());
-    }
   }
   // delete all remaining fonts (There should not be Anything to do here)
@@ -76,7 +74,8 @@
   if (fontList != NULL)
   {
+    ///FIXME
 //    while (fontList->size() > 0)
     {
-      Font* font = dynamic_cast<Font*>(fontList->front());
+      Font* font = dynamic_cast<Font*>(fontList->back());
       if (likely(font != Font::getDefaultFont()))
         ResourceManager::getInstance()->unload(font, RP_GAME);
Index: /trunk/src/lib/lang/class_list.cc
===================================================================
--- /trunk/src/lib/lang/class_list.cc	(revision 5779)
+++ /trunk/src/lib/lang/class_list.cc	(revision 5780)
@@ -49,11 +49,6 @@
 ClassList::~ClassList ()
 {
-  /// FIXME
-//   if(ClassList::classList != NULL)
-//   {
-//     delete ClassList::classList;
-//     ClassList::classList = NULL;
-//   }
-  --ClassList::classCount;
+//   ClassList::classList.erase(ClassList::classList.begin(), ClassList::classList.end());
+   --ClassList::classCount;
 }
 
Index: /trunk/src/lib/shell/shell_command_class.cc
===================================================================
--- /trunk/src/lib/shell/shell_command_class.cc	(revision 5779)
+++ /trunk/src/lib/shell/shell_command_class.cc	(revision 5780)
@@ -20,7 +20,7 @@
 #include "shell_command.h"
 
-#include "list.h"
 #include "debug.h"
 #include "class_list.h"
+#include "compiler.h"
 
 #include <stdio.h>
@@ -104,19 +104,10 @@
 void ShellCommandClass::unregisterAllCommands()
 {
-  /// FIXME
-
-  /*  if (ShellCommandClass::commandClassList != NULL)
-  {
-    // unregister all commands
-    tIterator<ShellCommandClass>* iterator = ShellCommandClass::commandClassList->getIterator();
-    ShellCommandClass* elem = iterator->firstElement();
-    while(elem != NULL)
-    {
-      delete elem;
-
-      elem = iterator->nextElement();
-    }
-    delete iterator;
-
+   if (ShellCommandClass::commandClassList != NULL)
+  {
+    // unregister all commands and Classes
+    std::list<ShellCommandClass*>::iterator classIT;
+    for (classIT = ShellCommandClass::commandClassList->begin(); classIT != ShellCommandClass::commandClassList->end(); classIT++)
+      delete (*classIT);
     delete ShellCommandClass::commandClassList;
     ShellCommandClass::commandClassList = NULL;
@@ -126,15 +117,10 @@
   if (ShellCommandClass::aliasList != NULL)
   {
-    tIterator<ShellCommandAlias>* itAL = ShellCommandClass::aliasList->getIterator();
-    ShellCommandAlias* elemAL = itAL->firstElement();
-    while(elemAL != NULL)
-    {
-      delete elemAL;
-      elemAL = itAL->nextElement();
-    }
-    delete itAL;
+    std::list<ShellCommandAlias*>::iterator alias;
+    for (alias = ShellCommandClass::aliasList->begin(); alias != ShellCommandClass::aliasList->end(); alias++)
+      delete (*alias);
     delete ShellCommandClass::aliasList;
     ShellCommandClass::aliasList = NULL;
-  }*/
+  }
 }
 
Index: /trunk/src/lib/shell/shell_completion.cc
===================================================================
--- /trunk/src/lib/shell/shell_completion.cc	(revision 5779)
+++ /trunk/src/lib/shell/shell_completion.cc	(revision 5780)
@@ -25,5 +25,4 @@
 #include "base_object.h"
 #include "class_list.h"
-#include "list.h"
 #include "debug.h"
 
@@ -37,5 +36,4 @@
 ShellCompletion::ShellCompletion(ShellInput* input)
 {
-  this->completionList = NULL;
   this->input = input;
 }
@@ -47,10 +45,4 @@
 ShellCompletion::~ShellCompletion ()
 {
-  // delete what has to be deleted here
-  if (this->completionList)
-  {
-    this->emptyCompletionList();
-    delete this->completionList;
-  }
 }
 
@@ -239,11 +231,11 @@
 bool ShellCompletion::generalComplete(const char* begin, const char* displayAs, const char* addBack, const char* addFront)
 {
-  if (completionList == NULL || this->input == NULL )
-    return false;
-  if (completionList->size() == 0)
-    return false;
-
-  ShellC_Element* addElem = completionList->front();
-  const char* addString = addElem->name;
+  if (this->input == NULL )
+    return false;
+  if (completionList.size() == 0)
+    return false;
+
+  ShellC_Element addElem = completionList.front();
+  const char* addString = addElem.name;
   unsigned int addLength = 0;
   unsigned int inputLenght = strlen(begin);
@@ -254,17 +246,17 @@
 
   SHELLC_TYPE changeType = SHELLC_NONE;
-  list<ShellC_Element*>::iterator charIT;
-  for (charIT = completionList->begin(); charIT != completionList->end(); charIT++)
-  {
-    if ((*charIT)->type != changeType)
+  list<ShellC_Element>::iterator charIT;
+  for (charIT = completionList.begin(); charIT != completionList.end(); charIT++)
+  {
+    if ((*charIT).type != changeType)
     {
       if (changeType != SHELLC_NONE)
         PRINT(0)("\n");
-      PRINT(0)("%s: ", ShellCompletion::typeToString((*charIT)->type));
-      changeType = (*charIT)->type;
+      PRINT(0)("%s: ", ShellCompletion::typeToString((*charIT).type));
+      changeType = (*charIT).type;
     }
-    PRINTF(0)("%s ", (*charIT)->name);
+    PRINTF(0)("%s ", (*charIT).name);
     for (unsigned int i = inputLenght; i < addLength; i++)
-      if (addString[i] != (*charIT)->name[i])
+      if (addString[i] != (*charIT).name[i])
       {
        addLength = i;
@@ -285,5 +277,5 @@
      this->input->addCharacters(adder);
 
-      if (completionList->size() == 1)
+      if (completionList.size() == 1)
       {
         if ( addBack != NULL )
@@ -315,9 +307,8 @@
         !strncasecmp(*string, completionBegin, searchLength))
     {
-      printf("%s\n", *string);
-      ShellC_Element* newElem = new ShellC_Element;
-      newElem->name = *string;
-      newElem->type = type;
-      this->completionList->push_back(newElem);
+      ShellC_Element newElem;
+      newElem.name = *string;
+      newElem.type = type;
+      this->completionList.push_back(newElem);
     }
   }
@@ -344,8 +335,8 @@
         !strncasecmp((*bo)->getName(), completionBegin, searchLength))
     {
-      ShellC_Element* newElem = new ShellC_Element;
-      newElem->name = (*bo)->getName();
-      newElem->type = type;
-      this->completionList->push_back(newElem);
+      ShellC_Element newElem;
+      newElem.name = (*bo)->getName();
+      newElem.type = type;
+      this->completionList.push_back(newElem);
     }
   }
@@ -361,12 +352,6 @@
 void ShellCompletion::emptyCompletionList()
 {
-  if (this->completionList != NULL)
-  {
-    while (this->completionList->size() > 0)
-    {
-      delete this->completionList->front();
-      this->completionList->pop_front();
-    }
-  }
+  this->completionList.erase(this->completionList.begin(),
+                             this->completionList.end());
 }
 
Index: /trunk/src/lib/shell/shell_completion.h
===================================================================
--- /trunk/src/lib/shell/shell_completion.h	(revision 5779)
+++ /trunk/src/lib/shell/shell_completion.h	(revision 5780)
@@ -60,5 +60,5 @@
 
  private:
-   std::list<ShellC_Element*>*  completionList;          //!< A list of completions, that are io.
+   std::list<ShellC_Element>    completionList;          //!< A list of completions, that are io.
    ShellInput*                  input;                   //!< the input this completion works on.
 };
