         self.player = player
     }
 
-    func run() -> Observable<URL?> {
-        return Observable<Observable<URL?>>
+    func run() -> Observable<Response?> {
+        return Observable<Observable<Response?>>
             .create { [weak self] subscriber in
                 DispatchQueue.main.async {
                     guard let `self` = self else { return }

                    let index = self.index
                    let playlist = self.playlist

                    if playlist.isTrackEmpty || playlist.trackCount == index + 1 {
                        self.canPop = true
                        subscriber.onNext(Observable.just(nil))
                        subscriber.onCompleted()

        self.player = player
    }

    func run() -> Observable<Response?> {
        func getPreviewInfo(track: Track) -> (URL, Double)? {
            print(track.id, track.name)
            if let duration = track.metadata?.duration {
