     public override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?,
         change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
             switch context {
-            case &kvoPlayerContext:
-                handleRateChangedEvent()
             case &kvoStatusDidChangeContext:
                 handleStatusChangedEvent()
             case &kvoTimeRangesContext:

    
    public override func play() {
        player.play()
        currentState = .Playing
        
        if !player.currentItem!.playbackLikelyToKeepUp {
            trigger(.Buffering)
        }
    }
    
    public override func pause() {
        player.pause()
        currentState = .Paused
        trigger(.Pause)
    }
    
    public override func isPlaying() -> Bool {

        player.removeObserver(self, forKeyPath: "currentItem.loadedTimeRanges")
        player.removeObserver(self, forKeyPath: "currentItem.playbackLikelyToKeepUp")
        player.removeObserver(self, forKeyPath: "currentItem.playbackBufferEmpty")
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }
}