+    #define WXCOCOAIMPL_COMMON_MEMBERS wxWidgetCocoaImpl* impl;
+    
+    #define WXCOCOAIMPL_COMMON_INTERFACE \
+        - (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;\
+        - (wxWidgetCocoaImpl*) implementation;\
+        - (BOOL) isFlipped;\
+        WXCOCOAIMPL_COMMON_MOUSE_INTERFACE
+
+    #define WXCOCOAIMPL_COMMON_IMPLEMENTATION WXCOCOAIMPL_COMMON_MOUSE_IMPLEMENTATION \
+        - (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation\
+        {\
+            impl = theImplementation;\
+        }\
+        - (wxWidgetCocoaImpl*) implementation\
+        {\
+            return impl;\
+        }\
+        - (BOOL) isFlipped\
+        {\
+            return YES;\
+        }\
+
+    // used for many wxControls
+    
+    @interface wxNSButton : NSButton
+    {
+        WXCOCOAIMPL_COMMON_MEMBERS
+    }
+
+    WXCOCOAIMPL_COMMON_INTERFACE
+    - (void) clickedAction: (id) sender;
+
+    @end
+
+    @interface wxNSBox : NSBox
+    {
+        WXCOCOAIMPL_COMMON_MEMBERS
+    }
+
+    WXCOCOAIMPL_COMMON_INTERFACE
+
+    @end
+
+    @interface wxNSTextField : NSTextField
+    {
+       WXCOCOAIMPL_COMMON_MEMBERS
+    }
+
+    WXCOCOAIMPL_COMMON_INTERFACE
+    
+    @end
+
+