diff --git a/src/Lib/AbstractDocument.hh b/src/Lib/AbstractDocument.hh
index 51ed90b0f6c1b4aae910e30d4554d42b32d5442d..dfec447f3bdbc696e313bc6985b487ea94ad1a8a 100644
--- a/src/Lib/AbstractDocument.hh
+++ b/src/Lib/AbstractDocument.hh
@@ -1,5 +1,4 @@
-#ifndef VIVY_ABSTRACT_DOCUMENT_H
-#define VIVY_ABSTRACT_DOCUMENT_H
+#pragma once
 
 #ifndef __cplusplus
 #error "This is a C++ header"
@@ -101,5 +100,3 @@ signals:
 }
 
 bool operator==(const Vivy::AbstractDocument &a, const Vivy::AbstractDocument &b) noexcept;
-
-#endif // VIVY_ABSTRACT_DOCUMENT_H
diff --git a/src/UI/ScriptDocumentView.cc b/src/UI/ScriptDocumentView.cc
index b05c137d8e37f7ed26d9f66eb193d9f62a4eec3f..4adf39bc4438575573641438e57dc58483ac7cb1 100644
--- a/src/UI/ScriptDocumentView.cc
+++ b/src/UI/ScriptDocumentView.cc
@@ -1,4 +1,5 @@
 #include "ScriptDocumentView.hh"
+#include "MainWindow.hh"
 #include "ScriptViews/ScriptEditor.hh"
 #include "ScriptViews/ScriptHighlighter.hh"
 #include "../VivyApplication.hh"
diff --git a/src/UI/ScriptViews/EditorProxy.cc b/src/UI/ScriptViews/EditorProxy.cc
index cff3cbd913c2ed04071fd60e8846a6032ea2d4a8..1664c5adc72c09be58d54603a3385256c86d7a35 100644
--- a/src/UI/ScriptViews/EditorProxy.cc
+++ b/src/UI/ScriptViews/EditorProxy.cc
@@ -1,4 +1,5 @@
 #include "EditorProxy.hh"
+#include "../MainWindow.hh"
 #include "../FakeVim/FakeVimHandler.hh"
 #include "../FakeVim/FakeVimActions.hh"
 #include "../../VivyApplication.hh"
diff --git a/src/VivyApplication.cc b/src/VivyApplication.cc
index 6cac0f9f096654bba8f79de16ff70d7cdba6b725..b6df260b646972708049f4ee0b98929c86516988 100644
--- a/src/VivyApplication.cc
+++ b/src/VivyApplication.cc
@@ -59,7 +59,7 @@ VivyApplication::exec() noexcept
     setCursorFlashTime(0);
 
     // Show the main window
-    mainWindowPtr = std::make_unique<MainWindow>();
+    mainWindowPtr = std::make_shared<MainWindow>();
     mainWindowPtr->show();
 
     logInfo() << "Entering the main event loop";
diff --git a/src/VivyApplication.hh b/src/VivyApplication.hh
index 326fe9fc5c0065b9a0c124577e4cec09293473f1..85e715d85209eb49388a21ec2aa102a3bcf56288 100644
--- a/src/VivyApplication.hh
+++ b/src/VivyApplication.hh
@@ -4,7 +4,7 @@
 #error "This is a C++ header"
 #endif
 
-#define vivyApp (dynamic_cast<::Vivy::VivyApplication *>(VivyApplication::instance()))
+#define vivyApp (static_cast<::Vivy::VivyApplication *>(VivyApplication::instance()))
 
 #define currentVivyDocument() dynamic_cast<::Vivy::VivyDocument *>(vivyApp->getCurrentDocument())
 #define currentScriptDocument dynamic_cast<::Vivy::ScriptDocument *>(vivyApp->getCurrentDocument())
@@ -32,7 +32,6 @@
 #include "Lib/Script/ScriptStore.hh"
 #include "Lib/Document/VivyDocumentStore.hh"
 #include "Lib/Log.hh"
-#include "UI/MainWindow.hh"
 
 namespace Vivy
 {
@@ -68,7 +67,7 @@ private:
     int fontIdBold;
     int fontIdBoldItalic;
 
-    std::unique_ptr<MainWindow> mainWindowPtr{ nullptr };
+    std::shared_ptr<MainWindow> mainWindowPtr{ nullptr };
     bool useFakeVim{ false };
 
 public: