         didSet {
             guard let currentIndex = self.currentIndex else { return }
 
-            #if os(iOS)
-            UIView.animate(withDuration: 0.3) { 
-                self.setNeedsStatusBarAppearanceUpdate()
-            }
-            #endif
-            
-            // ensure position keeps in sync
-            self.currentPosition = CGPoint(x: self.navigationOrientation == .horizontal ? CGFloat(currentIndex) : 0.0,
-                                           y: self.navigationOrientation == .vertical ? CGFloat(currentIndex) : 0.0)
-            let direction = NavigationDirection.forPosition(CGFloat(currentIndex),
-                                                            previous: CGFloat(oldValue ?? currentIndex))
-            self.delegate?.pageboyViewController(self,
-                                                 didScrollToPageAt: currentIndex,
-                                                 direction: direction,
-                                                 animated: self.isScrollingAnimated)
-
+            updateForNewCurrentIndex(currentIndex, from: oldValue)
         }
     }
     /// The relative page position that the page view controller is currently at.

        }
    }
    
    private var isUpdatingViewControllers: Bool = false
    internal func updateViewControllers(to viewControllers: [UIViewController],
                                       direction: UIPageViewControllerNavigationDirection,
                                       animated: Bool,

    }
    
    
    // MARK: Actions
    
    /// Scroll the page view controller to a new page.
    ///
