     private var _index = 0
     private let _selector: Selector
 
-    init(source: Observable<SourceType>, selector: Selector, observer: O) {
-        _selector = selector
-        super.init(source: source, observer: observer)
+    init(selector: Selector, observer: O) {
+        _selector = selector
+        super.init(observer: observer)
     }
 
     override func performMap(element: SourceType) throws -> S {

    }
    
    override func run<O: ObserverType where O.E == S.E>(observer: O) -> Disposable {
        let sink = MergeBasicSink(source: _source, observer: observer)
        sink.disposable = sink.run()
        return sink
    }
}

    }

    override func run<O: ObserverType where O.E == S.E>(observer: O) -> Disposable {
        let sink = FlatMapFirstSink<SourceType, S, O>(selector: _selector, observer: observer)
        sink.disposable = sink.run(_source)
        return sink
    }
}
