         override func ended()            {}
     }
     let tableCellReuseIdentifier      = "playlistTableViewCell"
-    let cellHeight:     CGFloat       = 80
-    var playlists:      [Playlist]    = []
-    var playerObserver: PlaylistTableViewPlayerObserver?
-    var appDelegate: AppDelegate { get { return UIApplication.sharedApplication().delegate as AppDelegate } }
+    let cellHeight:        CGFloat       = 80
+    var playlists:         [Playlist]    = []
+    var playerObserver:    PlaylistTableViewPlayerObserver?
+    var playlistsObserver: Disposable?
+
+    deinit {}
+
+    func dispose() {
+        if let observer = playerObserver {
+            appDelegate.player?.removeObserver(observer)
+        }
+        playlistsObserver?.dispose()
+    }
 
     override func viewDidLoad() {
         super.viewDidLoad()

    func observePlaylists() {
        playlists = Playlist.shared.current
        tableView.reloadData()
        Playlist.shared.signal.observe { event in
            let section = Section.Favorites.rawValue
            switch event {
            case .Created(let playlist):

    }

    override func viewWillDisappear(animated: Bool) {
        dispose()
    }

    func updateNavbar() {
