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


    @objc open var playbackEventsToListen: [String] = []
    private var playbackEventsListenIds: [String] = []
    @objc private(set) open var core: Core?

    static var hasAlreadyRegisteredPlugins = false
    static var hasAlreadyRegisteredPlaybacks = false

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

    private func bindCoreEvents() {
        core?.on(Event.willChangeActivePlayback.rawValue) { [weak self] _ in self?.unbindPlaybackEvents() }
        core?.on(Event.didChangeActivePlayback.rawValue) { [weak self] _ in self?.bindPlaybackEvents() }
        core?.on(InternalEvent.userRequestEnterInFullscreen.rawValue) { [weak self] (info: EventUserInfo) in self?.trigger(Event.requestFullscreen.rawValue, userInfo: info) }
        core?.on(InternalEvent.userRequestExitFullscreen.rawValue) { [weak self] (info: EventUserInfo) in self?.trigger(Event.exitFullscreen.rawValue, userInfo: info) }
    }
    
    @objc open func presentFullscreenIn(_ controller: UIViewController) {
        guard let coreView = core?.view else { return }
        controller.view.addSubviewMatchingConstraints(coreView)
    }
    
    @objc open func fitParentView() {
        guard let coreView = core?.view else { return }
        core?.parentView?.addSubviewMatchingConstraints(coreView)
    }
    
    @objc open func attachTo(_ view: UIView, controller: UIViewController) {
        core?.parentController = controller
        core?.parentView = view
