 
 ///  An instance of `NotificationObserver` is responsible for observing notifications.
 ///  It has the same type parameters as `Notification`, namely `<V, S: AnyObject>`.
-///  When an observer is initialized, it will immediately begin listening for its specified notification, 
+///  When an observer is initialized, it will immediately begin listening for its specified notification,
 ///  by registering with the specified notification center.
 public final class NotificationObserver <V, S: AnyObject> {
 
     // MARK: Typealiases
 
-    ///  A closure to be called when a notification is received.
+    ///  The closure to be called when a notification is received.
     ///
     ///  :param: value  The data value sent with the notification.
     ///  :param: sender The object that sent the notification, or `nil` if the notification is not associated with a specific sender.
-    public typealias ValueSenderHandler = (value: V, sender: S?) -> Void
-
-    ///  A closure to be called when a notification is received.
-    ///
-    ///  :param: notification The notification received.
-    public typealias NotificationHandler = (notification: NSNotification) -> Void
+    public typealias Handler = (value: V, sender: S?) -> Void
 
     private let observerProxy: NSObjectProtocol
 
     private let center: NSNotificationCenter
 
     // MARK: Initialization
-
-    ///  Constructs a new `NotificationObserver` instance and immediately registers to begin observing the specified `notification`.
-    ///  To unregister this observer and end listening for notifications, dealloc the object by setting it to `nil`.
-    ///
-    ///  :param: notification The notification for which to register the observer.
-    ///  :param: queue        The operation queue to which `handler` should be added. 
-    ///                       If `nil`, the block is run synchronously on the posting thread. The default parameter value is `nil`.
-    ///  :param: center       The notification center from which the notification should be dispatched.
-    ///                       The default parameter value is `NSNotificationCenter.defaultCenter()`.
-    ///  :param: handler      The closure to execute when the notification is received.
-    ///
-    ///  :returns: A new `NotificationObserver` instance.
-    public init(notification: Notification<V, S>, queue: NSOperationQueue? = nil, center: NSNotificationCenter = NSNotificationCenter.defaultCenter(), handler: NotificationHandler) {
-        self.center = center
-        observerProxy = center.addObserverForName(notification.name, object: notification.sender, queue: queue, usingBlock: { (note) -> Void in
-            handler(notification: note)
-        })
-    }
 
     ///  Constructs a new `NotificationObserver` instance and immediately registers to begin observing the specified `notification`.
     ///  To unregister this observer and end listening for notifications, dealloc the object by setting it to `nil`.


}

///  Posts the given notification to the specified center. 
///  This function has the same type parameters as `Notification`, namely `<V, S: AnyObject>`, which restricts the type of value that can be posted.
///
///  :param: notification The notification to post.
///  :param: value        The data value to be sent with the notification.
///  :param: center       The notification center from which the notification should be dispatched. 
///                       The default parameter value is `NSNotificationCenter.defaultCenter()`.
public func postNotification<V, S: AnyObject> (notification: Notification<V, S>, #value: V, center: NSNotificationCenter = NSNotificationCenter.defaultCenter()) {
    center.postNotificationName(notification.name, object: notification.sender, userInfo: userInfo(value))

    ///  :param: handler      The closure to execute when the notification is received.
    ///
    ///  :returns: A new `NotificationObserver` instance.
    public init(notification: Notification<V, S>, queue: NSOperationQueue? = nil, center: NSNotificationCenter = NSNotificationCenter.defaultCenter(), handler: Handler) {
        self.center = center
        observerProxy = center.addObserverForName(notification.name, object: notification.sender, queue: queue, usingBlock: { (notification: NSNotification!) -> Void in
            if let value: V = unboxUserInfo(notification.userInfo) {
