 // MARK: Merge
 
 final class MergeBasicSink<S: ObservableConvertibleType, O: ObserverType where O.E == S.E> : MergeSink<S, S, O> {
-    override init(source: Observable<S>, observer: O) {
-        super.init(source: source, observer: observer)
+    override init(observer: O) {
+        super.init(observer: observer)
     }
 
     override func performMap(element: S) throws -> S {

    typealias Element = SourceType

    private let _lock = NSRecursiveLock()
    private let _source: Observable<SourceType>

    private var subscribeNext: Bool {
        return true

        return _group.count == MergeNoIterators
    }

    init(selector: Selector, observer: O) {
        _selector = selector
        super.init(observer: observer)
    }

    override func performMap(element: SourceType) throws -> S {
