     /// and defaultPageIndex(forPageboyViewController:).
     public func reloadPages() {
         self.reloadPages(reloadViewControllers: true)
+    }
+    
+    /// Reload the pages in the PageboyViewController
+    ///
+    /// - Parameter reloadViewControllers: Reload the view controller data source.
+    internal func reloadPages(reloadViewControllers: Bool) {
+        
+        if reloadViewControllers {
+            viewControllerMap.clear()
+        }
+        
+        let viewControllerCount = dataSource?.numberOfViewControllers(in: self) ?? 0
+        self.viewControllerCount = viewControllerCount
+        
+        let defaultPage = self.dataSource?.defaultPage(for: self) ?? .first
+        let defaultIndex = defaultPage.indexValue(in: self)
+        
+        guard defaultIndex < viewControllerCount,
+            let viewController = viewController(at: defaultIndex) else {
+                return
+        }
+        
+        updateViewControllers(to: [viewController], animated: false, async: false) { _ in
+            self.currentIndex = defaultIndex
+            self.delegate?.pageboyViewController(self,
+                                                 didReloadWith: viewController,
+                                                 currentPageIndex: defaultIndex)
+        }
     }
     
     /// Reload the currently active page into the page view controller if possible.

    }
}

// MARK: - Paging Set Up and Configuration
internal extension PageboyViewController {
    
    // MARK: Set Up

        self.reloadPages(reloadViewControllers: reloadViewControllers)
    }
    
    /// Re-initialize the internal UIPageViewController instance without reloading data source if it currently exists.
    internal func reconfigurePageViewController() {
        guard self.pageViewController != nil else {
