     
     private func playEventVideo(url: NSURL) {
         player = AVPlayer(URL: url)
+        addRateObserver(player: player!)
         progressIndicator.stopAnimation(nil)
         playerView.player = player
+    }
+    
+    var rate: Float = 1.0
+    
+    private func addRateObserver(player player: AVPlayer) {
+        player.addObserver(self, forKeyPath: "rate", options: [.New, .Old], context: nil)
+    }
+
+    private func removeRateObserver(player player: AVPlayer) {
+        player.removeObserver(self, forKeyPath: "rate")
     }
     
     override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {

        if let url = NSURL(string: videoURL!) {
            if event == nil {
                player = AVPlayer(URL: url)
                playerView.player = player
                
                // SESSION

                dispatch_async(dispatch_get_main_queue()) {
                    self.progressIndicator.stopAnimation(nil)
                    self.player?.play()
                }
            }
        } else if keyPath == "rate" {
            if let change = change,
               let newRate = change[NSKeyValueChangeNewKey] as? Float,
               let oldRate = change[NSKeyValueChangeOldKey] as? Float
            {
                if oldRate == 0.0 && newRate == 1.0 { // play button tapped
                    player!.rate = rate // set rate to stored one
                } else if newRate != 0.0 { // change rate button tapped
                    rate = newRate // store rate
                }
            }
        } else {
