Index: code/branches/usability/src/modules/notifications/NotificationManager.cc
===================================================================
--- code/branches/usability/src/modules/notifications/NotificationManager.cc	(revision 7915)
+++ code/branches/usability/src/modules/notifications/NotificationManager.cc	(revision 7987)
@@ -103,6 +103,10 @@
     {
         // Destroys all NotificationQueues that have been registered with the NotificationManager.
-        for(std::map<const std::string, NotificationQueue*>::iterator it = this->queues_.begin(); it != this->queues_.end(); it++)
+        std::map<const std::string, NotificationQueue*>::iterator it = this->queues_.begin();
+        while(it != this->queues_.end())
+        {
             it->second->destroy(true);
+            it = this->queues_.begin();
+        }
 
         this->queues_.clear();
@@ -298,10 +302,10 @@
         }
 
+        COUT(4) << "NotificationListener '" << identifier << "' unregistered with the NotificationManager." << std::endl;
+
         // Remove the NotificationListener from the list of NotificationListeners.
         this->listenerList_.erase(listener);
         // Remove the Notifications list that was associated with the input NotificationListener.
         this->notificationLists_.erase(identifier);
-
-        COUT(4) << "NotificationListener unregistered with the NotificationManager." << std::endl;
     }
 
@@ -361,4 +365,5 @@
     bool NotificationManager::registerQueue(NotificationQueue* queue)
     {
+        COUT(4) << "NotificationQueue '" << queue->getName() << "' registered with the NotificationManager." << std::endl;
         return this->queues_.insert(std::pair<const std::string, NotificationQueue*>(queue->getName(), queue)).second;
     }
@@ -372,4 +377,5 @@
     void NotificationManager::unregisterQueue(NotificationQueue* queue)
     {
+        COUT(4) << "NotificationQueue '" << queue->getName() << "' unregistered with the NotificationManager." << std::endl;
         this->queues_.erase(queue->getName());
     }
Index: code/branches/usability/src/modules/notifications/NotificationQueue.cc
===================================================================
--- code/branches/usability/src/modules/notifications/NotificationQueue.cc	(revision 7915)
+++ code/branches/usability/src/modules/notifications/NotificationQueue.cc	(revision 7987)
@@ -137,4 +137,6 @@
             GUIManager::getInstance().getLuaState()->doString("NotificationLayer.removeQueue(\"" + this->getName() +  "\")");
 
+        COUT(3) << "NotificationQueue '" << this->getName() << "' destroyed." << std::endl;
+
         this->OrxonoxClass::destroy();
     }
@@ -167,7 +169,6 @@
             while(it != this->ordering_.upper_bound(&this->timeLimit_))
             {
-                std::multiset<NotificationContainer*, NotificationContainerCompare>::iterator temp = it;
-                it++;
-                this->remove(temp); // Remove the Notifications that have expired.
+                this->remove(it); // Remove the Notifications that have expired.
+                it = this->ordering_.begin();
             }
 
@@ -248,4 +249,6 @@
         if(GameMode::showsGraphics())
             GUIManager::getInstance().getLuaState()->doString("NotificationLayer.pushNotification(\"" + this->getName() + "\", \"" + notification->getMessage() + "\")");
+
+        COUT(5) << "Notification \"" << notification->getMessage() << "\" pushed to NotificationQueue '" << this->getName() << "'" << endl;
     }
 
@@ -259,4 +262,5 @@
         // Get all the NotificationContainers that were sent the same time the NotificationContainer we want to pop was sent.
         std::pair<std::multiset<NotificationContainer*, NotificationContainerCompare>::iterator, std::multiset<NotificationContainer*, NotificationContainerCompare>::iterator> iterators = this->ordering_.equal_range(container);
+
         // Iterate through all suspects and remove the container as soon as we find it.
         for(std::multiset<NotificationContainer*, NotificationContainerCompare>::iterator it = iterators.first; it != iterators.second; it++)
@@ -264,4 +268,5 @@
             if(container == *it)
             {
+                COUT(5) << "Notification \"" << (*it)->notification->getMessage() << "\" popped from NotificationQueue '" << this->getName() << "'" << endl;
                 this->ordering_.erase(it);
                 break;
@@ -290,4 +295,7 @@
         // Get the index at which the Notification is.
         std::vector<NotificationContainer*>::difference_type index = it - this->notifications_.begin ();
+
+        COUT(5) << "Notification \"" << (*it)->notification->getMessage() << "\" removed from NotificationQueue '" << this->getName() << "'" << endl;
+
         this->ordering_.erase(containerIterator);
         this->notifications_.erase(it);
@@ -310,4 +318,5 @@
     void NotificationQueue::clear(bool noGraphics)
     {
+        COUT(4) << "Clearing NotificationQueue " << this->getName() << "." << endl;
         this->ordering_.clear();
         // Delete all NotificationContainers in the list.
@@ -372,5 +381,5 @@
     /**
     @brief
-        Produces all targets of the NotificationQueue concatinated as string, with kommas (',') as seperators.
+        Produces all targets of the NotificationQueue concatinated as string, with commas (',') as seperators.
     @return
         Returns the targets as a string.
