diff --git a/FCHost/fchost/fchost_app.cc b/FCHost/fchost/fchost_app.cc
index 3c5608a42c6df6bb977f6d9f5fcaeface4e3dab5..4dfc4cefaac9ca147160830e0f5e32dce5339c12 100644
--- a/FCHost/fchost/fchost_app.cc
+++ b/FCHost/fchost/fchost_app.cc
@@ -163,10 +163,6 @@ void FCHostApp::OnContextCreated(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFra
 
 int FCHostApp::main(const CefMainArgs& args, CefCommandLine* commandLine)
 {
-  // It will create the first browser instance in OnContextInitialized() after
-  // CEF has initialized.
-  CefRefPtr<FCHostApp> app(new FCHostApp);
-
   // Specify CEF global settings here.
   CefSettings settings;
 
@@ -176,7 +172,7 @@ int FCHostApp::main(const CefMainArgs& args, CefCommandLine* commandLine)
   }
 
   // Cache location is required for local storage
-  cef_string_from_path(app->GetLocalStorePath(), &settings.cache_path);
+  cef_string_from_path(this->GetLocalStorePath(), &settings.cache_path);
 
   // When generating projects with CMake the CEF_USE_SANDBOX value will be defined
   // automatically. Pass -DUSE_SANDBOX=OFF to the CMake command-line to disable
@@ -186,7 +182,7 @@ int FCHostApp::main(const CefMainArgs& args, CefCommandLine* commandLine)
 #endif
 
   // Initialize CEF for the browser process.
-  CefInitialize(args, settings, app.get(), nullptr);
+  CefInitialize(args, settings, this, nullptr);
 
   // Run the CEF message loop. This will block until CefQuitMessageLoop() is
   // called.
diff --git a/FCHost/fchost/fchost_app.h b/FCHost/fchost/fchost_app.h
index 52887c8754c9392be693b16d7228d7792cc8f93c..d5ffe9f41900299ec574656c25e94efcf28a842d 100644
--- a/FCHost/fchost/fchost_app.h
+++ b/FCHost/fchost/fchost_app.h
@@ -14,6 +14,8 @@ class CefCommandLine;
 // Implement application-level callbacks for the browser process.
 class FCHostApp : public CefApp, public CefBrowserProcessHandler, public CefRenderProcessHandler {
  public:
+  FCHostApp();
+
   // CefApp methods:
   virtual CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler()
       OVERRIDE {
@@ -30,10 +32,9 @@ class FCHostApp : public CefApp, public CefBrowserProcessHandler, public CefRend
 
   std::filesystem::path GetLocalStorePath();
 
-  static int main(const CefMainArgs& args, CefCommandLine* commandLine);
+  int main(const CefMainArgs& args, CefCommandLine* commandLine);
 
  private:
-  FCHostApp();
   // Include the default reference counting implementation.
   IMPLEMENT_REFCOUNTING(FCHostApp);
 };
diff --git a/FCHost/fchost/fchost_linux.cc b/FCHost/fchost/fchost_linux.cc
index c79746c89682c557f2b419efce9097901ece0ae5..c1c7b81f9407e293c8c1aee4716856365aa4b292 100644
--- a/FCHost/fchost/fchost_linux.cc
+++ b/FCHost/fchost/fchost_linux.cc
@@ -43,11 +43,15 @@ int XIOErrorHandlerImpl(Display* display) {
 int main(int argc, char* argv[]) {
   // Provide CEF with command-line arguments.
   CefMainArgs main_args(argc, argv);
+  
+  // It will create the first browser instance in OnContextInitialized() after
+  // CEF has initialized.
+  CefRefPtr<FCHostApp> app(new FCHostApp);
 
   // CEF applications have multiple sub-processes (render, plugin, GPU, etc)
   // that share the same executable. This function checks the command-line and,
   // if this is a sub-process, executes the appropriate logic.
-  int exit_code = CefExecuteProcess(main_args, nullptr, nullptr);
+  int exit_code = CefExecuteProcess(main_args, app, nullptr);
   if (exit_code >= 0) {
     // The sub-process has completed so return here.
     return exit_code;
@@ -63,5 +67,5 @@ int main(int argc, char* argv[]) {
   CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
   command_line->InitFromArgv(argc, argv);
 
-  return FCHostApp::main(main_args, command_line);
+  return app->main(main_args, command_line);
 }
diff --git a/FCHost/fchost/fchost_win.cc b/FCHost/fchost/fchost_win.cc
index 575f5340fb012c41da15eb9d481c046ec879902b..aaf6975ad31f2740588cd18a6fb592d563a33a3a 100644
--- a/FCHost/fchost/fchost_win.cc
+++ b/FCHost/fchost/fchost_win.cc
@@ -31,10 +31,14 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
   // Provide CEF with command-line arguments.
   CefMainArgs main_args(hInstance);
 
+  // It will create the first browser instance in OnContextInitialized() after
+  // CEF has initialized.
+  CefRefPtr<FCHostApp> app(new FCHostApp);
+
   // CEF applications have multiple sub-processes (render, plugin, GPU, etc)
   // that share the same executable. This function checks the command-line and,
   // if this is a sub-process, executes the appropriate logic.
-  int exit_code = CefExecuteProcess(main_args, nullptr, nullptr);
+  int exit_code = CefExecuteProcess(main_args, app, nullptr);
   if (exit_code >= 0) {
     // The sub-process has completed so return here.
     return exit_code;
@@ -43,5 +47,5 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
   CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
   command_line->InitFromString(lpCmdLine);
 
-  return FCHostApp::main(main_args, command_line);
+  return app->main(main_args, command_line);
 }