      
      - returns: An initialized UIControl.
      */
-    init(actionClosure: (Self) -> Void) {
+    public init(actionClosure: (Self) -> Void) {
         self.init()
         action = Action(action: actionClosure)
         addTarget(self, action: #selector(handleAction), forControlEvents: .TouchUpInside)

     - parameter controlEvents: The UIControlEvents upon which to execute this action.
     - parameter action:        The action closure to execute.
     */
    func addTarget(controlEvents controlEvents: UIControlEvents, actionClosure: (Self) -> Void) {
        action = Action(action: actionClosure)
        addTarget(self, action: #selector(handleAction), forControlEvents: controlEvents)
    }

    
}

public extension Actionable where Self : UIControl {
    
    private var action: Action<Self>? {
        set { objc_setAssociatedObject(self, &AssociatedKeys.ActionName, newValue, .OBJC_ASSOCIATION_RETAIN) }
