     
     // MARK: - shadow view
     
-    private func makeBackgroundView() {
+    private func makeBackgroundViewIfNeeded() {
         deleteBackgroundView()
         switch background {
         case .shadow(let color, let alpha):

            deleteBackgroundView()
            _ = dismissAction?() ?? dismiss()
        } else if originY != 0.0 {
            if targetViewController?.view.frame.minY != 0.0 {
                UIView.perform(.delete, on: [], options: [], animations: { [weak self] in
                    self?.targetViewController?.view.frame.origin.y = 0.0
                    self?.resetBackgroundView()
                }) { [weak self] _ in
                    self?.deleteBackgroundView()
                }
            }
        }
        viewPositionY = 0.0
    }

    
    fileprivate func startDragging() {
        viewPositionY = 0.0
        makeBackgroundViewIfNeeded()
        targetViewController?.view.layer.removeAllAnimations()
        shadowView?.layer.removeAllAnimations()
        blurView?.layer.removeAllAnimations()
    }
    
    fileprivate func updateViewPosition(offset: CGFloat) {
