 
     #if os(iOS)
     private func renderCorePlugins() {
-        plugins
-            .filter { $0.isNotMediaControlElement }
-            .filter { $0.isNotOverlayPlugin}
-            .forEach(render)
+        plugins.filter { plugin in
+            switch plugin {
+            case let (mediaControl as MediaControl):
+                layerComposer.attachMediaControl(mediaControl.view)
+                render(mediaControl)
+                return false
+            case is OverlayPlugin, is MediaControl.Element:
+                return false
+            default:
+                return true
+            }
+        }
+        .forEach(render)
     }
 
     private func renderMediaControlElements() {

        parentView.addSubviewMatchingConstraints(view)
    
        layerComposer.attachContainer(containerView)
        setupMediaControlLayer()
        layerComposer.compose(inside: view)
        
        self.parentController = controller
        self.parentView = parentView
    
        trigger(.didAttachView)
    }
    
    private func setupMediaControlLayer() {
        #if os(iOS)
        let mediaControl = plugins.first { $0 is MediaControl } as? MediaControl
        if let mediaControlView = mediaControl?.view {
            layerComposer.attachMediaControl(mediaControlView)
        }
        #endif
    }
    
    open override func render() {

        #endif
    }

    func safeDestroy() {
        do {
            try ObjC.catchException {
