Index: trunk/src/lib/shell/shell.cc
===================================================================
--- trunk/src/lib/shell/shell.cc	(revision 5780)
+++ trunk/src/lib/shell/shell.cc	(revision 5781)
@@ -75,5 +75,5 @@
   this->bufferDisplaySize = 10;
   this->bufferOffset = 0;
-  this->bufferIterator = ShellBuffer::getInstance()->getBuffer()->getIterator();
+  this->bufferIterator = ShellBuffer::getInstance()->getBuffer()->begin();
 
   // INPUT LINE
@@ -111,5 +111,4 @@
     delete this->bufferText[i];
   delete[] this->bufferText;
-  delete this->bufferIterator;
   delete[] this->fontFile;
   // delete the inputLine
@@ -132,13 +131,11 @@
   this->setRelCoorSoft2D(0, 0, 1, 5);
 
-  tIterator<char>* bufferIT = ShellBuffer::getInstance()->getBuffer()->getIterator();
-  bufferIT->lastElement();
+  list<char*>::const_reverse_iterator textLine = ShellBuffer::getInstance()->getBuffer()->rbegin();
   for (int i = 0; i < this->bufferDisplaySize; i++)
   {
-    this->bufferText[i]->setText(bufferIT->getCurrent(), true);
+    this->bufferText[i]->setText((*textLine), true);
     this->bufferText[i]->setVisibility(true);
-    bufferIT->prevStep();
-  }
-  delete bufferIT;
+    textLine--;
+  }
 }
 
@@ -156,14 +153,11 @@
   this->setRelCoorSoft2D(0, -(int)this->shellHeight, 1, 5);
 
-  tIterator<char>* bufferIT = ShellBuffer::getInstance()->getBuffer()->getIterator();
-  bufferIT->lastElement();
+  list<char*>::const_reverse_iterator textLine = ShellBuffer::getInstance()->getBuffer()->rbegin();
   for (int i = 0; i < this->bufferDisplaySize; i++)
   {
-    this->bufferText[i]->setText(bufferIT->getCurrent(), false);
-    bufferIT->prevStep();
+    this->bufferText[i]->setText((*textLine), false);
     this->bufferText[i]->setVisibility(false);
-  }
-  delete bufferIT;
-
+    textLine--;
+  }
   this->bufferOffset = 0;
 }
@@ -307,6 +301,5 @@
   }
 
-  tIterator<char>* it = ShellBuffer::getInstance()->getBuffer()->getIterator();
-  char* text = it->lastElement();
+  list<char*>::const_reverse_iterator textLine = ShellBuffer::getInstance()->getBuffer()->rbegin();
   bufferText = new Text*[bufferDisplaySize];
   for (unsigned int i = 0; i < bufferDisplaySize; i++)
@@ -314,9 +307,8 @@
     bufferText[i] = new Text(this->fontFile, this->textSize);
     bufferText[i]->setAlignment(TEXT_ALIGN_LEFT);
-    bufferText[i]->setText(text);
+    bufferText[i]->setText(*textLine);
     bufferText[i]->setParent2D(this);
-    text = it->prevElement();
-  }
-  delete it;
+    textLine--;
+  }
   this->bufferDisplaySize = bufferDisplaySize;
 
@@ -386,46 +378,47 @@
 void Shell::moveDisplayBuffer(int lineCount)
 {
-  if (!this->bufferIterator->compareListPointer(ShellBuffer::getInstance()->getBuffer()))
-  {
-    delete this->bufferIterator;
-    this->bufferIterator = ShellBuffer::getInstance()->getBuffer()->getIterator();
-  }
-
-  if (this->bufferOffset == 0)
-   {
-     this->bufferIterator->lastElement();
-//     for (unsigned int i = 0; i < this->bufferDisplaySize; i++)
+  /// FIXME
+//   if (!this->bufferIterator->compareListPointer(ShellBuffer::getInstance()->getBuffer()))
+//   {
+//     delete this->bufferIterator;
+//     this->bufferIterator = ShellBuffer::getInstance()->getBuffer()->getIterator();
+//   }
+//
+//   if (this->bufferOffset == 0)
+//    {
+//      this->bufferIterator->lastElement();
+// //     for (unsigned int i = 0; i < this->bufferDisplaySize; i++)
+// //       this->bufferIterator->prevStep();
+//    }
+//
+//   // boundraries
+//   if (this->bufferOffset + lineCount > (int)ShellBuffer::getInstance()->getBuffer()->getSize())
+//     lineCount = (int)ShellBuffer::getInstance()->getBuffer()->getSize()- this->bufferOffset;
+//   else if (this->bufferOffset + lineCount < 0)
+//     lineCount = -bufferOffset;
+//   this->bufferOffset += lineCount;
+//
+//   // moving the iterator to the right position
+//   int move = 0;
+//   while (move != lineCount)
+//   {
+//     if (move < lineCount)
+//     {
+//       ++move;
 //       this->bufferIterator->prevStep();
-   }
-
-  // boundraries
-  if (this->bufferOffset + lineCount > (int)ShellBuffer::getInstance()->getBuffer()->getSize())
-    lineCount = (int)ShellBuffer::getInstance()->getBuffer()->getSize()- this->bufferOffset;
-  else if (this->bufferOffset + lineCount < 0)
-    lineCount = -bufferOffset;
-  this->bufferOffset += lineCount;
-
-  // moving the iterator to the right position
-  int move = 0;
-  while (move != lineCount)
-  {
-    if (move < lineCount)
-    {
-      ++move;
-      this->bufferIterator->prevStep();
-    }
-    else
-    {
-      --move;
-      this->bufferIterator->nextStep();
-    }
-  }
-  // redisplay the buffers
-  tIterator<char> it = *this->bufferIterator;
-  for (unsigned int i = 0; i < this->bufferDisplaySize; i++)
-  {
-    this->bufferText[i]->setText(it.getCurrent(), false);
-    it.prevStep();
-  }
+//     }
+//     else
+//     {
+//       --move;
+//       this->bufferIterator->nextStep();
+//     }
+//   }
+//   // redisplay the buffers
+//   tIterator<char> it = *this->bufferIterator;
+//   for (unsigned int i = 0; i < this->bufferDisplaySize; i++)
+//   {
+//     this->bufferText[i]->setText(it.getCurrent(), false);
+//     it.prevStep();
+//   }
 }
 
Index: trunk/src/lib/shell/shell.h
===================================================================
--- trunk/src/lib/shell/shell.h	(revision 5780)
+++ trunk/src/lib/shell/shell.h	(revision 5781)
@@ -91,19 +91,19 @@
   private:
     // GENERAL
-    bool                     bActive;                //!< If the shell is active.
-    unsigned int             shellHeight;            //!< The hight of the Shell in Pixels.
-    unsigned int             lineSpacing;            //!< The Spacing between lines.
-    unsigned int             textSize;               //!< The size of the text.
-    float                    textColor[4];           //!< The text's color [r,g,b,a].
-    char*                    fontFile;               //!< The file containing the font.
-    Material*                backgroundMaterial;     //!< A material for the background.
+    bool                        bActive;                //!< If the shell is active.
+    unsigned int                shellHeight;            //!< The hight of the Shell in Pixels.
+    unsigned int                lineSpacing;            //!< The Spacing between lines.
+    unsigned int                textSize;               //!< The size of the text.
+    float                       textColor[4];           //!< The text's color [r,g,b,a].
+    char*                       fontFile;               //!< The file containing the font.
+    Material*                   backgroundMaterial;     //!< A material for the background.
 
     // HANDLING TEXT INPUT
-    ShellInput*              shellInput;             //!< The inputLine of the Shell.
+    ShellInput*                 shellInput;             //!< The inputLine of the Shell.
     // BUFFER
-    unsigned int             bufferDisplaySize;      //!< The Size of the Display-buffer, in lines (not in characters).
-    Text**                   bufferText;             //!< A list of stored bufferTexts for the display of the buffer.
-    int                      bufferOffset;           //!< how many lines from the bottom up we display the Buffer.
-    tIterator<char>*         bufferIterator;         //!< used to move through and print the Buffer
+    unsigned int                bufferDisplaySize;      //!< The Size of the Display-buffer, in lines (not in characters).
+    Text**                      bufferText;             //!< A list of stored bufferTexts for the display of the buffer.
+    int                         bufferOffset;           //!< how many lines from the bottom up we display the Buffer.
+    std::list<char*>::const_iterator  bufferIterator;         //!< used to move through and print the Buffer
 };
 
Index: trunk/src/lib/shell/shell_buffer.cc
===================================================================
--- trunk/src/lib/shell/shell_buffer.cc	(revision 5780)
+++ trunk/src/lib/shell/shell_buffer.cc	(revision 5781)
@@ -38,5 +38,4 @@
   this->bufferArray[0] = '\0';
   this->keepBuffer = false;
-  this->buffer = new tList<char>;
 
   this->setBufferSize(100);
@@ -54,5 +53,4 @@
 
   this->flush();
-  delete buffer;
 
   ShellBuffer::singletonRef = NULL;
@@ -89,14 +87,10 @@
 {
   // delete all the Chars in the Buffers
-  tIterator<char>* bufferIterator = this->buffer->getIterator();
-  char* charElem = bufferIterator->firstElement();
-  while (charElem != NULL)
+  list<char*>::iterator bufferLine;
+  for (bufferLine = this->buffer.begin(); bufferLine != this->buffer.end(); bufferLine++)
   {
-    delete[] charElem;
-    charElem = bufferIterator->nextElement();
+    delete[] (*bufferLine);
   }
-  delete bufferIterator;
-  delete this->buffer;
-  this->buffer = new tList<char>;
+  this->buffer.erase(this->buffer.begin(), this->buffer.end());
 }
 
@@ -178,12 +172,12 @@
 
     this->lineCount++;
-    this->buffer->add(addLine);
+    this->buffer.push_back(addLine);
     if (likely (this->shell != NULL) && unlikely (this->shell->isActive()))
       this->shell->printToDisplayBuffer(addLine);
 
-    if (this->buffer->getSize() > this->bufferSize)
+    if (this->buffer.size() > this->bufferSize)
     {
-      delete[] this->buffer->firstElement();
-      this->buffer->remove(this->buffer->firstElement());
+      delete[] this->buffer.front();
+      this->buffer.pop_front();
     }
 
@@ -199,11 +193,6 @@
   PRINT(3)("Debugging output to console (not this shell)\n");
 
-  tIterator<char>* charIterator = this->buffer->getIterator();
-  char* tmpChar = charIterator->firstElement();
-  while(tmpChar != NULL)
-  {
-    printf(tmpChar);
-    tmpChar = charIterator->nextElement();
-  }
-  delete charIterator;
+  list<char*>::const_iterator bufferLine;
+  for (bufferLine = this->buffer.begin(); bufferLine != this->buffer.end(); bufferLine++)
+    printf(*bufferLine);
 }
Index: trunk/src/lib/shell/shell_buffer.h
===================================================================
--- trunk/src/lib/shell/shell_buffer.h	(revision 5780)
+++ trunk/src/lib/shell/shell_buffer.h	(revision 5781)
@@ -9,4 +9,5 @@
 
 #include <stdarg.h>
+#include <list>
 
 #define      SHELL_BUFFER_SIZE       16384         //!< The Size of the input-buffers (should be large enough to carry any kind of input)
@@ -39,5 +40,5 @@
   void addBufferLine(const char* line, va_list arg);
   /** @returns the List of stings from the Buffer */
-  const tList<char>* getBuffer() const { return this->buffer; };
+  const std::list<char*>* getBuffer() const { return &this->buffer; };
  /** @returns the Count of lines processed by the Shell. */
   inline long getLineCount() const { return this->lineCount; };
@@ -49,14 +50,14 @@
 
   private:
-   static ShellBuffer*      singletonRef;                       //!< The singleton-reference to the only memeber of this class.
-   unsigned int             bufferSize;                         //!< The Size of the buffer
-   tList<char>*             buffer;                             //!< A list of stored char-arrays(strings) to store the history
+    static ShellBuffer*      singletonRef;                       //!< The singleton-reference to the only memeber of this class.
+    unsigned int             bufferSize;                         //!< The Size of the buffer
+    std::list<char*>         buffer;                             //!< A list of stored char-arrays(strings) to store the history
 
-   Shell*                   shell;                              //!< the Registered Shell.
-   char                     bufferArray[SHELL_BUFFER_SIZE];     //!< a BUFFER for fast writing
-   char                     keepBufferArray[SHELL_BUFFER_SIZE]; //!< a BUFFER to have multi-non-newLine commands be copied into the shell.
-   bool                     keepBuffer;                         //!< if the keepbuffer contains unfinished lines.
+    Shell*                   shell;                              //!< the Registered Shell.
+    char                     bufferArray[SHELL_BUFFER_SIZE];     //!< a BUFFER for fast writing
+    char                     keepBufferArray[SHELL_BUFFER_SIZE]; //!< a BUFFER to have multi-non-newLine commands be copied into the shell.
+    bool                     keepBuffer;                         //!< if the keepbuffer contains unfinished lines.
 
-   unsigned long            lineCount;                          //!< how many Lines have been written out so far.
+    unsigned long            lineCount;                          //!< how many Lines have been written out so far.
 };
 
Index: trunk/src/lib/shell/shell_command_class.h
===================================================================
--- trunk/src/lib/shell/shell_command_class.h	(revision 5780)
+++ trunk/src/lib/shell/shell_command_class.h	(revision 5781)
@@ -12,5 +12,4 @@
 
 // FORWARD DECLARATION
-template<class T> class tList;
 
 ////////////////
