 public extension UIBarButtonItem {
     
     public convenience init(barButtonSystemItem systemItem: UIBarButtonSystemItem, action: ((sender: AnyObject) -> Void)?) {
-        self.init(barButtonSystemItem: systemItem, target: nil, action: #selector(UIButton.performAction))
+        self.init(barButtonSystemItem: systemItem, target: nil, action: #selector(UIBarButtonItem.performAction))
         if let action = action {
             self.closuresWrapper = ClosureWrapper(action: action)
             self.target = self

    
}

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)

    }
    
    public convenience init(title: String?, style: UIBarButtonItemStyle, action: ((sender: AnyObject) -> Void)?) {
        self.init(title: title, style: style, target: nil, action: #selector(UIBarButtonItem.performAction))
        if let action = action {
            self.closuresWrapper = ClosureWrapper(action: action)
            self.target = self
