 }
 
 //MARK: - EFCountingLabel
-open class EFCountingLabel: UILabel {
-
-    open var format = "%f"
-    open var method = EFLabelCountingMethod.linear
-    open var animationDuration = TimeInterval(2)
-    open var formatBlock: ((CGFloat) -> String)?
-    open var attributedFormatBlock: ((CGFloat) -> NSAttributedString)?
-    open var completionBlock: (() -> Void)?
+public class EFCountingLabel: UILabel {
+
+    public var format = "%f"
+    public var method = EFLabelCountingMethod.linear
+    public var animationDuration = TimeInterval(2)
+    public var formatBlock: ((CGFloat) -> String)?
+    public var attributedFormatBlock: ((CGFloat) -> NSAttributedString)?
+    public var completionBlock: (() -> Void)?
 
     fileprivate var startingValue: CGFloat!
     fileprivate var destinationValue: CGFloat!

        return self.startingValue + updateVal * (self.destinationValue - self.startingValue)
    }

    open func updateValue(_ timer: Timer) {
        // update progress
        let now = Date.timeIntervalSinceReferenceDate
        self.progress = self.progress + now - self.lastUpdate

        self.timer = timer
    }

    public func countFromCurrentValueTo(_ endValue: CGFloat) {
        self.countFrom(self.currentValue(), to: endValue)
    }

    public func countFromCurrentValueTo(_ endValue: CGFloat, withDuration duration: TimeInterval) {
        self.countFrom(self.currentValue(), to: endValue, withDuration: duration)
    }

    public func countFromZeroTo(_ endValue: CGFloat) {
        self.countFrom(0, to: endValue)
    }

    public func countFromZeroTo(_ endValue: CGFloat, withDuration duration: TimeInterval) {
        self.countFrom(0, to: endValue, withDuration: duration)
    }

    public func currentValue() -> CGFloat {
        if self.progress >= self.totalTime {
            return self.destinationValue
        }
