diff --git a/src/Lib/Document/VivyDocument.cc b/src/Lib/Document/VivyDocument.cc
index d907d412141d03e53be3567e4c76759b0e262d17..e525db396df854f4e0fbfe1eb4af21f8b38f8b5d 100644
--- a/src/Lib/Document/VivyDocument.cc
+++ b/src/Lib/Document/VivyDocument.cc
@@ -79,10 +79,13 @@ VivyDocument::loadSaveJsonDocumentFile_ALPHA(VivyDocument *const self, const QJs
     if (json[KeyName].toString() != self->documentName)
         throw std::runtime_error("The document was edited outside of Vivy");
 
-    if (QJsonValue audio = json[KeySubDocuments][KeySubAudio]; !audio.isNull())
-        self->loadSubDocument(audio.toString(), Capabilities::AudioAble);
-    if (QJsonValue video = json[KeySubDocuments][KeySubVideo]; !video.isNull())
-        self->loadSubDocument(video.toString(), Capabilities::VideoAble);
+    if (QJsonValue audio = json[KeySubDocuments][KeySubAudio];
+        !audio.isNull() && !self->loadSubDocument(audio.toString(), Capabilities::AudioAble))
+        throw std::runtime_error("Failed to load audio sub document");
+
+    if (QJsonValue video = json[KeySubDocuments][KeySubVideo];
+        !video.isNull() && !self->loadSubDocument(video.toString(), Capabilities::VideoAble))
+        throw std::runtime_error("Failed to load video sub document");
 
     if (QJsonValue internalAssSource = json[KeySubDocuments][KeyInternalAssSource];
         !internalAssSource.isNull() && internalAssSource.toBool()) {
@@ -90,7 +93,8 @@ VivyDocument::loadSaveJsonDocumentFile_ALPHA(VivyDocument *const self, const QJs
         throw std::runtime_error("The internal ASS feature is not supported for now");
     } else if (QJsonValue ass = json[KeySubDocuments][KeySubAss]; !ass.isNull()) {
         // ASS in its own ASS file
-        self->loadSubDocument(ass.toString(), Capabilities::AssAble);
+        if (!self->loadSubDocument(ass.toString(), Capabilities::AssAble))
+            throw std::runtime_error("Failed to load ASS sub document");
     }
 }
 
@@ -130,7 +134,7 @@ VivyDocument::getSaveJsonDocumentFile() const
         subDocumentJson.insert(KeySubAudio, audioDocument->getFilePath());
 
     if (documentType & Capabilities::VideoAble)
-        subDocumentJson.insert(KeySubAudio, videoDocument->getFilePath());
+        subDocumentJson.insert(KeySubVideo, videoDocument->getFilePath());
 
     if (documentType & Capabilities::AssAble) {
         // ASS is inside Vivy document
@@ -141,7 +145,7 @@ VivyDocument::getSaveJsonDocumentFile() const
 
         // ASS is ints own ASS file
         else
-            subDocumentJson.insert(KeySubAudio, assDocument->getFilePath());
+            subDocumentJson.insert(KeySubAss, assDocument->getFilePath());
     }
 
     json.insert(KeySubDocuments, subDocumentJson);
diff --git a/src/UI/MainWindow.cc b/src/UI/MainWindow.cc
index 7430255d9a231291e2e6e37806bff4e83dd0fcec..7194b30f110d0dd690b7851611bcda70dd3d4e69 100644
--- a/src/UI/MainWindow.cc
+++ b/src/UI/MainWindow.cc
@@ -356,8 +356,7 @@ MainWindow::openDocument() noexcept
 
     // Handle the different types here
     try {
-        if ((fileType == Utils::DocumentType::Video) || (fileType == Utils::DocumentType::Vivy) ||
-            (fileType == Utils::DocumentType::Audio) || (fileType == Utils::DocumentType::ASS))
+        if (fileType == Utils::DocumentType::Vivy)
             addTab(new VivyDocumentView(vivyApp->documentStore.loadDocument(filename), documents));
 
         else if (fileType == Utils::DocumentType::VivyScript) {