         scrollView.removeObserver(self, forKeyPath: contentSizeKeyPath, context: &KVOContext)
         scrollView.removeObserver(self, forKeyPath: contentInsetKeyPath, context: &KVOContext)
       
+        isObserving = false
     }
 }
 

    }
    
    private func addScrollViewObserving() {
        guard let scrollView = scrollView where !observes else {
            return
        }
        
        scrollView.addObserver(self, forKeyPath: contentOffsetKeyPath, options: .Initial, context: &KVOContext)
        scrollView.addObserver(self, forKeyPath: contentSizeKeyPath, options: .Initial, context: &KVOContext)
        scrollView.addObserver(self, forKeyPath: contentInsetKeyPath, options: .Initial, context: &KVOContext)
    }
    
    private func removeScrollViewObserving() {
        guard let scrollView = scrollView where observes else {
            return
        }
        

    let refreshView: UIView
    var action: (() -> ())?
    
    private var isObserving = false
    
    private let animator: RefreshViewAnimator
    
