         
         return CFTimeInterval(time)
     }
-    
+
+
+    /// A private method used to calculate the proper animation duration for the
+    /// arc animation.
+    ///
+    /// - parameter fromStroke: The current value of the strokeEnd CAShapeLayer property
+    /// - parameter toStroke: What new new setting of the strokeEnd CAShapeLayer property
+    /// - return: The CFTimeInterval to be used for the animation
     private func arcRotationDuration(fromStroke: CGFloat, toStroke: CGFloat) -> CFTimeInterval {
         let delta = abs(toStroke - fromStroke)
         let time = CGFloat(rotationDuration) * delta
         
         return CFTimeInterval(time)
     }
-    
+
+
+    /// A private method used to calculate the proper media time to start the
+    /// arc animation
+    ///
+    /// - parameter fromStroke: The current value of the strokeEnd CAShapeLayer property
+    /// - parameter toStroke: What new new setting of the strokeEnd CAShapeLayer property
+    /// - parameter fromAngle: The starting angle in radians
+    /// - parameter toAngle: The ending angle in radians.  Can be more then 2*pie in change.
+    /// - return: The upcoming media time to start this animation
     private func arcBeginTime(fromStroke: CGFloat, toStroke: CGFloat, fromAngle: CGFloat, toAngle: CGFloat) -> CFTimeInterval {
         let delta = toStroke - fromStroke
         let time = CGFloat(rotationDuration) * abs(delta)

        
        return ba
    }
    
    private func endCapAnimation(fromAngle: CGFloat, toAngle: CGFloat) -> CABasicAnimation {
        let ba = CABasicAnimation(keyPath: "transform.rotation.z")
        ba.fromValue = fromAngle



extension CustomProgressView {


    /// A private method used to generate the animation for the arc to show
    /// the main progress.  The angle values are used to derive the correct
    /// duration and begin time of the animation.
    ///
    /// - parameter fromStroke: The current value of the strokeEnd CAShapeLayer property
    /// - parameter toStroke: What new new setting of the strokeEnd CAShapeLayer property
    /// - parameter fromAngle: The starting angle in radians
    /// - parameter toAngle: The ending angle in radians.  Can be more then 2*pie in change.
    /// - return: A CABasicAnimation properly setup for the desired changes.
    private func circleAnimation(fromStroke: CGFloat, toStroke: CGFloat, fromAngle: CGFloat, toAngle: CGFloat) -> CABasicAnimation {
        let ba = CABasicAnimation(keyPath: "strokeEnd")
        ba.fromValue = fromStroke
