             self?.pageViewsByPageIndex = [:]
             
             self?.currentSpreadIndex = nil
-            self?.currentSpreadPageIndexes = NSIndexSet()
-            self?.visibleSpreadIndex = nil
-            self?.visibleSpreadPageIndexes = NSIndexSet()
+            self?.currentPageIndexes = NSIndexSet()
+            self?.centeredSpreadIndex = nil
+            self?.visiblePageIndexes = NSIndexSet()
             
             self?.spreadConfiguration = nil
             

            }
            
            // calculate the spreadIndex that was centered when  we started this drag
            dragStartSpreadIndex = visibleSpreadIndex ?? 0
            dragStartVisibleRect = scrollView.bounds
            _didStartScrolling()
        }

    
    /**
        Do the calculations to figure out which spread we are currently looking at.
        This will also update the centeredSpreadPageIndexes
        This is called while the user scrolls
     */
    private func _updateCenteredSpreadIndex() {
        guard let config = spreadConfiguration else {
            return
        }
        

        var newCenteredSpreadIndex:Int?
        
        // to avoid skipping frames with rounding errors, expand by a few pxs
        let visibleRect = pageScrollView.bounds.insetBy(dx: -2, dy: -2)
        
        if spreadFrames.count == 0 {
            newCenteredSpreadIndex = nil
        }
        else if visibleRect.contains(spreadFrames.first!) {
            // first page is visible - assume first
            newCenteredSpreadIndex = 0
        }
        else if visibleRect.contains(spreadFrames.last!) {
            // last page is visible - assume last
            newCenteredSpreadIndex = spreadFrames.count-1
        }
        else {
            let visibleMid = CGPoint(x:visibleRect.midX, y:visibleRect.midY)
