     }
     
     private func loadEventVideo() {
-        if let url = event!.appropriateURL {
-            print("LIVE EVENT URL: \(url)")
-
-            self.asset = AVURLAsset(URL: url, options: nil)
-            let keys = ["playable", "tracks"]
-            asset.loadValuesAsynchronouslyForKeys(keys) {
-                for key in keys {
-                    var error: NSError?
-                    let status = self.asset.statusOfValueForKey(key, error: &error)
-                    if status == .Failed {
-                        print("[Live Session Playback] Failed to load status for key \(key) \(error)")
-                        return
+        if let url = event!.stream {
+            asset = AVURLAsset(URL: url, options: nil)
+            asset.loadValuesAsynchronouslyForKeys(["playable"]) {
+                dispatch_async(dispatch_get_main_queue()) {
+                    if self.asset.playable {
+                        self.playEventVideo()
                     }
                 }
-                
-                dispatch_async(dispatch_get_main_queue()) {
-                    self.playEventVideo()
-                }
             }
         }
     }
     
     private func playEventVideo() {
-        self.item = AVPlayerItem(asset: self.asset)
-        self.player = AVPlayer(playerItem: self.item)
-        self.item.addObserver(self, forKeyPath: "status", options: [.Initial, .New], context: nil)
-        
-        if NSProcessInfo.processInfo().isElCapitan {
-            self.playerView.hidden = true
-            self.customPlayerView.hidden = false
-            self.customPlayerView.player = self.player
-        } else {
-            self.playerView.player = player
-        }
+        item = AVPlayerItem(asset: asset)
+        player = AVPlayer(playerItem: item)
+        item.addObserver(self, forKeyPath: "status", options: [.Initial, .New], context: nil)
+
+        playerView.player = player
     }
     
     override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {

    var boundaryObserver: AnyObject?
    
    func setupTranscriptSync(transcript: WWDCSessionTranscript) {
        if self.transcriptWC == nil {
            return
        }
        
        boundaryObserver = player?.addBoundaryTimeObserverForTimes(transcript.timecodes, queue: dispatch_get_main_queue()) { [unowned self] in
            if self.transcriptWC == nil {
                return
            }
            
            let roundedTimecode = WWDCTranscriptLine.roundedStringFromTimecode(CMTimeGetSeconds(self.player!.currentTime()))
            self.transcriptWC.highlightLineAt(roundedTimecode)
        }

    }
    
}
