         }
     }
     
+    /// This will only return the outro view only after it has been configured.
+    /// It is configured once the user has scrolled within a certain distance of the outro page (currently 10 pages).
+    var outroView:OutroView? {
+        guard let outroIndex = outroPageIndex else {
+            return nil
+        }
+        return verso.getPageViewIfLoaded(outroIndex)
+    }
+    
+    
     fileprivate func layoutPageNumberLabel() {
         
         // layout page number label


public protocol PagedPublicationViewDelegate : class {
    
    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])
}

// default no-op
public extension PagedPublicationViewDelegate {
    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]) {}
}

public protocol PagedPublicationViewDataSource : PagedPublicationViewDataSourceOptional {

    }
    
    @objc
    fileprivate func dimPageNumberLabel() {
        UIView.animate(withDuration: 1.0, delay: 0, options: [.beginFromCurrentState], animations: { 
            self.pageNumberLabel.alpha = 0.2
            }, completion: nil)
    }
    
    fileprivate func showPageNumberLabel() {
        NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(PagedPublicationView.dimPageNumberLabel), object: nil)
        
        UIView.animate(withDuration: 0.5, delay: 0, options: [.beginFromCurrentState], animations: {
            self.pageNumberLabel.alpha = 1.0
            }, completion: nil)
        
        self.perform(#selector(PagedPublicationView.dimPageNumberLabel), with: nil, afterDelay: 1.0)
    }
    
    fileprivate func updatePageNumberLabel(withText text:String?) {
        if text == nil {
            NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(PagedPublicationView.dimPageNumberLabel), object: nil)

            UIView.animate(withDuration: 0.2, delay: 0, options: [.beginFromCurrentState], animations: {
                self.pageNumberLabel.alpha = 0
            }) { (finished) in
