     fileprivate let videoPlayer = AVPlayer()
     fileprivate var videoLayer:AVPlayerLayer!
     fileprivate var index = 0
+    fileprivate var observer:Any?
+    
+    deinit {
+        print("deinit")
+    }
 
     override func viewDidLoad() {
         super.viewDidLoad()

            self.index = index
            let page = pages[self.index]
            let start = page["start"] as? Double ?? 0.0
            //let duration = page["duration"] as? CGFloat ?? 0.0
            guard let playerItem = videoPlayer.currentItem else {
                return // something is wrong
            }
            let time = CMTime(seconds: start, preferredTimescale: 600)
            playerItem.seek(to: time) { (success) in
                print("seek complete", success)
            }
        }
    }

    func reloadWithLanguageId(_ langId:String) {
        // no op
    }
    
    private func removeObserver() {
        if let observer = self.observer {
            videoPlayer.removeTimeObserver(observer)
            self.observer = nil
            print("remove observer")
        }
    }

    func moveToPageAt(index:Int) {
        print("moveToPageAt", index)
