             
             self!.updatePageNumberLabel(withText: newLabelText)
             
+        }
+        
+        delegate?.currentPageIndexesChanged(pagedPublicationView: self, pageIndexes: pageIndexes, added: added, removed: removed)
+        
+        if let outroIndex = outroPageIndex, let outroView = verso.getPageViewIfLoaded(outroIndex) {
+            if added.contains(outroIndex) {
+                delegate?.outroDidAppear(outroView, in: self)
+            } else if removed.contains(outroIndex) {
+                delegate?.outroDidDisappear(outroView, in: self)
+            }
         }
     }
     public func currentPageIndexesFinishedChanging(verso: VersoView, pageIndexes: IndexSet, added: IndexSet, removed: IndexSet) {

        }
    }
    
    fileprivate func layoutPageNumberLabel() {
        
        // layout page number label


public protocol PagedPublicationViewDelegate : class {
    
    func currentPageIndexesChanged(pagedPublicationView:PagedPublicationView, pageIndexes:IndexSet, added:IndexSet, removed:IndexSet)
    func currentPageIndexesFinishedChanging(pagedPublicationView:PagedPublicationView, pageIndexes: IndexSet, previousPageIndexes: IndexSet)
    
    func didTapPage(pagedPublicationView:PagedPublicationView, pageIndex:Int, locationInPage:CGPoint, hotspots:[PagedPublicationHotspotViewModelProtocol])
    func didLongPressPage(pagedPublicationView:PagedPublicationView, pageIndex:Int, locationInPage:CGPoint, hotspots:[PagedPublicationHotspotViewModelProtocol])
    
    func outroDidAppear(_ outroView:OutroView, in pagedPublicationView:PagedPublicationView)
    func outroDidDisappear(_ outroView:OutroView, in pagedPublicationView:PagedPublicationView)
}

// default no-op
public extension PagedPublicationViewDelegate {
    func currentPageIndexesChanged(pagedPublicationView:PagedPublicationView, pageIndexes:IndexSet, added:IndexSet, removed:IndexSet) {}
    func currentPageIndexesFinishedChanging(pagedPublicationView:PagedPublicationView, pageIndexes: IndexSet, previousPageIndexes: IndexSet) {}
    func didTapPage(pagedPublicationView:PagedPublicationView, pageIndex:Int, locationInPage:CGPoint, hotspots:[PagedPublicationHotspotViewModelProtocol]) {}
    func didLongPressPage(pagedPublicationView:PagedPublicationView, pageIndex:Int, locationInPage:CGPoint, hotspots:[PagedPublicationHotspotViewModelProtocol]) {}
    
    func outroDidAppear(_ outroView:OutroView, in pagedPublicationView:PagedPublicationView) {}
    func outroDidDisappear(_ outroView:OutroView, in pagedPublicationView:PagedPublicationView) {}
}

public protocol PagedPublicationViewDataSource : PagedPublicationViewDataSourceOptional {
