Index: /trunk/src/lib/shell/shell.cc
===================================================================
--- /trunk/src/lib/shell/shell.cc	(revision 5245)
+++ /trunk/src/lib/shell/shell.cc	(revision 5246)
@@ -56,4 +56,6 @@
   // EVENT-Handler subscription of '`' to all States.
   EventHandler::getInstance()->subscribe(this, ES_ALL, SDLK_BACKQUOTE);
+  EventHandler::getInstance()->subscribe(this, ES_SHELL, SDLK_PAGEUP);
+  EventHandler::getInstance()->subscribe(this, ES_SHELL, SDLK_PAGEDOWN);
 
   // Element2D and generals
@@ -66,4 +68,5 @@
   this->bufferText = NULL;
   this->bufferDisplaySize = 10;
+  this->bufferOffset = 0;
 
   // INPUT LINE
@@ -72,5 +75,4 @@
 
   this->rebuildText();
-
 }
 
@@ -104,7 +106,9 @@
   this->setRelCoorSoft2D(0, 0, 1, 5);
 
-  ShellBuffer::getInstance()->getBufferIterator()->lastElement();
-  for (unsigned int i = 0; i < this->bufferDisplaySize; i++)
-    this->bufferText[i]->setText(ShellBuffer::getInstance()->getBufferIterator()->prevElement(), true);
+  tIterator<char>* bufferIT = ShellBuffer::getInstance()->getBuffer()->getIterator();
+  bufferIT->lastElement();
+  for (int i = 0; i < this->bufferDisplaySize; i++)
+    this->bufferText[i]->setText(bufferIT->prevElement(), true);
+  delete bufferIT;
 }
 
@@ -121,9 +125,10 @@
   this->setRelCoorSoft2D(0, -400, 1, 5);
 
-  ShellBuffer::getInstance()->getBufferIterator()->lastElement();
+  tIterator<char>* bufferIT = ShellBuffer::getInstance()->getBuffer()->getIterator();
+  bufferIT->lastElement();
   for (int i = 0; i < this->bufferDisplaySize; i++)
-    this->bufferText[i]->setText(ShellBuffer::getInstance()->getBufferIterator()->prevElement(), false);
-}
-
+    this->bufferText[i]->setText(bufferIT->prevElement(), false);
+  delete bufferIT;
+}
 
 /**
@@ -199,5 +204,7 @@
       this->bufferText[i]->setText(NULL, true);
     }
-  // BUFFER FLUSHING
+
+    ShellBuffer::getInstance()->flush();
+    // BUFFER FLUSHING
 }
 
@@ -231,4 +238,14 @@
 
 /**
+ * moves the Display buffer (up or down)
+ * @param lineCount the count by which to shift the InputBuffer.
+ */
+void Shell::moveDisplayBuffer(int lineCount)
+{
+
+
+}
+
+/**
  * clears the Shell (empties all buffers)
  */
@@ -253,4 +270,12 @@
       else
         this->deactivate();
+    }
+    else if (event.type == SDLK_PAGEUP)
+    {
+
+    }
+    else if (event.type == SDLK_PAGEDOWN)
+    {
+
     }
   }
Index: /trunk/src/lib/shell/shell.h
===================================================================
--- /trunk/src/lib/shell/shell.h	(revision 5245)
+++ /trunk/src/lib/shell/shell.h	(revision 5246)
@@ -30,7 +30,13 @@
  *
  * Furthermore the Shell should enable us, to input some simple commands
- * Each Class can tell check itself in to the Shell, and listen for commands.
+ * Each Class can check itself in to the Shell, and listen for commands.
  *
- * @todo implement what is written above :/
+ * more info: @see ShellCommand
+ * @see shell_command.h
+ * @see shell_buffer.h
+ * @see shell_input.h
+ *
+ * !! note in order to keep shellbuffer to a minimal (it is included with
+ * !! debug.h) Display of it inside the Shell is located here !!
  */
 class Shell : public Element2D, public EventListener {
@@ -51,4 +57,6 @@
     void setBufferDisplaySize(unsigned int bufferDisplaySize);
     void printToDisplayBuffer(const char* text);
+    void moveDisplayBuffer(int lineCount);
+
     void flush();
 
@@ -73,8 +81,7 @@
 
   private:
-
     // GENERAL
-    bool                     bActive;                //!< if the shell is active;
-    unsigned int             shellHeight;            //!< The hight of the Shell in Pixels
+    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.
@@ -84,6 +91,7 @@
     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
+    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.
 };
 
Index: /trunk/src/lib/shell/shell_buffer.cc
===================================================================
--- /trunk/src/lib/shell/shell_buffer.cc	(revision 5245)
+++ /trunk/src/lib/shell/shell_buffer.cc	(revision 5246)
@@ -10,5 +10,5 @@
 
    ### File Specific:
-   main-programmer: ...
+   main-programmer: Benjamin Grauer
    co-programmer: ...
 */
@@ -40,5 +40,4 @@
   this->keepBuffer = false;
   this->buffer = new tList<char>;
-  this->bufferIterator = this->buffer->getIterator();
 
   this->setBufferSize(100);
@@ -55,6 +54,5 @@
     delete this->shell;
 
-  this->flushBuffers();
-  delete bufferIterator;
+  this->flush();
   delete buffer;
 
@@ -89,7 +87,8 @@
  * deletes all the Buffers
  */
-void ShellBuffer::flushBuffers()
+void ShellBuffer::flush()
 {
   // delete all the Chars in the Buffers
+  tIterator<char>* bufferIterator = this->buffer->getIterator();
   char* charElem = bufferIterator->firstElement();
   while (charElem != NULL)
@@ -98,9 +97,7 @@
     charElem = bufferIterator->nextElement();
   }
-  delete this->bufferIterator;
+  delete bufferIterator;
   delete this->buffer;
   this->buffer = new tList<char>;
-  this->bufferIterator = this->buffer->getIterator();
-
 }
 
@@ -193,48 +190,17 @@
 
 /**
- * moves the buffer around lineCount lines upwards (negative values move down)
- * @param lineCount the Count of lines to move upwards
- *
- * @todo
- */
-void ShellBuffer::moveBuffer(unsigned int lineCount)
-{
-}
-
-/**
- * @param lineNumber the n-th line from the bottom
- * @returns the Buffer at Line lineNumber
- */
-const char* ShellBuffer::getBufferLine(unsigned int lineNumber)
-{
+ * displays some nice output from the Shell
+ */
+void ShellBuffer::debug() const
+{
+  PRINT(3)("Debugging output to console (not this shell)\n");
+
   tIterator<char>* charIterator = this->buffer->getIterator();
-  char* charElem = charIterator->firstElement();
-
-  int i = 1;
-  while (charElem != NULL)
-  {
-    if (i++ < lineNumber)
-    {
-      delete charIterator;
-      return charElem;
-    }
-
-    charElem = charIterator->nextElement();
+  char* tmpChar = charIterator->firstElement();
+  while(tmpChar != NULL)
+  {
+    printf(tmpChar);
+    tmpChar = charIterator->nextElement();
   }
   delete charIterator;
 }
-
-/**
- * displays some nice output from the Shell
- */
-void ShellBuffer::debug() const
-{
-  PRINT(3)("Debugging output to console (not this shell)\n");
-
-  char* tmpChar = bufferIterator->firstElement();
-  while(tmpChar != NULL)
-  {
-    printf(tmpChar);
-    tmpChar = bufferIterator->nextElement();
-  }
-}
Index: /trunk/src/lib/shell/shell_buffer.h
===================================================================
--- /trunk/src/lib/shell/shell_buffer.h	(revision 5245)
+++ /trunk/src/lib/shell/shell_buffer.h	(revision 5246)
@@ -2,4 +2,5 @@
  * @file shell_buffer.h
  * @brief The Shell buffer Tasks
+ * @see debug.h
 */
 
@@ -14,10 +15,9 @@
 class Shell;
 template<class T> class tList;
-template<class T> class tIterator;
 #ifndef NULL
 #define NULL 0            //!< a pointer to NULL
 #endif
 
-//! A class for ...
+//! A class handling output from orxonox via debug.h
 class ShellBuffer {
 
@@ -35,13 +35,10 @@
   /** @param bufferSize the new Buffer-Size */
   void setBufferSize(unsigned int bufferSize) { this->bufferSize = bufferSize; };
-  void flushBuffers();
+  void flush();
   static bool addBufferLineStatic(const char* line, ...);
   void addBufferLine(const char* line, va_list arg);
-  void moveBuffer(unsigned int lineCount);
-// void moveBufferTo(unsigned int lineNumber);
-  const char* getBufferLine(unsigned int lineNumber);
-  /** @returns the Buffer Iterator, that enables externals to walk through the Buffer */
-  inline tIterator<char>* getBufferIterator() const { return bufferIterator; };
-  /** @returns the Count of lines processed by the Shell. */
+  /** @returns the List of stings from the Buffer */
+  const tList<char>* getBuffer() const { return this->buffer; };
+ /** @returns the Count of lines processed by the Shell. */
   inline long getLineCount() const { return this->lineCount; };
 
@@ -51,10 +48,8 @@
     ShellBuffer();
 
-
   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
-   tIterator<char>*         bufferIterator;                     //!< An iterator for the Shells main buffer.
 
    Shell*                   shell;                              //!< the Registered Shell.
