     private var animationCount: Double = 0
     private var pathLayer: CAShapeLayer? {
         willSet {
+            self.pathLayer?.removeAllAnimations()
             self.pathLayer?.removeFromSuperlayer()
         }
     }


public extension SpringIndicator.Refresher {
    public func startRefreshing(sendActions: Bool = false) {
        initialInsetTop = initialInsetTop + DefaultContentHeight
        
        if let scrollView = superview as? UIScrollView {
            addObserver(scrollView)
        }
        
        if sendActions {
            sendActionsForControlEvents(.ValueChanged)
        }
        
        indicator.layer.addAnimation(refreshAnimation(), forKey: ScaleAnimationKey)
        indicator.startAnimation(expand: true)
    }
    
    public func endRefreshing() {
        if let scrollView = superview as? UIScrollView {
            var insetTop = refreshingInsetTop
            refreshing = false
            
            if scrollView.contentInset.top != insetTop {
                insetTop = refreshingInsetTop - initialInsetTop
            } else {
                insetTop = refreshingInsetTop
            }
            
            UIView.performSystemAnimation(.Delete, onViews: [], options: nil, animations: {
                scrollView.contentInset.top = insetTop
                }, completion: nil)
        }
        
        indicator.stopAnimation(true)

        stopAnimationsHandler?(self)
        
        if starting == false {
            pathLayer = nil
            return
        }
        
