diff --git a/src/UI/MainWindow.cc b/src/UI/MainWindow.cc
index 32e6bbf9ec5bc28c14548593ddc126b6df28136a..6944ebed495c71372feb9833e2ef5665e8328b97 100644
--- a/src/UI/MainWindow.cc
+++ b/src/UI/MainWindow.cc
@@ -233,14 +233,11 @@ MainWindow::closeDocument(int index) noexcept
 void
 MainWindow::newDocument() noexcept
 {
-    std::shared_ptr<VivyDocument> document =
-        vivyApp->documentStore.newDocument(VivyDocument::UntouchedByDefault);
-
     try {
-        addTab(new VivyDocumentView(document));
+        addTab(new VivyDocumentView(
+            vivyApp->documentStore.newDocument(VivyDocument::UntouchedByDefault), documents));
     } catch (const std::runtime_error &e) {
         qCritical() << "Failed to create a new empty document:" << e.what();
-        vivyApp->documentStore.closeDocument(document->getUuid());
     }
 }
 
@@ -266,10 +263,10 @@ MainWindow::openDocument() noexcept
     try {
         if ((fileType == Utils::DocumentType::Video) || (fileType == Utils::DocumentType::Vivy) ||
             (fileType == Utils::DocumentType::Audio) || (fileType == Utils::DocumentType::ASS))
-            addTab(new VivyDocumentView(vivyApp->documentStore.loadDocument(filename)));
+            addTab(new VivyDocumentView(vivyApp->documentStore.loadDocument(filename), documents));
 
         else if (fileType == Utils::DocumentType::VivyScript)
-            addTab(new ScriptDocumentView(filename, documents));
+            addTab(new ScriptDocumentView(vivyApp->scriptStore.loadDocument(filename), documents));
     } catch (const std::runtime_error &e) {
         qCritical() << "Failed to load document" << filename << "with error:" << e.what();
     }
diff --git a/src/UI/ScriptDocumentView.cc b/src/UI/ScriptDocumentView.cc
index b8d03ac55d6ccb23662417ad007f5466e6e4a8a1..8e3421ed733d21aef89694b1cac9d2bf543b484b 100644
--- a/src/UI/ScriptDocumentView.cc
+++ b/src/UI/ScriptDocumentView.cc
@@ -7,12 +7,12 @@
 
 using namespace Vivy;
 
-ScriptDocumentView::ScriptDocumentView(const QString &path, QWidget *parent)
+ScriptDocumentView::ScriptDocumentView(std::shared_ptr<ScriptDocument> ptr, QWidget *parent)
     : AbstractDocumentView(AbstractDocumentView::Type::Script, parent)
     , editor(new ScriptEditor(this))
     , syntax(new ScriptHighlighter(editor->document()))
 {
-    QFile textFile(path);
+    QFile textFile(ptr->getName());
     if (!textFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
         throw std::runtime_error("Failed to open script file");
     }
diff --git a/src/UI/ScriptDocumentView.hh b/src/UI/ScriptDocumentView.hh
index 15b2be984092776f7b82ddbeb3ab4ee5e6774428..3037b315d8ae31f5d0ac0e0663d1161e4cf4a6ba 100644
--- a/src/UI/ScriptDocumentView.hh
+++ b/src/UI/ScriptDocumentView.hh
@@ -15,13 +15,14 @@ namespace Vivy
 {
 class ScriptEditor;
 class ScriptHighlighter;
+class ScriptDocument;
 
 class ScriptDocumentView final : public AbstractDocumentView {
     Q_OBJECT
     VIVY_UNMOVABLE_OBJECT(ScriptDocumentView)
 
 public:
-    explicit ScriptDocumentView(const QString &path, QWidget *parent = nullptr);
+    explicit ScriptDocumentView(std::shared_ptr<ScriptDocument>, QWidget *parent = nullptr);
 
     void closeDocument() noexcept override;
     void openProperties() noexcept override;
diff --git a/src/UI/VivyDocumentView.hh b/src/UI/VivyDocumentView.hh
index b30b27d14dcbc2290f6e0b4c082ab029607cede1..96a598766675f35314c6bd41e160f7955a0d5e95 100644
--- a/src/UI/VivyDocumentView.hh
+++ b/src/UI/VivyDocumentView.hh
@@ -21,7 +21,7 @@ class VivyDocumentView final : public AbstractDocumentView {
     VIVY_UNMOVABLE_OBJECT(VivyDocumentView)
 
 public:
-    explicit VivyDocumentView(std::shared_ptr<VivyDocument>, QWidget *parent = nullptr) noexcept;
+    explicit VivyDocumentView(std::shared_ptr<VivyDocument>, QWidget *parent) noexcept;
     ~VivyDocumentView() noexcept;
 
     void closeDocument() noexcept override;
diff --git a/src/VivyApplication.hh b/src/VivyApplication.hh
index 4d51494cdce8fe4526852725624e6b2954dec4a9..56bde12ac3145dfcec11ebb3152cbcfe0253a418 100644
--- a/src/VivyApplication.hh
+++ b/src/VivyApplication.hh
@@ -34,6 +34,7 @@ class VivyApplication : public QApplication {
 
 public:
     VivyDocumentStore documentStore{};
+    ScriptStore scriptStore{};
 
     enum class Font {
         Monospace,