     ///
     /// The default value is 0.
     @IBInspectable
-    public var currentPage: Int {
+    open var currentPage: Int {
         get {
             return Int(_currentPage)
         }

    ///
    /// The default is `false`.
    @IBInspectable
    public var defersCurrentPageDisplay: Bool = false
    
    /// Updates the current page indicator to the current page.
    /// 
    public func updateCurrentPageDisplay() {
        updateCurrentPageDisplayWithAnimation()
    }

    /// Use to size the control to fit a certain number of pages.
    /// - Parameter pageCount: A number of pages to calculate size from.
    /// - Returns: Minimum size required to display all page indicators.
    public func size(forNumberOfPages pageCount: Int) -> CGSize {
        let width = pageIndicatorSize * CGFloat(pageCount) + pageIndicatorSpacing * CGFloat(max(0, pageCount - 1))
        return CGSize(width: max(7, width), height: defaultControlHeight)
    }

    ///
    /// - Parameter currentPage: The current page indicator is filled if the value is .0, and about half filled if ±.25.
    /// - Parameter animated: `true` to animate the transition to the new page, `false` to make the transition immediate.
    open func setCurrentPage(_ currentPage: CGFloat, animated: Bool = false) {
        let newPage = max(0, min(currentPage, CGFloat(numberOfPages - 1)))
        _currentPage = newPage
        updateCurrentPageDisplayWithAnimation(animated)
