     open func bindCoreEvents() {
         guard let core = core else { return }
 
-        listenFullscreenEvents()
+        listenFullscreenEvents(context: core)
 
         listenTo(core, event: .requestPadding) { [weak self] info in
             guard let padding = info?["padding"] as? CGFloat else { return }

            self?.toggleVisibility()
        }

        listenScrubbingEvents()

        listenTo(core, eventName: InternalEvent.didDragDrawer.rawValue) { [weak self] info in
            guard let alpha = info?["alpha"] as? CGFloat else { return }
            self?.view.alpha = alpha
        }

        listenTo(core, event: .didShowDrawerPlugin) { [weak self] _ in
            self?.hide()
        }

        listenTo(core, event: .didHideDrawerPlugin) { [weak self] _ in
            guard self?.showOnDrawerHide == true else { return }
            self?.show()
        }
    }

    private func bindContainerEvents() {

        }
    }

    private func listenFullscreenEvents(context: UIObject) {
        listenTo(context, eventName: Event.didEnterFullscreen.rawValue) { [weak self] _ in
            if self?.hideControlsTimer?.isValid ?? false {
                self?.disappearAfterSomeTime()
            }
        }

        listenTo(context, eventName: Event.didExitFullscreen.rawValue) { [weak self] _ in
            if self?.hideControlsTimer?.isValid ?? false {
                self?.disappearAfterSomeTime()
            }
        }
    }

    private func listenScrubbingEvents(context: UIObject) {
        listenTo(context, eventName: InternalEvent.willBeginScrubbing.rawValue) { [weak self] _ in
            self?.keepVisible()
        }

        listenTo(context, eventName: InternalEvent.didFinishScrubbing.rawValue) { [weak self] _ in
            guard self?.activePlayback?.state == .playing else { return }
            self?.disappearAfterSomeTime()
        }
    }

    private func listenDrawerEvents(context: UIObject) {
        listenTo(context, eventName: InternalEvent.didDragDrawer.rawValue) { [weak self] info in
            guard let alpha = info?["alpha"] as? CGFloat else { return }
            self?.view.alpha = alpha
        }

        listenTo(context, event: .didShowDrawerPlugin) { [weak self] _ in
            self?.hide()
        }

        listenTo(context, event: .didHideDrawerPlugin) { [weak self] _ in
            guard self?.showOnDrawerHide == true else { return }
            self?.show()
        }
    }


    func show(animated: Bool = false, completion: (() -> Void)? = nil) {
        if currentlyShowing {
