             
             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

    }
    
    @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
