     public func stop() {
         if (self.player != nil) {
             self.currentState = .Waiting
+            self.currentPlayerItem?.removeObserver(self, forKeyPath: "status")
             self.currentPlayerItem = nil
-            self.player?.delete(self)
+            self.player = nil
             debug("Stopping current item")
             self.delegate?.twistStatusChanged()
         }

        if !isPlayable() {
            return
        }
        debug("Go to next item")
    }

    public func previous() {

            return
        }

        // TODO:
        // Seek to 0 if time is more than 5 seconds, else go to previous
        // Check the repeat
        // Check the shuffle settings
        if self.currentIndex != 0 {
            self.stop()
            self.play(self.currentIndex - 1)
        }
    }

    func isPlayable() -> Bool {
