Index: trunk/src/lib/shell/Makefile.am
===================================================================
--- trunk/src/lib/shell/Makefile.am	(revision 5172)
+++ trunk/src/lib/shell/Makefile.am	(revision 5173)
@@ -5,4 +5,5 @@
 
 libORXshell_a_SOURCES = shell.cc \
+			shell_buffer.cc \
 		        shell_command.cc \
 			shell_completion.cc
@@ -10,4 +11,5 @@
 
 noinst_HEADERS= shell.h \
+		shell_buffer.h \
                 shell_command.h \
 		shell_completion.h
Index: trunk/src/lib/shell/Makefile.in
===================================================================
--- trunk/src/lib/shell/Makefile.in	(revision 5172)
+++ trunk/src/lib/shell/Makefile.in	(revision 5173)
@@ -54,6 +54,6 @@
 libORXshell_a_AR = $(AR) $(ARFLAGS)
 libORXshell_a_LIBADD =
-am_libORXshell_a_OBJECTS = shell.$(OBJEXT) shell_command.$(OBJEXT) \
-	shell_completion.$(OBJEXT)
+am_libORXshell_a_OBJECTS = shell.$(OBJEXT) shell_buffer.$(OBJEXT) \
+	shell_command.$(OBJEXT) shell_completion.$(OBJEXT)
 libORXshell_a_OBJECTS = $(am_libORXshell_a_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
@@ -61,4 +61,5 @@
 am__depfiles_maybe = depfiles
 @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/shell.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/shell_buffer.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/shell_command.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/shell_completion.Po
@@ -185,8 +186,10 @@
 noinst_LIBRARIES = libORXshell.a
 libORXshell_a_SOURCES = shell.cc \
+			shell_buffer.cc \
 		        shell_command.cc \
 			shell_completion.cc
 
 noinst_HEADERS = shell.h \
+		shell_buffer.h \
                 shell_command.h \
 		shell_completion.h
@@ -240,4 +243,5 @@
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell_buffer.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell_command.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell_completion.Po@am__quote@
Index: trunk/src/lib/shell/shell.cc
===================================================================
--- trunk/src/lib/shell/shell.cc	(revision 5172)
+++ trunk/src/lib/shell/shell.cc	(revision 5173)
@@ -34,5 +34,4 @@
 SHELL_COMMAND(clear, Shell, clear)->describe("Clears the shell from unwanted lines (empties all buffers)");
 SHELL_COMMAND(deactivate, Shell, deactivate)->describe("Deactivates the Shell. (moves it into background)");
-
 
 /**
Index: trunk/src/lib/shell/shell.h
===================================================================
--- trunk/src/lib/shell/shell.h	(revision 5172)
+++ trunk/src/lib/shell/shell.h	(revision 5173)
@@ -9,8 +9,7 @@
 #include "element_2d.h"
 #include "event_listener.h"
+#include "shell_buffer.h"
 
 #include <stdarg.h>
-
-#define      SHELL_BUFFER_SIZE       16384         //!< The Size of the input-buffers (should be large enough to carry any kind of input)
 
 // FORWARD DECLARATION
Index: trunk/src/lib/shell/shell_buffer.cc
===================================================================
--- trunk/src/lib/shell/shell_buffer.cc	(revision 5173)
+++ trunk/src/lib/shell/shell_buffer.cc	(revision 5173)
@@ -0,0 +1,50 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: ...
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "shell_buffer.h"
+
+using namespace std;
+
+
+/**
+ * standard constructor
+ * @todo this constructor is not jet implemented - do it
+*/
+ShellBuffer::ShellBuffer ()
+{
+// this->setClassID(CL_PROTO_ID, "ProtoClass");
+
+   /* If you make a new class, what is most probably the case when you write this file
+      don't forget to:
+       1. Add the new file new_class.cc to the ./src/Makefile.am
+       2. Add the class identifier to ./src/class_id.h eg. CL_NEW_CLASS
+
+      Advanced Topics:
+      - if you want to let your object be managed via the ObjectManager make sure to read
+        the object_manager.h header comments. You will use this most certanly only if you
+        make many objects of your class, like a weapon bullet.
+   */
+}
+
+
+/**
+ * standard deconstructor
+*/
+ShellBuffer::~ShellBuffer ()
+{
+  // delete what has to be deleted here
+}
Index: trunk/src/lib/shell/shell_buffer.h
===================================================================
--- trunk/src/lib/shell/shell_buffer.h	(revision 5173)
+++ trunk/src/lib/shell/shell_buffer.h	(revision 5173)
@@ -0,0 +1,52 @@
+/*!
+ * @file shell_buffer.h
+ * @brief The Shell buffer Tasks
+*/
+
+#ifndef _SHELL_BUFFER_H
+#define _SHELL_BUFFER_H
+
+#include <stdarg.h>
+
+#define      SHELL_BUFFER_SIZE       16384         //!< The Size of the input-buffers (should be large enough to carry any kind of input)
+
+// FORWARD DECLARATION
+template<class T> class tList;
+template<class T> class tIterator;
+class Text;
+
+//! A class for ...
+class ShellBuffer {
+
+ public:
+  ShellBuffer();
+  virtual ~ShellBuffer();
+
+
+  // BUFFER //
+  /** @param bufferSize the new Buffer-Size */
+  void setBufferSize(unsigned int bufferSize) { this->bufferSize = bufferSize; };
+  void setBufferDisplaySize(unsigned int bufferDisplaySize);
+  void flushBuffers();
+  static bool addBufferLineStatic(const char* line, ...);
+  void addBufferLine(const char* line, va_list arg);
+  void printToDisplayBuffer(const char* text);
+  void moveBuffer(unsigned int lineCount);
+//    void moveBufferTo(unsigned int lineNumber);
+  const char* getBufferLine(unsigned int lineNumber);
+
+
+ private:
+   unsigned int             bufferSize;             //!< The Size of the buffer
+   unsigned int             bufferDisplaySize;      //!< The Size of the Display-buffer, in lines (not in characters)
+   tList<char>*             buffer;                 //!< A list of stored char-arrays(strings) to store the history
+   tIterator<char>*         bufferIterator;         //!< An iterator for the Shells main buffer.
+
+   Text**                   bufferText;             //!< A list of stored bufferTexts for the display of the buffer
+   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.
+
+};
+
+#endif /* _SHELL_BUFFER_H */
