 
 		describe("then") {
 			it("should start the subsequent producer after the completion of the original") {
-				var sink: Signal<Int, NoError>.Observer!
-				let original = SignalProducer<Int, NoError> { observer, _ in
-					sink = observer
-				}
+				let (original, sink) = SignalProducer<Int, NoError>.buffer()
 
 				var subsequentStarted = false
 				let subsequent = SignalProducer<Int, NoError> { observer, _ in


				sendCompleted(originalSink)
				expect(completed).to(beFalse())
				sendCompleted(subsequentSink)
				expect(completed).to(beTrue())
			}

			}

			it("should complete when both inputs have completed") {
				let (original, originalSink) = SignalProducer<Int, NoError>.buffer()
				let (subsequent, subsequentSink) = SignalProducer<String, NoError>.buffer()

				let producer = original |> then(subsequent)

