Index: /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationManager.cc
===================================================================
--- /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationManager.cc	(revision 2782)
+++ /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationManager.cc	(revision 2783)
@@ -97,5 +97,5 @@
         
         //!< Insert the notification in all queues that have its sender as target.
-        for(std::map<NotificationQueue*,int>::iterator it = queueList_s.begin(); it != queueList_s.end(); it++)
+        for(std::map<NotificationQueue*,int>::iterator it = queueList_s.begin(); it != queueList_s.end(); it++) //!< Iterate through all queues.
         {
             std::set<std::string> set = it->first->getTargetsSet();
@@ -107,5 +107,5 @@
         }
         
-        COUT(3) << "NotificationQueue registered with the NotificationManager." << std::endl;
+        COUT(3) << "Notification registered with the NotificationManager." << std::endl;
         
         return true;
@@ -133,4 +133,5 @@
         {
             notificationLists_s[index] = &allNotificationsList_s;
+            COUT(3) << "NotificationQueue registered with the NotificationManager." << std::endl;
             return true;
         }
@@ -148,7 +149,7 @@
         }
         
-        COUT(3) << "Notification registered with the NotificationManager." << std::endl;
-        
         queue->update(); //!< Update the queue.
+
+        COUT(3) << "NotificationQueue registered with the NotificationManager." << std::endl;
         
         return true;
@@ -171,6 +172,4 @@
     /*static*/ std::multimap<std::time_t,Notification*>* NotificationManager::getNotifications(NotificationQueue* queue, const std::time_t & timeFrameStart, const std::time_t & timeFrameEnd)
     {
-        COUT(1) << "Queue: " << queue << ", timeFrameStart: " << timeFrameStart << ", timeFrameEnd: " << timeFrameEnd << std::endl;
-    
         std::multimap<std::time_t,Notification*>* notifications = NotificationManager::notificationLists_s[NotificationManager::queueList_s[queue]];
         
Index: /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationOverlay.cc
===================================================================
--- /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationOverlay.cc	(revision 2782)
+++ /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationOverlay.cc	(revision 2783)
@@ -87,9 +87,9 @@
     }
 
-    const std::string NotificationOverlay::clipMessage(const std::string & str)
+    const std::string NotificationOverlay::clipMessage(const std::string & message)
     {
-        if(str.length() <= (unsigned int)this->queue_->getNotificationLength())
-            return str;
-        return str.substr(0, this->queue_->getNotificationLength());
+        if(message.length() <= (unsigned int)this->queue_->getNotificationLength())
+            return message;
+        return message.substr(0, this->queue_->getNotificationLength());
     }
 
Index: /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.cc
===================================================================
--- /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.cc	(revision 2782)
+++ /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.cc	(revision 2783)
@@ -59,10 +59,9 @@
     @brief
         Destructor.
-    @todo
-        I'm pretty sure that there are some thing that have to be distroyed.
     */
     NotificationQueue::~NotificationQueue()
     {
-        
+        this->targets_.clear();
+        this->clear();
     }
     
@@ -76,5 +75,4 @@
         RegisterObject(NotificationQueue);
         
-        this->setDefaults();
         this->size_ = 0;
         this->tickTime_ = 0.0;
@@ -107,4 +105,6 @@
         SUPER(NotificationQueue, XMLPort, xmlElement, mode);
         
+        this->setDefaults();
+
         XMLPortParam(NotificationQueue, "maxSize", setMaxSize, getMaxSize, xmlElement, mode);
         XMLPortParam(NotificationQueue, "notificationLength", setNotificationLength, getNotificationLength, xmlElement, mode);
@@ -135,4 +135,5 @@
             {
                 this->removeContainer(*it);
+                this->scroll(Vector2(0.0,-(1.1*this->getFontSize())));
                 it = this->containers_.begin(); //TDO: Needed?
             }
@@ -176,6 +177,4 @@
         this->addNotification(notification, time);
         
-        //TDO: Position!
-        
         std::multiset<NotificationOverlayContainer*, NotificationOverlayContainerCompare>::iterator it;
         while(this->getSize() > this->getMaxSize())
@@ -183,4 +182,5 @@
             it = this->containers_.begin();
             this->removeContainer(*it);
+            this->scroll(Vector2(0.0,-(1.1*this->getFontSize())));
         }
         
@@ -241,13 +241,18 @@
     /**
     @brief
-        Returns all targets concatinated as string, with kommas (',') as seperators.
-    @return
-        Returns all targets concatinated as string, with kommas (',') as seperators.
-    @todo
-        Where is the string deleted?
-    */
-    const std::string & NotificationQueue::getTargets() const
-    {
-        std::string* pTemp = new std::string("");
+        Produces all targets concatinated as string, with kommas (',') as seperators.
+    @param string
+        Pointer to a string which will be used by the method to fill with the concatination of the targets.
+    @return
+        Returns true if successful.
+    */
+    bool NotificationQueue::getTargets(std::string* string) const
+    {
+        if(string == NULL)
+        {
+            COUT(4) << "Input string must have memory allocated." << std::endl;
+            return false;
+        }
+        string->clear();
         bool first = true;
         for(std::set<std::string>::iterator it = this->targets_.begin(); it != this->targets_.end(); it++) //!< Iterate through the set of targets.
@@ -255,5 +260,5 @@
             if(!first)
             {
-                *pTemp += ",";
+                *string += ",";
             }
             else
@@ -261,8 +266,8 @@
                 first = false;
             }
-            *pTemp += *it;
-        }
-        
-        return *pTemp;
+            *string += *it;
+        }
+        
+        return true;
     }
     
@@ -278,4 +283,6 @@
     bool NotificationQueue::setTargets(const std::string & targets)
     {
+        this->targets_.clear();
+
         std::string* pTemp;
         unsigned int index = 0;
@@ -283,9 +290,10 @@
         {
             pTemp = new std::string("");
-            while(targets[index] != ',' && targets[index] != ' ' && index < targets.size())
+            while(index < targets.size() && targets[index] != ',' && targets[index] != ' ')
             {
                 *pTemp += targets[index];
                 index++;
             }
+            index++;
             this->targets_.insert(*pTemp);
         }
@@ -331,5 +339,13 @@
         return true;
     }
-    
+
+    void NotificationQueue::scroll(const Vector2 pos)
+    {
+        for (std::map<Notification*, NotificationOverlayContainer*>::iterator it = this->overlays_.begin(); it != this->overlays_.end(); ++it) //!< Scroll each overlay.
+        {
+            it->second->overlay->scroll(pos);
+        }
+    }
+
     /**
     @brief
@@ -358,4 +374,6 @@
         this->insertElement(container->overlay, container->name);
         this->size_= this->size_+1;
+
+        container->overlay->scroll(Vector2(0.0,(1.1*this->getFontSize())*(this->getSize()-1)));
     }
     
Index: /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.h
===================================================================
--- /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.h	(revision 2782)
+++ /code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.h	(revision 2783)
@@ -44,4 +44,5 @@
 #include <map>
 #include <ctime>
+#include "util/Math.h"
 
 #include "orxonox/overlays/OverlayGroup.h"
@@ -120,5 +121,5 @@
             inline const std::set<std::string> & getTargetsSet()
                 { return this->targets_; }
-            const std::string & getTargets() const; //!< Returns a string consisting of teh concatination of the targets.
+            bool getTargets(std::string* string) const; //!< Returns a string consisting of the concatination of the targets.
             
             /**
@@ -134,4 +135,6 @@
             inline const std::string & getFont() const
                 { return this->font_; }
+
+            void scroll(const Vector2 pos);
             
         private:
