             setStrokeTimer(timer)
         }
         
-        nextAnimation(false)
-    }
-}
-
+        strokeTransaction(false)
+    }
+}
+
+// MARK: - Stroke
 public extension SpringIndicator {
     public func strokeRatio(ratio: CGFloat) {
         if ratio <= 0 {

                indicator.stopAnimation(false, completion: completion)
            }
        } else {
            strokeTimer?.invalidate()
            strokeTimer = nil
            
            stopAnimationsHandler = nil
            indicatorView.layer.removeAllAnimations()
            pathLayer?.removeAllAnimations()
            pathLayer = nil
            
            if NSThread.currentThread().isMainThread {

        return animationCount
    }
    
    private func nextRotatePath(count: Double) -> UIBezierPath {
        animationCount = count
        
        let start = CGFloat(M_PI_2 * (0 - count))
