Index: /code/branches/presentation2/src/libraries/core/IOConsole.cc
===================================================================
--- /code/branches/presentation2/src/libraries/core/IOConsole.cc	(revision 6374)
+++ /code/branches/presentation2/src/libraries/core/IOConsole.cc	(revision 6375)
@@ -60,5 +60,5 @@
     void IOConsole::executed()
     {
-        this->shell_->addOutputLine(this->promptString_ + this->shell_->getInput(), Shell::Command);
+        this->shell_->addOutput(this->promptString_ + this->shell_->getInput() + '\n', Shell::Command);
     }
 
@@ -509,5 +509,5 @@
         std::cout.flush();
         if (!this->origCout_.str().empty())
-            this->shell_->addOutputLine(this->origCout_.str(), Shell::None);
+            this->shell_->addOutput(this->origCout_.str(), Shell::None);
 
         this->shell_->unregisterListener(this);
@@ -602,5 +602,5 @@
         if (!this->origCout_.str().empty())
         {
-            this->shell_->addOutputLine(this->origCout_.str(), Shell::None);
+            this->shell_->addOutput(this->origCout_.str(), Shell::None);
             this->origCout_.str("");
         }
Index: /code/branches/presentation2/src/libraries/core/Shell.cc
===================================================================
--- /code/branches/presentation2/src/libraries/core/Shell.cc	(revision 6374)
+++ /code/branches/presentation2/src/libraries/core/Shell.cc	(revision 6375)
@@ -189,21 +189,8 @@
     }
 
-    void Shell::addOutputLine(const std::string& line, LineType type)
-    {
-        // Make sure we really only have one line per line (no new lines!)
-        SubString lines(line, '\n');
-        for (unsigned i = 0; i < lines.size(); ++i)
-        {
-            this->outputLines_.push_front(std::make_pair(lines[i], type));
-
-            if (this->scrollPosition_)
-                this->scrollPosition_++;
-            else
-                this->scrollIterator_ = this->outputLines_.begin();
-
-            this->bFinishedLastLine_ = true;
-            if (!this->scrollPosition_)
-                this->updateListeners<&ShellListener::lineAdded>();
-        }
+    void Shell::addOutput(const std::string& text, LineType type)
+    {
+        this->outputBuffer_ << text;
+        this->outputChanged(type);
     }
 
@@ -248,5 +235,5 @@
     }
 
-    void Shell::outputChanged(int level)
+    void Shell::outputChanged(int lineType)
     {
         bool newline = false;
@@ -268,8 +255,21 @@
 
             if (this->bFinishedLastLine_)
-                this->addOutputLine(output, static_cast<LineType>(level));
+            {
+                this->outputLines_.push_front(std::make_pair(output, static_cast<LineType>(lineType)));
+
+                if (this->scrollPosition_)
+                    this->scrollPosition_++;
+                else
+                    this->scrollIterator_ = this->outputLines_.begin();
+
+                this->bFinishedLastLine_ = newline;
+
+                if (!this->scrollPosition_)
+                    this->updateListeners<&ShellListener::lineAdded>();
+            }
             else
             {
                 this->outputLines_.front().first += output;
+                this->bFinishedLastLine_ = newline;
                 this->updateListeners<&ShellListener::onlyLastLineChanged>();
             }
@@ -308,5 +308,8 @@
 
         if (!CommandExecutor::execute(this->inputBuffer_->get()))
-            this->addOutputLine("Error: Can't execute \"" + this->inputBuffer_->get() + "\".", Error);
+        {
+            this->outputBuffer_ << "Error: Can't execute \"" << this->inputBuffer_->get() << "\"." << std::endl;
+            this->outputChanged(Error);
+        }
 
         this->clearInput();
@@ -316,5 +319,6 @@
     {
         this->inputBuffer_->set(CommandExecutor::complete(this->inputBuffer_->get()));
-        this->addOutputLine(CommandExecutor::hint(this->inputBuffer_->get()), Hint);
+        this->outputBuffer_ << CommandExecutor::hint(this->inputBuffer_->get()) << std::endl;
+        this->outputChanged(Hint);
 
         this->inputChanged();
Index: /code/branches/presentation2/src/libraries/core/Shell.h
===================================================================
--- /code/branches/presentation2/src/libraries/core/Shell.h	(revision 6374)
+++ /code/branches/presentation2/src/libraries/core/Shell.h	(revision 6375)
@@ -103,5 +103,5 @@
             LineList::const_iterator getEndIterator() const;
 
-            void addOutputLine(const std::string& line, LineType type = None);
+            void addOutput(const std::string& text, LineType type = None);
             void clearOutput();
 
Index: /code/branches/presentation2/src/orxonox/overlays/InGameConsole.cc
===================================================================
--- /code/branches/presentation2/src/orxonox/overlays/InGameConsole.cc	(revision 6374)
+++ /code/branches/presentation2/src/orxonox/overlays/InGameConsole.cc	(revision 6375)
@@ -340,5 +340,5 @@
     void InGameConsole::executed()
     {
-        this->shell_->addOutputLine(this->shell_->getInput(), Shell::Command);
+        this->shell_->addOutput(this->shell_->getInput() + '\n', Shell::Command);
     }
 
