 
 /// A view controller that lets the user navigate between pages of content, where each page is managed by its own view controller object.
 public class PagingContentViewController: UIViewController {
-    fileprivate struct PagingState {
-        let beginIndex: Int
-        let endIndex: Int
+    fileprivate class ExplicitPaging {
+        private var oneTimeHandler: (() -> Void)?
+        private(set) var isPaging: Bool
+        
+        init(oneTimeHandler: (() -> Void)?) {
+            self.oneTimeHandler = oneTimeHandler
+            isPaging = false
+        }
+        
+        func start() {
+            isPaging = true
+        }
+        
+        func fireOnetimeHandlerIfNeeded() {
+            oneTimeHandler?()
+            oneTimeHandler = nil
+        }
+        
+        func stop() {
+            isPaging = false
+        }
     }
     
     fileprivate var cachedViewControllers = [UIViewController?]()
     fileprivate var leftSidePageIndex = 0
     fileprivate var numberOfPages: Int = 0
-    fileprivate var isExplicityScrolling = false
+    fileprivate var explicitPaging: ExplicitPaging?
 
     /// The object that acts as the delegate of the content view controller.
     public weak var delegate: PagingContentViewControllerDelegate?

        return scrollView
    }()
    
    override public func viewDidLoad() {
        super.viewDidLoad()
        

            cachedViewControllers[page] = vc
        }
    }
    
    fileprivate func loadPagesIfNeeded(page: Int? = nil) {
        let loadingPage = page ?? leftSidePageIndex
