         self.action = action
     }
 }
-
-private struct AssociatedKeys {
-    static var ActionName = "action"
-}
-
-@objc public protocol ActionSelectable {
-    func handleAction()
-}
-
-extension UIControl: ActionSelectable, Actionable {
-    public func handleAction() {
-        assert(self.action != nil, "Action caught but action closure missing for control: \(self.dynamicType)")
-        guard let action = self.action else { return }
-        action.action()
-    }
-}

        action = Action(action: actionClosure)
        addTarget(self, action: #selector(handleAction), forControlEvents: controlEvents)
    }
}

public class Action {

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