 public protocol VersoViewDataSource : VersoViewDataSourceOptional {
     
     /// The SpreadConfiguration that defines the page count, and layout of the pages, within this verso.
-    func spreadConfiguration(verso:VersoView, size:CGSize) -> VersoSpreadConfiguration
+    func spreadConfiguration(with size:CGSize, for verso:VersoView) -> VersoSpreadConfiguration
     
     /// Gives the dataSource a chance to configure the pageView. 
     /// This must not take a long time, as it is called during scrolling.
     /// The pageView's `pageIndex` property will have been set, but its size will not be correct
-    func configurePage(verso:VersoView, pageView:VersoPageView)
+    func configure(pageView:VersoPageView, for verso:VersoView)
     
     
     /// What subclass of VersoPageView should be used.
-    func pageViewClass(verso:VersoView, pageIndex:Int) -> VersoPageViewClass
+    func pageViewClass(on pageIndex:Int, for verso:VersoView) -> VersoPageViewClass
     
 }
 
 public protocol VersoViewDataSourceOptional : class {
     /// How many pages before the currently visible pageIndexes to preload. 
     /// Ignored if `preloadPageIndexesForVerso` does not return nil.
-    func previousPageCountToPreload(verso:VersoView, visiblePageIndexes:IndexSet) -> Int
+    func pageCountToPreload(before visiblePageIndexes:IndexSet, for verso:VersoView) -> Int
     
     /// How many pages after the currently visible pageIndexes to preload.
     /// Ignored if `preloadPageIndexesForVerso` does not return nil.
-    func nextPageCountToPreload(verso:VersoView, visiblePageIndexes:IndexSet) -> Int
+    func pageCountToPreload(after visiblePageIndexes:IndexSet, for verso:VersoView) -> Int
     
     /// Gives you a chance to modify the page indexes to preload around the visible page indexes.
     /// This is for more advanced customization of the preloading indexes.
     /// The `preloadPageIndexes` property is based on the prev/nextPageCount dataSource results.
     /// If nil (default), set that is passed as `preloadPageIndexes` will be used unmodified
-    func adjustPreloadPageIndexes(verso:VersoView, visiblePageIndexes:IndexSet, preloadPageIndexes:IndexSet) -> IndexSet?
+    func adjustPreloadPageIndexes(_ preloadPageIndexes:IndexSet, visiblePageIndexes:IndexSet, for verso:VersoView) -> IndexSet?
     
     /// What color should the background fade to when zooming.
-    func zoomBackgroundColor(verso:VersoView, zoomingPageIndexes:IndexSet) -> UIColor
+    func zoomBackgroundColor(whenZooming pageIndexes:IndexSet, for verso:VersoView) -> UIColor
     
     /// Return a view to overlay over the currently visible pages. 
     /// This is called every time the layout changes, or the user finishes scrolling.
-    func spreadOverlayView(verso:VersoView, overlaySize:CGSize, pageFrames:[Int:CGRect]) -> UIView?
+    func spreadOverlayView(overlaySize:CGSize, pageFrames:[Int:CGRect], for verso:VersoView) -> UIView?
 }
 
 /// Default Values for Optional DataSource
 public extension VersoViewDataSourceOptional {
     
-    func previousPageCountToPreload(verso:VersoView, visiblePageIndexes:IndexSet) -> Int {
+    func pageCountToPreload(before visiblePageIndexes:IndexSet, for verso:VersoView) -> Int {
         return 2
     }
-    func nextPageCountToPreload(verso:VersoView, visiblePageIndexes:IndexSet) -> Int {
+    func pageCountToPreload(after visiblePageIndexes:IndexSet, for verso:VersoView) -> Int {
         return 6
     }
-    func adjustPreloadPageIndexes(verso:VersoView, visiblePageIndexes:IndexSet, preloadPageIndexes:IndexSet) -> IndexSet? {
+    func adjustPreloadPageIndexes(_ preloadPageIndexes:IndexSet, visiblePageIndexes:IndexSet, for verso:VersoView) -> IndexSet? {
         return nil
     }
-    func zoomBackgroundColor(verso:VersoView, zoomingPageIndexes:IndexSet) -> UIColor {
+    func zoomBackgroundColor(whenZooming pageIndexes:IndexSet, for verso:VersoView) -> UIColor {
         return UIColor(white: 0, alpha: 0.7)
     }
-    func spreadOverlayView(verso:VersoView, overlaySize:CGSize, pageFrames:[Int:CGRect]) -> UIView? {
+    func spreadOverlayView(overlaySize:CGSize, pageFrames:[Int:CGRect], for verso:VersoView) -> UIView? {
         return nil
     }
 }

            }
        }

        let newSpreadOverlayView = spreadPageFrames.count > 0 ? dataSourceOptional.spreadOverlayView(verso:self, overlaySize:zoomViewContents.bounds.size, pageFrames:spreadPageFrames) : nil
        
        if newSpreadOverlayView != spreadOverlayView {
            spreadOverlayView?.removeFromSuperview()

                s.delegate?.didStartZooming(pages:pageIndexes, zoomScale: zoomScale, in:s)
            }
            
            zoomTargetBackgroundColor = dataSourceOptional.zoomBackgroundColor(whenZooming:zoomingPageIndexes, for:self)
        }
    }
    
