 class BottomDrawerPlugin: DrawerPlugin {
+    private var initialCenterY: CGFloat = .zero
+
     override var position: DrawerPlugin.Position {
         return .bottom
     }
 
     override var size: CGSize {
-        return CGSize(width: coreViewBounds.width, height: coreViewBounds.height/2)
-    }
-
-    private var coreViewBounds: CGRect {
-        guard let core = core else { return .zero }
-        return core.view.frame
+        return CGSize(width: coreViewFrame.width, height: coreViewFrame.height/2)
     }
 
     private var minYToShow: CGFloat {
-        return coreViewBounds.height * 0.75
+        return coreViewFrame.height * 0.75
     }
 
     private var hiddenHeight: CGFloat {
-        return coreViewBounds.height - placeholder
+        return coreViewFrame.height - placeholder
     }
-
-    private var initialCenterY: CGFloat = .zero
 
     required init(context: UIObject) {
         super.init(context: context)

        moveDown()
    }

    private func adjustSize() {
        view.frame.size = size
    }

    private func adjustInitialPosition() {
        initialCenterY = view.center.y
    }

    private func moveUp() {
        view.setVerticalPoint(to: size.height, duration: ClapprAnimationDuration.mediaControlShow)
    }

    private func moveDown() {
        view.setVerticalPoint(to: hiddenHeight, duration: ClapprAnimationDuration.mediaControlHide)
    }

    private func addTapGesture() {

        super.render()

        adjustSize()
        moveDown(with: .zero)
        adjustInitialPosition()
    }

    private func adjustSize() {
        view.frame.size = size
    }

    private func adjustInitialPosition() {
        initialCenterY = view.center.y
    }

    override func onDrawerShow() {
