     
     /// Draws the value label inside of the progress rings
     private func drawValueLabel() {
-        if showFloatingPoint { valueLabel.text = "\(value)\(valueIndicator)" }
-        else { valueLabel.text = "\(Int(value))\(valueIndicator)" }
+        valueLabel.update(withValue: value, valueIndicator: valueIndicator,
+                          showsDecimal: showFloatingPoint, decimalPlaces: decimalPlaces)
+        
         valueLabel.font = UIFont.systemFont(ofSize: fontSize)
         valueLabel.textAlignment = .center
         valueLabel.textColor = textColor

            self.setNeedsDisplay()
        }
    }
    
    public var animationDuration: CFTimeInterval = 1.0
    public var animationStyle: String = kCAMediaTimingFunctionEaseIn
    
    private lazy var shapeLayer = CAShapeLayer()
    
    
    // MARK: Methods

        animation.isRemovedOnCompletion = false
        animation.fillMode = kCAFillModeForwards
        shapeLayer.add(animation, forKey: "animateInnerRing")
        
        valueLabel.text = "\(self.oldValue)"
        link = CADisplayLink(target: self, selector: #selector(self.animateLabel))
        link.add(to: RunLoop.current, forMode: .commonModes)
    }
    
    
    @objc private func animateLabel() {
        let dt = (link.timestamp - self.startTime) / animationDuration
        
        if (dt >= 1.0) {
            valueLabel.update(withValue: value, valueIndicator: valueIndicator,
                              showsDecimal: showFloatingPoint, decimalPlaces: decimalPlaces)
            
            link.remove(from: RunLoop.current, forMode: .commonModes)
            return
        }
        
        let current = (self.value - self.oldValue) * CGFloat(dt) + self.oldValue
        
        valueLabel.update(withValue: current, valueIndicator: valueIndicator,
                          showsDecimal: showFloatingPoint, decimalPlaces: decimalPlaces)
    }
    
    private func update(withValue: CGFloat) {
        
    }
}
