     private var kvoStatusDidChangeContext = 0
     private var kvoTimeRangesContext = 0
     private var kvoBufferingContext = 0
+    private var kvoPlayerContext = 0
     
     private var player: AVPlayer!
     private var playerLayer: AVPlayerLayer!

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

            default:
                break
            }
    }
    
    private func handleRateChangedEvent() {
        if isPlaying() {
            trigger(.Play)
        }
    }
    
    private func handleStatusChangedEvent() {
