diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m
index e67725f..868d874 100644
--- a/gfx/drivers_context/cocoa_gl_ctx.m
+++ b/gfx/drivers_context/cocoa_gl_ctx.m
@@ -83,6 +83,7 @@ static NSOpenGLPixelFormat* g_format;
 
 static unsigned g_minor = 0;
 static unsigned g_major = 0;
+static bool g_is_inited = false;
 
 /* forward declaration */
 void *nsview_get_ptr(void);
@@ -152,6 +153,9 @@ static bool cocoagl_gfx_ctx_init(void *data)
 {
    (void)data;
     
+    if (g_is_inited)
+        return true;
+    
 #if defined(HAVE_COCOA)
     CocoaView *g_view = (CocoaView*)nsview_get_ptr();
 #if MAC_OS_X_VERSION_10_7
@@ -196,6 +200,11 @@ static bool cocoagl_gfx_ctx_init(void *data)
     [g_context makeCurrentContext];
    // Make sure the view was created
    [CocoaView get];
+#if defined(HAVE_COCOA)
+    [NSApp setDelegate:g_view];
+#endif
+    
+    g_is_inited = true;
    return true;
 }
 
@@ -221,6 +230,8 @@ static void cocoagl_gfx_ctx_destroy(void *data)
 #endif
    [GLContextClass clearCurrentContext];
    g_context = nil;
+    
+    g_is_inited = false;
 }
 
 static bool cocoagl_gfx_ctx_bind_api(void *data, enum gfx_ctx_api api, unsigned major, unsigned minor)
diff --git a/pkg/apple/OSX/Info.plist b/pkg/apple/OSX/Info.plist
index 8d59658..af95482 100644
--- a/pkg/apple/OSX/Info.plist
+++ b/pkg/apple/OSX/Info.plist
@@ -41,8 +41,6 @@
 	<true/>
 	<key>NSHumanReadableCopyright</key>
 	<string>Copyright © 2015 RetroArch. All rights reserved.</string>
-	<key>NSMainNibFile</key>
-	<string>MainMenu</string>
 	<key>NSPrincipalClass</key>
 	<string>RApplication</string>
 </dict>
diff --git a/pkg/apple/RetroArch.xcodeproj/project.pbxproj b/pkg/apple/RetroArch.xcodeproj/project.pbxproj
index a7c1b57..e48f0bf 100644
--- a/pkg/apple/RetroArch.xcodeproj/project.pbxproj
+++ b/pkg/apple/RetroArch.xcodeproj/project.pbxproj
@@ -7,9 +7,7 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
 		500845251B89300700CE6073 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
-		500845261B89300700CE6073 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
 		500845271B89300700CE6073 /* retroarch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 84DD5EB71A89F1C7007336C1 /* retroarch.icns */; };
 		500845291B89300700CE6073 /* griffin_objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */; };
 		5008452A1B89300700CE6073 /* griffin.c in Sources */ = {isa = PBXBuildFile; fileRef = 840222FB1A889EE2009AB261 /* griffin.c */; };
@@ -75,7 +73,6 @@
 
 /* Begin PBXFileReference section */
 		089C165DFE840E0CC02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = OSX/en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		1DDD58150DA1D0A300B32029 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = OSX/en.lproj/MainMenu.xib; sourceTree = "<group>"; };
 		29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
 		5008453A1B89300700CE6073 /* RetroArch copy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RetroArch copy.app"; sourceTree = BUILT_PRODUCTS_DIR; };
 		5008453B1B89300700CE6073 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "/../../pkg/apple/OSX/Info.plist"; sourceTree = SOURCE_ROOT; };
@@ -196,7 +193,6 @@
 				84DD5EB71A89F1C7007336C1 /* retroarch.icns */,
 				8D1107310486CEB800E47090 /* Info.plist */,
 				089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
-				1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
 			);
 			name = Resources;
 			sourceTree = "<group>";
@@ -301,7 +297,6 @@
 			buildActionMask = 2147483647;
 			files = (
 				500845251B89300700CE6073 /* InfoPlist.strings in Resources */,
-				500845261B89300700CE6073 /* MainMenu.xib in Resources */,
 				500845271B89300700CE6073 /* retroarch.icns in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -311,7 +306,6 @@
 			buildActionMask = 2147483647;
 			files = (
 				8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
-				1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
 				84DD5EB81A89F1C7007336C1 /* retroarch.icns in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -348,14 +342,6 @@
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
 		};
-		1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
-			isa = PBXVariantGroup;
-			children = (
-				1DDD58150DA1D0A300B32029 /* MainMenu.xib */,
-			);
-			name = MainMenu.xib;
-			sourceTree = "<group>";
-		};
 /* End PBXVariantGroup section */
 
 /* Begin XCBuildConfiguration section */
diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m
index 5dde6f9..37cd066 100644
--- a/ui/drivers/ui_cocoa.m
+++ b/ui/drivers/ui_cocoa.m
@@ -421,10 +421,50 @@ extern void action_ok_push_quick_menu(void);
 
 @end
 
+static void setup_appkit(void)
+{
+   [NSAutoreleasePool new];
+   [NSApplication sharedApplication];
+    
+   /* Might be Snow Leopard (10.6) only and up */
+   [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
+    
+   id menubar = [[NSMenu new] autorelease];
+   id appMenuItem = [[NSMenuItem new] autorelease];
+
+   [menubar addItem:appMenuItem];
+   [NSApp setMainMenu:menubar];
+    
+    /* Add 'Quit' to menu */
+    id appMenu = [[NSMenu new] autorelease];
+    id appName = [[NSProcessInfo processInfo] processName];
+    id quitTitle = BOXSTRING("Quit");
+    id quitMenuItem = [[[NSMenuItem alloc] initWithTitle:quitTitle
+    action:@selector(terminate:) keyEquivalent:BOXSTRING("q")] autorelease];
+    [appMenu addItem:quitMenuItem];
+    [appMenuItem setSubmenu:appMenu];
+    
+    /* Create a window and activate the application */
+    id window = [[[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO] autorelease];
+    [window cascadeTopLeftFromPoint:NSMakePoint(20,20)];
+    [window setTitle:appName];
+    [window makeKeyAndOrderFront:nil];
+    
+    cocoagl_gfx_ctx_init(NULL);
+    [window setContentView:(CocoaView*)nsview_get_ptr()];
+    
+    /* Start the application */
+    [NSApp activateIgnoringOtherApps:YES]; /* Brings application to front on startup */
+    [NSApp run];
+}
+
 int main(int argc, char *argv[])
 {
    waiting_argc = argc;
    waiting_argv = argv;
+    
+   setup_appkit();
+    
    return NSApplicationMain(argc, (const char **) argv);
 }