 				typealias Inner = Signal<Int, TestError>
 				typealias Outer = Signal<Inner, NoError>
 				
-				let (innerSignal, innerObserver) = Inner.pipe()
-				let (outerSignal, outerObserver) = Outer.pipe()
-				
-				var observed: Int? = nil
-				outerSignal
-					.flatten(.Latest)
-					.observeNext { value in
-						observed = value
-					}
-				
-				outerObserver.sendNext(innerSignal)
+				let (inner, innerObserver) = Inner.pipe()
+				let (outer, outerObserver) = Outer.pipe()
+				
+				var observed: Int? = nil
+				outer
+					.flatten(.Latest)
+					.observeNext { value in
+						observed = value
+					}
+				
+				outerObserver.sendNext(inner)
 				innerObserver.sendNext(4)
 				expect(observed) == 4
 			}

				typealias Inner = SignalProducer<Int, NoError>
				typealias Outer = Signal<Int, TestError>
				
				let (innerSignal, innerObserver) = Inner.pipe()
				let (outerSignal, outerObserver) = Outer.pipe()
				
				var observed: Int? = nil
				outerSignal
					.flatMap(.Latest) { _ in innerSignal }
					.observeNext { value in
						observed = value
					}

				typealias Inner = Signal<Int, TestError>
				typealias Outer = SignalProducer<Int, TestError>
				
				let (inner, innerObserver) = Inner.pipe()
				let (outer, outerObserver) = Outer.pipe()
				
				var observed: Int? = nil
				outer
					.flatMap(.Latest) { _ in inner }
					.startWithNext { value in
						observed = value
					}
