              Event.subtitleSelected.rawValue, Event.audioSelected.rawValue])
 
         Loader.shared.addExternalPlugins(externalPlugins)
-        Loader.shared.addExternalPlugins(Player.plugins)
+        Loader.shared.addExternalPlugins(Player.appPlugins)
 
         setCore(Core(options: options))
+
+        bindPlaybackEvents()
     }
 
-    fileprivate func setCore(_ core: Core) {
+    private func setCore(_ core: Core) {
         self.core?.stopListening()
 
         self.core = core
 
         self.core?.on(InternalEvent.willChangeActivePlayback.rawValue) { [weak self] _ in self?.unbindPlaybackEvents() }
         self.core?.on(InternalEvent.didChangeActivePlayback.rawValue) { [weak self] _ in self?.bindPlaybackEvents() }
-        self.core?.on(InternalEvent.userRequestEnterInFullscreen.rawValue) { [weak self] (info: EventUserInfo) in self?.forward(.requestFullscreen, userInfo: info) }
-        self.core?.on(InternalEvent.userRequestExitFullscreen.rawValue) { [weak self] (info: EventUserInfo) in self?.forward(.exitFullscreen, userInfo: info) }
-
-        bindPlaybackEvents()
+        self.core?.on(InternalEvent.userRequestEnterInFullscreen.rawValue) { [weak self] (info: EventUserInfo) in self?.trigger(Event.requestFullscreen.rawValue, userInfo: info) }
+        self.core?.on(InternalEvent.userRequestExitFullscreen.rawValue) { [weak self] (info: EventUserInfo) in self?.trigger(Event.exitFullscreen.rawValue, userInfo: info) }
     }
 
     @objc open func attachTo(_ view: UIView, controller: UIViewController) {

        return on(event.rawValue, callback: callback)
    }

    fileprivate func bindPlaybackEvents() {
        if let playback = core?.activePlayback {
            for event in playbackEventsToListen {
                let listenId = listenTo(

        }
    }

    private func unbindPlaybackEvents() {
        for id in playbackEventsListenIds {
            stopListening(id)
        }

        playbackEventsListenIds.removeAll()
    }
    
    public static func register(plugin: Plugin.Type) {
        appPlugins.append(plugin.self)
    }

    @objc open func destroy() {
