class wxCocoaNSControl
 {
     WX_DECLARE_OBJC_INTERFACE(NSControl)
-protected:
+public:
+    virtual void CocoaTarget_action() {}
 //    virtual void Cocoa_didChangeText(void) = 0;
+protected:
+    static struct objc_object *sm_cocoaTarget;
 };
 
 #endif // _WX_COCOA_NSCONTROL_H_
 
 
 #include "wx/wxprec.h"
 #ifndef WX_PRECOMP
+    #include "wx/log.h"
 #endif // WX_PRECOMP
 
 #include "wx/cocoa/NSControl.h"
 
-// ----------------------------------------------------------------------------
-// globals
-// ----------------------------------------------------------------------------
+#import <Foundation/NSObject.h>
+
+// ============================================================================
+// @class wxNSControlTarget
+// ============================================================================
+@interface wxNSControlTarget : NSObject
+{
+}
+
+- (void)wxNSControlAction: (id)sender;
+@end //interface wxNSControlTarget
+
+@implementation wxNSControlTarget : NSObject
+
+- (void)wxNSControlAction: (id)sender
+{
+    wxLogDebug("wxNSControlAction");
+    wxCocoaNSControl *wxcontrol = wxCocoaNSControl::GetFromCocoa(sender);
+    wxCHECK_RET(wxcontrol,"wxNSControlAction received but no wxCocoaNSControl exists!");
+    wxcontrol->CocoaTarget_action();
+}
+
+@end //implementation wxNSControlTarget
+
+// ============================================================================
+// wxNSControl
+// ============================================================================
 WX_IMPLEMENT_OBJC_INTERFACE(NSControl)
 
+struct objc_object *wxCocoaNSControl::sm_cocoaTarget = [[wxNSControlTarget alloc] init];
+