 
 // MARK: - Animation
 public extension SpringIndicator {
+    public func startAnimation() {
+        startAnimation(process: .begin)
+    }
+
     /// If start from a state in spread is True.
-    public func startAnimation(_ expand: Bool = false) {
+    fileprivate func startAnimation(process: AnimationProcess) {
         if isSpinning() {
             return
         }
         
-        let animation = rotateAnimation(rotateDuration, expand: expand)
+        let animation = rotateAnimation(rotateDuration, process: process)
         indicatorView.layer.add(animation, forKey: Me.RotateAnimationKey)
-        
-        strokeTransaction(expand)
+
+        strokeTransaction(process)
     }
     
     /// true is wait for stroke animation.

    private func strokeValue(_ value: CGFloat) {
        if pathLayer == nil {
            let shapeLayer = rotateLayer()
            shapeLayer.path = nextRotatePath(false).cgPath
            pathLayer = shapeLayer
            indicatorView.layer.addSublayer(shapeLayer)
        }

    func refreshStart(_ scrollView: UIScrollView) {
        sendActions(for: .valueChanged)
        indicator.layer.add(refreshStartAnimation(), forKey: Me.ScaleAnimationKey)
        indicator.startAnimation(process: .during)
        
        let insetTop = initialInsetTop + bounds.height
        
