 
         XCTAssertNotNil(observer)
 
-        // WHEN: the notification is posted
+        // WHEN: the notification is posted with userInfo and no sender
         postNotification(notif, value: userInfo)
 
         // THEN: the observer receives the notification and executes its handler
-        self.waitForExpectationsWithTimeout(2, handler: { (error) in
-            XCTAssertNil(error, "Expectation should not error")
-        })
-    }
-
-    func test_Example_NotificationDictionary_WithoutSender() {
+        self.waitForExpectationsWithTimeout(timeout, handler: { (error) in
+            XCTAssertNil(error, "Expectation should not error")
+        })
+    }
+
+    func test_ThatNotificationIsPostedAndReceived_WithUserInfoAndNoSender() {
 
         // GIVEN: a userInfo dictionary
         let userInfo = ["someKey": 100, "anotherKey": NSDate()]


        XCTAssertNotNil(observer)

        // WHEN: the notification is posted
        postNotification(notif, value: userInfo)

        // THEN: the observer receives the notification and executes its handler
        self.waitForExpectationsWithTimeout(2, handler: { (error) in
            XCTAssertNil(error, "Expectation should not error")
        })
    }

    func test_ThatNotificationIsPosted_AndReceivedByObserver_WithValueAndSender() {

        // GIVEN: a sender, value, notification, and observer
        let fakeSender = TestSender()
        let fakeValue = TestValue()
        let notification = Notification<TestValue, TestSender>(name: "NotificationName", sender: fakeSender)

        let expectation = self.expectationWithDescription("\(__FUNCTION__)")

        let observer = NotificationObserver(notification: notification, handler: { (value, sender) in
            XCTAssertEqual(value.value, fakeValue.value, "Values should be equal")
            XCTAssertEqual(fakeSender.sender, sender!.sender, "Senders should be equal")
            expectation.fulfill()
        })

        XCTAssertNotNil(observer)

        // WHEN: the notification is posted
        postNotification(notification, value: fakeValue)

        // THEN: the observer receives the notification and executes its handler
        self.waitForExpectationsWithTimeout(2, handler: { (error) in
            XCTAssertNil(error, "Expectation should not error")
        })
    }

    func test_ThatNotificationIsPosted_AndReceivedByObserver_WithValueOnly() {

        // GIVEN: value, notification without a sender, and observer
        let fakeValue = TestValue()
        let notification = Notification<TestValue, AnyObject>(name: "NotificationName")

        let expectation = self.expectationWithDescription("\(__FUNCTION__)")

        let observer = NotificationObserver(notification: notification, handler: { (value, sender) in
            XCTAssertEqual(value.value, fakeValue.value, "Values should be equal")
            XCTAssertNil(sender, "Sender should be nil")
            expectation.fulfill()
        })

            userInfo: nil)

        // THEN: the observer receives the notification and executes its handler
        self.waitForExpectationsWithTimeout(timeout, handler: { (error) in
            XCTAssertNil(error, "Expectation should not error")
        })
    }

    func test_ThatObserverUnregistersForNotificationsOnDeinit() {

        // GIVEN: a notification and observer
        let fakeValue = TestValue()
