         }
         
         fileprivate var closuresWrapper: ClosureWrapper? {
-            get { return objc_getAssociatedObject(self, &_aaak) as? ClosureWrapper }
-            set { objc_setAssociatedObject(self, &_aaak, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) }
+            get { return objc_getAssociatedObject(self, &AssociatedKeys.targetClosure) as? ClosureWrapper }
+            set { objc_setAssociatedObject(self, &AssociatedKeys.targetClosure, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) }
         }
         
     }

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

        
    }
    
    public extension UIButton {
        
        public func setAction(_ action: @escaping ((_ sender: Any) -> Void)) {
