 					expect(outerCompleted).to(beTruthy())
 				}
 			}
-			
+
 			describe("error handling") {
 				it("should forward an error from an inner signal") {
 					let errorProducer = SignalProducer<Int, TestError>(error: TestError.Default)
 					let outerProducer = SignalProducer<SignalProducer<Int, TestError>, TestError>(value: errorProducer)
-					
+
 					var error: TestError?
-					merge(outerProducer).start(error: { e in
+					(outerProducer |> join(.Merge)).start(error: { e in
 						error = e
 					})
 					expect(error).to(equal(TestError.Default))
 				}
-				
+
 				it("should forward an error from the outer signal") {
 					let (outerProducer, outerSink) = SignalProducer<SignalProducer<Int, TestError>, TestError>.buffer()
-					
+
 					var error: TestError?
-					merge(outerProducer).start(error: { e in
+					(outerProducer |> join(.Merge)).start(error: { e in
 						error = e
 					})
-					
+
 					sendError(outerSink, TestError.Default)
 					expect(error).to(equal(TestError.Default))
 				}

			it("should forward an error from an inner signal") {
				let inner = SignalProducer<Int, TestError>(error: .Default)
				let outer = SignalProducer<SignalProducer<Int, TestError>, TestError>(value: inner)
				let result = outer |> latest |> first
				
				expect(result?.error).to(equal(TestError.Default))
			}

			it("should forward an error from the outer signal") {
				let outer = SignalProducer<SignalProducer<Int, TestError>, TestError>(error: .Default)
				let result = outer |> latest |> first
				
				expect(result?.error).to(equal(TestError.Default))
			}

			it("should complete when the original and latest signals have completed") {
				let inner = SignalProducer<Int, TestError>.empty
				let outer = SignalProducer<SignalProducer<Int, TestError>, TestError>(value: inner)
				
				var completed = false
				latest(outer).start(completed: {
					completed = true
				})
				
				expect(completed).to(beTruthy())
			}
			
			it("should complete when the outer signal completes before sending any signals") {
				let outer = SignalProducer<SignalProducer<Int, TestError>, TestError>.empty

				var completed = false
				latest(outer).start(completed: {
					completed = true
				})
				
				expect(completed).to(beTruthy())
			}
		}

					sendB()
					expect(recv).to(equal([0, 1, 100, 2, 101]))
				}

				it("should complete when all signals have completed") {
					completeA()
					expect(outerCompleted).to(beFalsy())
