 
         XCTAssertNotNil(observer)
 
-        // WHEN: the notification is posted
+        // WHEN: the notification is posted with userInfo
         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
+        self.waitForExpectationsWithTimeout(timeout, handler: { (error) in
+            XCTAssertNil(error, "Expectation should not error")
+        })
+    }
+
+    func test_ThatNotificationIsPostedAndReceived_WithValueAndSender() {
+
+        // GIVEN: a sender, value, and notification
         let fakeSender = TestSender()
         let fakeValue = TestValue()
         let notification = Notification<TestValue, TestSender>(name: "NotificationName", sender: fakeSender)
 
         let expectation = self.expectationWithDescription("\(__FUNCTION__)")
 
+        // GIVEN: an observer
+        let observer = NotificationObserver(notification: notification, handler: { (value, sender) in
+            XCTAssertEqual(value, fakeValue, "Values should be equal")
+            XCTAssertEqual(sender, fakeSender, "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(timeout, handler: { (error) in
+            XCTAssertNil(error, "Expectation should not error")
+        })
+    }
+
+    func test_ThatNotificationIsPostedAndReceived_WithValueAndNoSender() {
+
+        // GIVEN: a value, and notification without a sender
+        let fakeValue = TestValue()
+        let notification = Notification<TestValue, AnyObject>(name: "NotificationName")
+
+        let expectation = self.expectationWithDescription("\(__FUNCTION__)")
+
+        // GIVEN: an observer
         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(2, handler: { (error) in
            XCTAssertNil(error, "Expectation should not error")
        })
    }

    func test_ThatObserverUnregistersForNotificationsOnDeinit_WithValueSenderHandler() {

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


        XCTAssertNotNil(observer)

        // WHEN: the notification is posted with an empty tuple and no sender
        postNotification(notif, value: ())

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

    func test_ThatNotificationIsPostedAndReceived_WithUserInfoAndSender() {

        // GIVEN: a userInfo dictionary
        let userInfo = ["someKey": 100, "anotherKey": NSDate()]

        // GIVEN: a notification
        let notif = Notification<[String: NSObject], NotificationObserverTests>(name: "ExampleNotification", sender: self)

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

