     }
 
     func fetchTrackDetails() {
-        weak var _self = self
-        playlistLoader.fetchTracks().on(
-            next: { (index, track) in
-                UIScheduler().schedule {
-                    if let __self = _self {
-                        __self.tableView?.reloadRowsAtIndexPaths([NSIndexPath(forItem: index, inSection: 0)],
-                            withRowAnimation: UITableViewRowAnimation.None)
-                        Playlist.notifyChange(.Updated(__self.playlist))
-                    }
-                }
-                return
-            }, error: { error in
-                self.tableView.reloadData()
-            }, completed: {
-                self.tableView.reloadData()
-        }).start()
+        playlistLoader.fetchTracks()
     }
 
     // MARK: UITableViewDataSource

                if self.playlist == playlist {
                    self.tableView.reloadData()
                }
            case .TracksAdded(let playlist, _):
                if self.playlist == playlist {
                    self.tableView.reloadData()
                }
            case .TrackRemoved(let playlist, _, let index):
                if self.playlist == playlist {

        indicator.hidesWhenStopped = true
        indicator.stopAnimating()
        updateNavbar()
        observePlaylist()
        fetchTracks()
        if playlistType == .Favorite && tracks.count == 0 {
            showGuideMessage()
