diff --git a/src/AudioVisualizer.h b/src/AudioVisualizer.h
index a6f8b598ef0807b63309842f2435e2f342fd94e4..8a6f8b84718acfddfb6e59349322559f4314364d 100644
--- a/src/AudioVisualizer.h
+++ b/src/AudioVisualizer.h
@@ -1,6 +1,10 @@
 #ifndef VIVY_AUDIOVISUALIZER_H
 #define VIVY_AUDIOVISUALIZER_H
 
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
 #include "TimingView.hpp"
 #include <QWidget>
 
diff --git a/src/DialogHelp.h b/src/DialogHelp.h
index 3d99c37b74cacb57706c22f9c089adf20381a9a3..f19d6e5c6d1f20fbd4ebec354ec13438f40e4470 100644
--- a/src/DialogHelp.h
+++ b/src/DialogHelp.h
@@ -1,6 +1,10 @@
 #ifndef VIVY_DIALOGHELP_H
 #define VIVY_DIALOGHELP_H
 
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
 #include <QMessageBox>
 #include <QWidget>
 
diff --git a/src/MainWindow.cc b/src/MainWindow.cc
index f220d0a53ea20ea395e822fb9590f2828f3c678a..7ad9d4b5abbbcd4d647b38dc23e8e20b3eefba34 100644
--- a/src/MainWindow.cc
+++ b/src/MainWindow.cc
@@ -3,6 +3,7 @@
 #include "MainWindow.h"
 #include "AudioUtils.h"
 #include "DialogHelp.h"
+#include "VivyDocumentView.h"
 
 #include <iostream>
 #include <cstring>
diff --git a/src/MainWindow.h b/src/MainWindow.h
index af4eb68b2fe3b95830007a6840e4e425acd57bdf..42df6aa6be64ffc398b148a9420ae48e506b0938 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -1,6 +1,10 @@
 #ifndef VIVY_MAINWINDOW_H
 #define VIVY_MAINWINDOW_H
 
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
 #include "AudioVisualizer.h"
 #include <QMainWindow>
 
diff --git a/src/TimingBar.h b/src/TimingBar.h
index 709ab537558d01c1dd388f70ac55d78d4252b5d7..ae9686aa6c94c9821d43ce29e0773d0ba6205b2a 100644
--- a/src/TimingBar.h
+++ b/src/TimingBar.h
@@ -1,6 +1,10 @@
 #ifndef VIVY_TIMING_BAR_H
 #define VIVY_TIMING_BAR_H
 
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
 #include <QWidget>
 #include <QGraphicsItem>
 #include <QGraphicsLineItem>
diff --git a/src/TimingView.hpp b/src/TimingView.hpp
index 7c7971645aba2feddb746b0f18f461c113e759e1..81eb053b98f0b281e42609694cd2609f9d432e69 100644
--- a/src/TimingView.hpp
+++ b/src/TimingView.hpp
@@ -1,6 +1,10 @@
 #ifndef VIVY_TIMING_VIEW_H
 #define VIVY_TIMING_VIEW_H
 
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
 #include "TimingBar.h"
 #include "TimingScene.hpp"
 
diff --git a/src/VivyDocument.h b/src/VivyDocument.h
new file mode 100644
index 0000000000000000000000000000000000000000..262fab8e2b1f40f75d063661bffbfe4889bf9d35
--- /dev/null
+++ b/src/VivyDocument.h
@@ -0,0 +1,18 @@
+#ifndef VIVY_DOCUMENT_H
+#define VIVY_DOCUMENT_H
+
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
+class VivyDocument {
+    /* The document name */
+    const char *name;
+
+    /* Links to other files, they're not embeded inside the vivy file */
+    const char *audioFile;
+    const char *videoFile;
+    const char *assFile;
+};
+
+#endif // VIVY_DOCUMENT_H
diff --git a/src/VivyDocumentView.h b/src/VivyDocumentView.h
new file mode 100644
index 0000000000000000000000000000000000000000..c683b71b7349404c2de98a89c068b2d8f5c7915b
--- /dev/null
+++ b/src/VivyDocumentView.h
@@ -0,0 +1,21 @@
+#ifndef VIVY_DOCUMENTVIEW_H
+#define VIVY_DOCUMENTVIEW_H
+
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
+#include "VivyDocument.h"
+#include "AudioVisualizer.h"
+
+#include <QWidget>
+
+class VivyDocumentView final : public QWidget {
+    Q_OBJECT
+
+private:
+    VivyDocument *document;
+    AudioVisualizer *visualizer;
+};
+
+#endif // VIVY_DOCUMENTVIEW_H