Index: code/branches/presentation3/src/modules/questsystem/notifications/Notification.cc
===================================================================
--- code/branches/presentation3/src/modules/questsystem/notifications/Notification.cc	(revision 6944)
+++ code/branches/presentation3/src/modules/questsystem/notifications/Notification.cc	(revision 6945)
@@ -40,4 +40,6 @@
 {
 
+    CreateUnloadableFactory(Notification);
+    
     /**
     @brief
@@ -56,5 +58,5 @@
         The message of the Notification.
     */
-    Notification::Notification(const std::string & message) : BaseObject(NULL)
+    Notification::Notification(BaseObject* creator, const std::string & message) : BaseObject(creator)
     {
         this->message_ = message;
@@ -67,4 +69,5 @@
     Notification::~Notification()
     {
+        
     }
 
Index: code/branches/presentation3/src/modules/questsystem/notifications/Notification.h
===================================================================
--- code/branches/presentation3/src/modules/questsystem/notifications/Notification.h	(revision 6944)
+++ code/branches/presentation3/src/modules/questsystem/notifications/Notification.h	(revision 6945)
@@ -53,5 +53,5 @@
         public:
             Notification(BaseObject* creator);
-            Notification(const std::string & message);
+            Notification(BaseObject* creator, const std::string & message);
             virtual ~Notification();
 
Index: code/branches/presentation3/src/modules/questsystem/notifications/NotificationManager.cc
===================================================================
--- code/branches/presentation3/src/modules/questsystem/notifications/NotificationManager.cc	(revision 6944)
+++ code/branches/presentation3/src/modules/questsystem/notifications/NotificationManager.cc	(revision 6945)
@@ -118,4 +118,8 @@
     @brief
         Unregisters a Notification within the NotificationManager.
+    @param notification
+        A pointer to the Notification to be unregistered.
+    @param listener
+        A pointer to the NotificationListener the Notification is unregistered for.
     */
     void NotificationManager::unregisterNotification(Notification* notification, NotificationListener* listener)
@@ -124,9 +128,13 @@
         assert(listener);
 
+        // If the Notification was removed from the list of Notifications of the input NotificationListener, the counter for the Notification of the number of NotificationListeners it is present in is decremented.
         if(this->removeNotification(notification, *(this->notificationLists_.find(this->listenerList_.find(listener)->second)->second)))
             this->listenerCounter_[notification] = this->listenerCounter_[notification] - 1;
+
+        // If the Notification is no longer present in any of the NotificationListeners it can be removed from the map of all Notifications and be destroyed.
         if(this->listenerCounter_[notification] == (unsigned int) 0)
         {
             this->removeNotification(notification, this->allNotificationsList_);
+            this->listenerCounter_.erase(notification);
             notification->destroy();
         }
@@ -138,7 +146,15 @@
     @brief
         Helper method that removes an input notification form an input map.
+    @param notification
+        A pointer to the notification to be removed.
+    @param map
+        The map the notification should be removed from.
+    @return
+        Returns true if successful.
     */
     bool NotificationManager::removeNotification(Notification* notification, std::multimap<std::time_t, Notification*>& map)
     {
+        // Iterates through all items in the map until the Notification is found.
+        //TODO: Do more efficiently?
         for(std::multimap<std::time_t, Notification*>::iterator it = map.begin(); it != map.end(); it++)
         {
@@ -222,5 +238,8 @@
         this->listenerList_.erase(listener);
         this->notificationLists_.erase(identifier);
-        delete map;
+
+        // If the map is not the map of all notifications, delete it.
+        if(map != &this->allNotificationsList_)
+            delete map;
 
         COUT(4) << "NotificationListener unregistered with the NotificationManager." << std::endl;
Index: code/branches/presentation3/src/modules/questsystem/notifications/NotificationManager.h
===================================================================
--- code/branches/presentation3/src/modules/questsystem/notifications/NotificationManager.h	(revision 6944)
+++ code/branches/presentation3/src/modules/questsystem/notifications/NotificationManager.h	(revision 6945)
@@ -60,6 +60,6 @@
             virtual ~NotificationManager();
 
-            static const std::string ALL;
-            static const std::string NONE;
+            static const std::string ALL; //!< Static string to indicate a sender that sends to all NotificationListeners.
+            static const std::string NONE; //!< Static string to indicare a sender that sends to no specific NotificationListener.
 
             bool registerNotification(Notification* notification); //!< Registers a Notification within the NotificationManager.
@@ -99,6 +99,5 @@
             std::map<Notification*, unsigned int> listenerCounter_; //!< A container to store the number of NotificationListeners a Notification is registered with.
 
-            bool removeNotification(Notification* notification, std::multimap<std::time_t, Notification*>& map);
-
+            bool removeNotification(Notification* notification, std::multimap<std::time_t, Notification*>& map); //!< Helper method that removes an input notification form an input map.
 
     };
Index: code/branches/presentation3/src/modules/questsystem/notifications/NotificationQueue.cc
===================================================================
--- code/branches/presentation3/src/modules/questsystem/notifications/NotificationQueue.cc	(revision 6944)
+++ code/branches/presentation3/src/modules/questsystem/notifications/NotificationQueue.cc	(revision 6945)
@@ -124,5 +124,5 @@
         XMLPortParam(NotificationQueue, "position", setPosition, getPosition, xmlElement, mode);
 
-        COUT(3) << "NotificationQueue created." << std::endl;
+        COUT(3) << "NotificationQueue '" << this->getName() << "' created." << std::endl;
     }
 
@@ -179,5 +179,5 @@
         delete notifications;
 
-        COUT(3) << "NotificationQueue updated." << std::endl;
+        COUT(4) << "NotificationQueue '" << this->getName() << "' updated." << std::endl;
     }
 
@@ -202,5 +202,5 @@
         }
 
-        COUT(3) << "NotificationQueue updated. A new Notifications has been added." << std::endl;
+        COUT(4) << "NotificationQueue '" << this->getName() << "' updated. A new Notifications has been added." << std::endl;
     }
 
@@ -429,4 +429,5 @@
             return false;
 
+        // Unregister the NotificationQueue with the NotificationManager.
         NotificationManager::getInstance().unregisterNotification(container->notification, this);
         
Index: code/branches/presentation3/src/modules/questsystem/notifications/NotificationQueue.h
===================================================================
--- code/branches/presentation3/src/modules/questsystem/notifications/NotificationQueue.h	(revision 6944)
+++ code/branches/presentation3/src/modules/questsystem/notifications/NotificationQueue.h	(revision 6945)
@@ -71,4 +71,5 @@
 
         Creating a NotificationQueue through XML goes as follows:
+        Be aware that the NotificationQueue must be inside the <Level></Level> tags or bad things will happen.
         <NotificationQueue
             name = "SuperQueue" //Name of your OverlayQueue.
