#endif
 }
 
+//----------------------------------------------------------------------
+// wxEntry
+//----------------------------------------------------------------------
+
+int wxEntryStart( int argc, char *argv[] )
+{
+    return wxApp::Initialize();
+}
+
+
+int wxEntryInitGui()
+{
+    return wxTheApp->OnInitGui();
+}
+
+
+void wxEntryCleanup()
+{
+    wxApp::CleanUp();
+}
+
+
 int wxEntry( int argc, char *argv[] , bool enterLoop )
 {
 #ifdef __MWERKS__
     wxDebugContext::SetCheckpoint();
 #endif
 #endif
-    if (!wxApp::Initialize()) {
+    if (!wxEntryStart(argc, argv)) {
         return 0;
     }
    // create the application object or ensure that one already exists
   wxTheApp->argv = argv;
 
   // GUI-specific initialization, such as creating an app context.
-  wxTheApp->OnInitGui();
+  wxEntryInitGui();
 
   // we could try to get the open apple events here to adjust argc and argv better
 
 
     wxTheApp->OnExit();
 
-    wxApp::CleanUp();
+    wxEntryCleanup();
 
     return retValue;
 }
 
     #endif
 }
 
+//----------------------------------------------------------------------
+// wxEntry
+//----------------------------------------------------------------------
+
+int wxEntryStart( int argc, char *argv[] )
+{
+    return wxApp::Initialize();
+}
+
+
+int wxEntryInitGui()
+{
+    return wxTheApp->OnInitGui();
+}
+
+
+void wxEntryCleanup()
+{
+    wxApp::CleanUp();
+}
+
+
 int wxEntry( int argc, char *argv[] , bool enterLoop )
 {
 #ifdef __MWERKS__
     wxDebugContext::SetCheckpoint();
 #endif
 #endif
-    if (!wxApp::Initialize()) {
+    if (!wxEntryStart(argc, argv)) {
         return 0;
     }
    // create the application object or ensure that one already exists
   wxTheApp->argv = argv;
 
   // GUI-specific initialization, such as creating an app context.
-  wxTheApp->OnInitGui();
+  wxEntryInitGui();
 
   // we could try to get the open apple events here to adjust argc and argv better
 
 
     wxTheApp->OnExit();
 
-    wxApp::CleanUp();
+    wxEntryCleanup();
 
     return retValue;
 }