     
 }
 
-public extension UIRefreshControl {
-    
-    public convenience init(color: UIColor? = nil, action: ((sender: AnyObject) -> Void)?) {
-        self.init()
-        setAction(action)
-        if let color = color {
-            tintColor = color
-        }
-    }
-    
-    public func setAction(action: ((sender: AnyObject) -> Void)?) {
-        if let action = action {
-            self.removeTarget(self, action: nil, forControlEvents: .ValueChanged)
-            self.addTarget(self, action: #selector(UIButton.performAction), forControlEvents: .ValueChanged)
-            self.closuresWrapper = ClosureWrapper(action: action)
-        } else {
-            self.removeTarget(self, action: nil, forControlEvents: .ValueChanged)
-            self.closuresWrapper = nil
-        }
-    }
-    
-    public func performAction() {
-        self.closuresWrapper?.action(sender: self)
-    }
-    
-    private var closuresWrapper: ClosureWrapper? {
-        get { return objc_getAssociatedObject(self, &_aaak) as? ClosureWrapper }
-        set { objc_setAssociatedObject(self, &_aaak, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) }
-    }
-    
-}
-
 private final class ClosureWrapper {
     private var action: (sender: AnyObject) -> Void
     init(action: (sender: AnyObject) -> Void) {

    private var closuresWrapper: ClosureWrapper? {
        get { return objc_getAssociatedObject(self, &_aaak) as? ClosureWrapper }
        set { objc_setAssociatedObject(self, &_aaak, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) }
    }
    
}

    
}

public extension UIControl {
    
    public func setAction(controlEvents controlEvents: UIControlEvents, action: ((sender: AnyObject) -> Void)?) {
        if let action = action {
            self.removeTarget(self, action: nil, forControlEvents: controlEvents)
            self.addTarget(self, action: #selector(UIButton.performAction), forControlEvents: controlEvents)
            self.closuresWrapper = ClosureWrapper(action: action)
        } else {
            self.removeTarget(self, action: nil, forControlEvents: controlEvents)
            self.closuresWrapper = nil
        }
    }
