         drawerScrollView.isScrollEnabled = allowsUserDrawerPositionChange && supportedPositions.count > 1
     }
 
-    func getStopList() -> [CGFloat] {
-
+    private var lowestStop: CGFloat {
+        return stopList.min() ?? 0
+    }
+
+    private var highestStop: CGFloat {
+        return stopList.max() ?? 0
+    }
+
+    private var stopList: [CGFloat] {
         var drawerStops = [CGFloat]()
 
         if supportedPositions.contains(.collapsed) {

        }

        let partialRevealHeight: CGFloat = (drawerContentViewController as? PulleyDrawerViewControllerDelegate)?.partialRevealDrawerHeight?(bottomSafeArea: pulleySafeAreaInsets.bottom) ?? defaultPartialRevealHeight

        let lowestStop = getStopList().min() ?? 0

        if (scrollView.contentOffset.y - pulleySafeAreaInsets.bottom) > partialRevealHeight - lowestStop && supportedPositions.contains(.open) {
            // Calculate percentage between partial and full reveal

            let distance = currentDrawerPositionStop - distanceFromBottomOfView
            var positionToSnapTo: PulleyPosition = drawerPosition

            // swiftlint:disable for_where
            if abs(distance) > threshold {
                if distance < 0 {
                    let orderedSupportedDrawerPositions = supportedPositions.sorted(by: { $0.rawValue < $1.rawValue }).filter({ $0 != .closed })
