 				observer2.send(value: 2)
 				expect(lastValue) == 2
 
-				observer1.send(value: 3)
+				observer3.send(value: 3)
 				expect(lastValue) == 3
+				
+				observer1.send(value: 4)
+				expect(lastValue) == 4
 			}
 
 			it("should not stop when one signal completes") {
 				let (signal1, observer1) = Signal<Int, NoError>.pipe()
 				let (signal2, observer2) = Signal<Int, NoError>.pipe()
-
-				let mergedSignals = Signal.merge([signal1, signal2])
+				let (signal3, observer3) = Signal<Int, NoError>.pipe()
+
+				let mergedSignals = Signal.merge([signal1, signal2, signal3])
 
 				var lastValue: Int?
 				mergedSignals.observeValues { lastValue = $0 }


				observer2.send(value: 2)
				expect(lastValue) == 2
			}

			it("should complete when all signals complete") {
				let (signal1, observer1) = Signal<Int, NoError>.pipe()
				let (signal2, observer2) = Signal<Int, NoError>.pipe()

				let mergedSignals = Signal.merge([signal1, signal2])

				var completed = false
				mergedSignals.observeCompleted { completed = true }

			it("should emit values from all signals") {
				let (signal1, observer1) = Signal<Int, NoError>.pipe()
				let (signal2, observer2) = Signal<Int, NoError>.pipe()
				let (signal3, observer3) = Signal<Int, NoError>.pipe()

				let mergedSignals = Signal.merge([signal1, signal2, signal3])

				var lastValue: Int?
				mergedSignals.observeValues { lastValue = $0 }
