 
     @objc open var playbackEventsToListen: [String] = []
     private var playbackEventsListenIds: [String] = []
-    @objc private(set) open var core: Core?
+    @objc private(set) var core: Core?
 
     static var hasAlreadyRegisteredPlugins = false
     static var hasAlreadyRegisteredPlaybacks = false

    }
    
    private func setCore(with options: Options) {
        self.core?.stopListening()
        self.core = CoreFactory.create(with: options)
        bindCoreEvents()
    }

    private func bindCoreEvents() {
        self.core?.on(Event.willChangeActivePlayback.rawValue) { [weak self] _ in self?.unbindPlaybackEvents() }
        self.core?.on(Event.didChangeActivePlayback.rawValue) { [weak self] _ in self?.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) {
        core?.parentController = controller
        core?.parentView = view


    @objc open func setFullscreen(_ fullscreen: Bool) {
        core?.setFullscreen(fullscreen)
    }
    
    open var options: Options? {
        return core?.options
    }
    
    open var corePlugins: [UICorePlugin]? {
        return core?.plugins
    }

    @discardableResult
