     }
     
     public func setValue(_ newVal: CGFloat, animated: Bool) {
+        self.value = newVal
         if animated {
-            
-        }
-        
-        self.value = newVal
+            animateInnerRing()
+        }
+        
+    }
+    
+    func animateInnerRing() {
+        let animation = CABasicAnimation(keyPath: "strokeEnd")
+        animation.duration = animationDuration
+        animation.fromValue = 0.0
+        animation.timingFunction = CAMediaTimingFunction(name: animationStyle)
+        animation.toValue = 1.0
+        animation.isRemovedOnCompletion = false
+        animation.fillMode = kCAFillModeForwards
+        shapeLayer.add(animation, forKey: "animateInnerRing")
     }
 }

                                     endAngle: innerEndAngle,
                                     clockwise: true)
        
        innerPath.lineWidth = innerRingWidth
        innerRingColor.setStroke()
        innerPath.lineCapStyle = inStyle
        innerPath.stroke()
    }
    
    /// Draws the value label inside of the progress rings

            self.setNeedsDisplay()
        }
    }
    @IBInspectable public var showFloatingPoint: Bool = false {
        didSet {
            self.setNeedsDisplay()
        }
    }
    
    public var animationDuration: CFTimeInterval = 1.0
    public var animationStyle: String = kCAMediaTimingFunctionEaseIn
    
    private lazy var shapeLayer = CAShapeLayer()
    
    
    // MARK: Methods
