         playerObserver = TrackTableViewPlayerObserver(viewController: self)
         player?.addObserver(playerObserver)
         updateSelection()
+    }
+
+    func observePlaylist() {
+        playlistObserver?.dispose()
+        playlistObserver = Playlist.shared.signal.observeNext({ event in
+            switch event {
+            case .Created(_): break
+            case .Removed(_): break
+            case .Updated(let playlist):
+                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 {
+                    let indexPath = NSIndexPath(forItem: index, inSection: 0)
+                    self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
+                }
+            case .TrackUpdated(let playlist, _):
+                if self.playlist == playlist {
+                    self.tableView.reloadData()
+                }
+            }
+            return
+        })
+
     }
 
     func isPlaylistPlaying() -> Bool {

            player?.removeObserver(playerObserver)
        }
        playerObserver = nil
    }

    func updateNavbar() {

            (action, indexPath) in
            Logger.sendUIActionEvent(self, action: "removeTrack", label: "\(indexPath.item)")
            self.playlist.removeTrackAtIndex(UInt(indexPath.item))
        }

        remove.backgroundColor = UIColor.red
