 				var sendA: (Void -> Void)!
 				var completeB: (Void -> Void)!
 				var sendB: (Void -> Void)!
-				
+
 				var outerCompleted = false
-				
+
 				var recv = [Int]()
-				
+
 				beforeEach {
 					let (outerProducer, outerSink) = SignalProducer<SignalProducer<Int, NoError>, NoError>.buffer()
 					let (producerA, sinkA) = SignalProducer<Int, NoError>.buffer()
 					let (producerB, sinkB) = SignalProducer<Int, NoError>.buffer()
-					
+
 					completeA = { sendCompleted(sinkA) }
 					completeB = { sendCompleted(sinkB) }
-					
+
 					var a = 0
 					sendA = { sendNext(sinkA, a++) }
-					
+
 					var b = 100
 					sendB = { sendNext(sinkB, b++) }
-					
+
 					sendNext(outerSink, producerA)
 					sendNext(outerSink, producerB)
-					
-					merge(outerProducer).start(next: { i in
+
+					(outerProducer |> join(.Merge)).start(next: { i in
 						recv.append(i)
 					}, error: { _ in () }, completed: {
 						outerCompleted = true
 					})
-					
+
 					sendCompleted(outerSink)
 				}
-				
+
 				it("should forward values from any inner signals") {
 					sendA()
 					sendA()

					sendSubsequent = { sendNext(outerSink, subsequentProducer) }
					completeOuter = { sendCompleted(outerSink) }

					concat(outerProducer).start()
					sendNext(outerSink, previousProducer)
				}


				let outerProducer = SignalProducer<SignalProducer<Int, TestError>, TestError>(value: errorProducer)

				var error: TestError?
				(outerProducer |> join(.Concat)).start(error: { e in
					error = e
				})

				expect(error).to(equal(TestError.Default))
			}

