             scrollViewInsets = (superView as UIScrollView).contentInset
         }
     }
+    
+    deinit {
+        var scrollView = superview as? UIScrollView
+        scrollView?.removeObserver(self, forKeyPath: contentOffsetKeyPath, context: &kvoContext)
+    }
+    
+    // MARK: KVO
     
     public override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<()>) {
         

        }
    }
    

    private func startAnimating() {
        self.indicator.startAnimating()
        self.arrow.hidden = true

        self.indicator.center = self.arrow.center
    }
    
    public override func willMoveToSuperview(superView: UIView!) {
        superview?.removeObserver(self, forKeyPath: contentOffsetKeyPath, context: &kvoContext)
        if (superView != nil && superView is UIScrollView) {
