     case clicking
     case dragging
     case moving(window: SIWindow)
-    case resizing(screen: NSScreen, layout: Layout & PanedLayout, ratio: CGFloat)
+    case resizing(screen: NSScreen, ratio: CGFloat)
     case doneDragging(atTime: NSDate)
 }
 

                    case let .moving(draggedWindow):
                        self.state = .pointing // flip state first to prevent race condition
                        self.swapDraggedWindowWithDropzone(draggedWindow)
                    case let .resizing(screen, layout, ratio):
                        self.state = .pointing
                        layout.setMainPaneRatio(ratio)
                        self._windowManager.markScreenForReflow(screen, withChange: .unknown)
                    case .doneDragging:
                        self.state = .doneDragging(atTime: NSDate()) // reset the clock I guess
                    case .pointing, .clicking:

                switch self.mouse.state {
                case .dragging, .resizing:
                    // record window and wait for mouse up
                    self.mouse.state = .resizing(screen: screen, ratio: ratio)
                case let .doneDragging(lmbUpMoment):
                    // if mouse button recently came up, assume window resize is related
                    let dragEndInterval = NSDate().timeIntervalSince(lmbUpMoment as Date)
                    if dragEndInterval < mouseDragRaceThresholdSeconds {
                        self.mouse.state = .pointing // flip state first to prevent race condition
                        windowManager.focusedScreenManager()?.updateCurrentLayout { layout in
                            if let panedLayout = layout as? PanedLayout {
                                panedLayout.setMainPaneRatio(ratio)
                            }
                        }
                    }
                default:
                    break
