diff --git a/CMakeLists.txt b/CMakeLists.txt
index 95f9e505b38d62e100afe837d6067b44f3db37a6..19e4baaedf38d59b415c2dfe06e57c4c0ac1e87f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 3.5)
 project(Vivy VERSION 0.1)
 
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
+cmake_policy(SET CMP0100 NEW) # Let cmake use moc and uic for .hh files
 
 set(CMAKE_AUTOUIC ON)
 set(CMAKE_AUTOMOC ON)
@@ -35,8 +36,11 @@ file(GLOB Vivy_SRC
 )
 file(GLOB Vivy_INC
     "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/*.hh"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Document/*.h"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/Document/*.hh"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/*.h"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/Ass/*.hh"
 )
 set(PROJECT_SOURCES
     ${Vivy_SRC}
diff --git a/src/Ass/Ass.h b/src/Ass/Ass.h
deleted file mode 100644
index 6656703be24f17d319016ab401caa587ad52628f..0000000000000000000000000000000000000000
--- a/src/Ass/Ass.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef VIVY_ASS_ASS_H
-#define VIVY_ASS_ASS_H
-
-#include "Char.h"
-#include "Line.h"
-#include "Syl.h"
-#include "Style.h"
-
-#endif // VIVY_ASS_ASS_H
diff --git a/src/Ass/Ass.hh b/src/Ass/Ass.hh
new file mode 100644
index 0000000000000000000000000000000000000000..2437996df1143f723b00d486c08546fb5af484a4
--- /dev/null
+++ b/src/Ass/Ass.hh
@@ -0,0 +1,9 @@
+#ifndef VIVY_ASS_ASS_H
+#define VIVY_ASS_ASS_H
+
+#include "Char.hh"
+#include "Line.hh"
+#include "Syl.hh"
+#include "Style.hh"
+
+#endif // VIVY_ASS_ASS_H
diff --git a/src/Ass/Char.cc b/src/Ass/Char.cc
index 4cb2cb45ce2514af9af7c49acc4e0bfe789805c8..9ba0f77ffa1463a58b2d236271a6f616d09b5e54 100644
--- a/src/Ass/Char.cc
+++ b/src/Ass/Char.cc
@@ -1,5 +1,5 @@
-#include "Char.h"
-#include "Syl.h"
+#include "Char.hh"
+#include "Syl.hh"
 
 Char::Char(Syl *const syl, const QChar /*unused*/)
     : parentLine(syl->parentLine)
diff --git a/src/Ass/Char.h b/src/Ass/Char.hh
similarity index 96%
rename from src/Ass/Char.h
rename to src/Ass/Char.hh
index 89aba5eca534c25eb770b7494d7956a0afbc9115..6488e64e680fea1e95df5d57de9de1f233dab6d8 100644
--- a/src/Ass/Char.h
+++ b/src/Ass/Char.hh
@@ -1,7 +1,6 @@
 #ifndef VIVY_ASS_CHAR_H
 #define VIVY_ASS_CHAR_H
 
-#include "Style.h"
 #include <QChar>
 #include <QtGlobal>
 
diff --git a/src/Ass/Line.cc b/src/Ass/Line.cc
index a9743dd1baf33ccd430a6eb1df94c2ed67784f79..31a398912856fef2c9969507fd45aecb04d12d1a 100644
--- a/src/Ass/Line.cc
+++ b/src/Ass/Line.cc
@@ -1,4 +1,4 @@
-#include "Line.h"
+#include "Line.hh"
 
 Line::Line(const QString & /*unused*/)
 {
diff --git a/src/Ass/Line.h b/src/Ass/Line.hh
similarity index 94%
rename from src/Ass/Line.h
rename to src/Ass/Line.hh
index f42abdac291099883814b36183531ec2ae3c2b2d..e2aa48c5dfaf56f1760845b29df273159e0274b8 100644
--- a/src/Ass/Line.h
+++ b/src/Ass/Line.hh
@@ -3,8 +3,7 @@
 
 #include <QString>
 #include <QtGlobal>
-#include "Style.h"
-#include "Syl.h"
+#include "Syl.hh"
 
 class Line {
 private:
diff --git a/src/Ass/Style.cc b/src/Ass/Style.cc
index b3067b29beba4cdec78049968d975f14ffaff0c4..859de90d5f56a2195a7b6569e20917ce93949bad 100644
--- a/src/Ass/Style.cc
+++ b/src/Ass/Style.cc
@@ -1,4 +1,4 @@
-#include "Style.h"
+#include "Style.hh"
 
 Style::Style(const QString & /*unused*/)
 {
diff --git a/src/Ass/Style.h b/src/Ass/Style.hh
similarity index 100%
rename from src/Ass/Style.h
rename to src/Ass/Style.hh
diff --git a/src/Ass/Syl.cc b/src/Ass/Syl.cc
index 5eb7869fde284ab8aa1f678f3021d47d6c491612..9fbe6d343f83b412dd80c96f6751b83ffd468834 100644
--- a/src/Ass/Syl.cc
+++ b/src/Ass/Syl.cc
@@ -1,4 +1,4 @@
-#include "Syl.h"
+#include "Syl.hh"
 
 Syl::Syl(Line *const line, const QString & /*unused*/)
     : parentLine(line)
diff --git a/src/Ass/Syl.h b/src/Ass/Syl.hh
similarity index 82%
rename from src/Ass/Syl.h
rename to src/Ass/Syl.hh
index 3dd6c425aef329e92c7689d6c3aece93b2a433a6..6cac6bfc3140db005a6123c236416426e0d364ff 100644
--- a/src/Ass/Syl.h
+++ b/src/Ass/Syl.hh
@@ -1,9 +1,10 @@
 #ifndef VIVY_SYL_H
 #define VIVY_SYL_H
 
-#include "Char.h"
-#include "Style.h"
-#include <cstdint>
+#include "Char.hh"
+#include <QString>
+#include <QVector>
+#include <QtGlobal>
 
 class Line;
 
diff --git a/src/AudioVisualizer.cc b/src/AudioVisualizer.cc
index 5cac8408a9d143443a1f136c8b4ff74244a87b5e..6407db7bb5b076919a90d7a05336bef18bc570b9 100644
--- a/src/AudioVisualizer.cc
+++ b/src/AudioVisualizer.cc
@@ -1,4 +1,4 @@
-#include "AudioVisualizer.h"
+#include "AudioVisualizer.hh"
 #include "AudioUtils.h"
 
 #include <QGraphicsPixmapItem>
diff --git a/src/AudioVisualizer.h b/src/AudioVisualizer.hh
similarity index 94%
rename from src/AudioVisualizer.h
rename to src/AudioVisualizer.hh
index 2673469bf6e94922180e0346b5bd88ded06f98dc..7f4f4a8b9a6d305018722b8010d9a20e0bfe6fd0 100644
--- a/src/AudioVisualizer.h
+++ b/src/AudioVisualizer.hh
@@ -5,7 +5,7 @@
 #error "This is a C++ header"
 #endif
 
-#include "TimingView.hpp"
+#include "TimingView.hh"
 #include <QWidget>
 #include <QString>
 
diff --git a/src/DialogHelp.cc b/src/DialogHelp.cc
index e99785c0a8b9d6be15ee8b192a0cffa33984edf1..9fbf1f7383e66b87ffe9fddd77fbea72fa351faa 100644
--- a/src/DialogHelp.cc
+++ b/src/DialogHelp.cc
@@ -1,5 +1,5 @@
-#include "DialogHelp.h"
-#include "VivyApplication.h"
+#include "DialogHelp.hh"
+#include "VivyApplication.hh"
 
 #include <QWidget>
 #include <QLabel>
diff --git a/src/DialogHelp.h b/src/DialogHelp.hh
similarity index 100%
rename from src/DialogHelp.h
rename to src/DialogHelp.hh
diff --git a/src/Document/CRTPDocument.h b/src/Document/CRTPDocument.hh
similarity index 98%
rename from src/Document/CRTPDocument.h
rename to src/Document/CRTPDocument.hh
index 7c998a1e62aa9a1f90ea3d56636a440b1134150b..4fd2ba912e940cdcc0fbf428ae8e67b74624714b 100644
--- a/src/Document/CRTPDocument.h
+++ b/src/Document/CRTPDocument.hh
@@ -5,8 +5,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "../Utils.h"
-#include "../Ass/Ass.h"
+#include "../Utils.hh"
+#include "../Ass/Ass.hh"
 #include <QString>
 #include <memory>
 
diff --git a/src/Document/VivyDocument.cc b/src/Document/VivyDocument.cc
index ccb47a2ad6bb30679e72af7c01d9ffb8a0293705..6a2455eab30db80a9d65899e2aa4c3df287d7e36 100644
--- a/src/Document/VivyDocument.cc
+++ b/src/Document/VivyDocument.cc
@@ -1,5 +1,5 @@
-#include "VivyDocument.h"
-#include "../Utils.h"
+#include "VivyDocument.hh"
+#include "../Utils.hh"
 
 #include <QFileInfo>
 #include <QString>
diff --git a/src/Document/VivyDocument.h b/src/Document/VivyDocument.hh
similarity index 96%
rename from src/Document/VivyDocument.h
rename to src/Document/VivyDocument.hh
index ff396dd5659a874e53a5c18e49cf06ed0220c0ad..cad06e31827225c54c3e14b3c44a4529e04d1b5c 100644
--- a/src/Document/VivyDocument.h
+++ b/src/Document/VivyDocument.hh
@@ -5,8 +5,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "../Utils.h"
-#include "CRTPDocument.h"
+#include "../Utils.hh"
+#include "CRTPDocument.hh"
 
 #include <memory>
 #include <QString>
diff --git a/src/Document/VivyDocumentStore.cc b/src/Document/VivyDocumentStore.cc
index 07c4fd8b336f88bb3f93cbf26217372c4432cf5d..55f6fd322d6c93f3777df5f40de87fc1b334315a 100644
--- a/src/Document/VivyDocumentStore.cc
+++ b/src/Document/VivyDocumentStore.cc
@@ -1,5 +1,5 @@
-#include "VivyDocumentStore.h"
-#include "VivyDocument.h"
+#include "VivyDocumentStore.hh"
+#include "VivyDocument.hh"
 
 VivyDocumentStore::~VivyDocumentStore() noexcept
 {
diff --git a/src/Document/VivyDocumentStore.h b/src/Document/VivyDocumentStore.hh
similarity index 96%
rename from src/Document/VivyDocumentStore.h
rename to src/Document/VivyDocumentStore.hh
index b7e9c2cbcbfc8123a90abfddf51110bd5d7dec37..557d1b4714f062bf0ed4126e892e6dd364b727f2 100644
--- a/src/Document/VivyDocumentStore.h
+++ b/src/Document/VivyDocumentStore.hh
@@ -1,8 +1,8 @@
 #ifndef VIVY_DOCUMENTSTORE_H
 #define VIVY_DOCUMENTSTORE_H
 
-#include "VivyDocument.h"
-#include "VivyDocumentView.h"
+#include "VivyDocument.hh"
+#include "VivyDocumentView.hh"
 
 #include <QMap>
 #include <QString>
diff --git a/src/Document/VivyDocumentView.cc b/src/Document/VivyDocumentView.cc
index a1adb649abfaf8ceb918ee803e89ad182f307fcf..a71fc50658420de16e00fc1fb3805953dafa8991 100644
--- a/src/Document/VivyDocumentView.cc
+++ b/src/Document/VivyDocumentView.cc
@@ -1,6 +1,6 @@
-#include "VivyDocumentView.h"
-#include "../AudioVisualizer.h"
-#include "VivyDocument.h"
+#include "VivyDocumentView.hh"
+#include "../AudioVisualizer.hh"
+#include "VivyDocument.hh"
 
 #include <QVBoxLayout>
 
diff --git a/src/Document/VivyDocumentView.h b/src/Document/VivyDocumentView.hh
similarity index 88%
rename from src/Document/VivyDocumentView.h
rename to src/Document/VivyDocumentView.hh
index c23979a92c9745dde172923facebbedb93278608..945ebfd7be04c8502382d8ee2fa2d58255311588 100644
--- a/src/Document/VivyDocumentView.h
+++ b/src/Document/VivyDocumentView.hh
@@ -5,8 +5,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "VivyDocument.h"
-#include "../AudioVisualizer.h"
+#include "VivyDocument.hh"
+#include "../AudioVisualizer.hh"
 
 #include <QWidget>
 
diff --git a/src/Main.cc b/src/Main.cc
index 9d9c24ef033f0b64ef28ef9684fbcf03552e996a..a3a0f3814ad3e3d5af24f1a0204c3abdbd684dce 100644
--- a/src/Main.cc
+++ b/src/Main.cc
@@ -1,5 +1,5 @@
-#include "MainWindow.h"
-#include "VivyApplication.h"
+#include "MainWindow.hh"
+#include "VivyApplication.hh"
 
 auto
 main(int argc, char **argv) noexcept -> int
diff --git a/src/MainWindow.cc b/src/MainWindow.cc
index e2d7edd09481394f9ad6f4e209f6b073913b8586..83c5d41e777b3e82c3fd78797c0bc304f5c8a7cf 100644
--- a/src/MainWindow.cc
+++ b/src/MainWindow.cc
@@ -1,8 +1,8 @@
 #define VIVY_MAINWINDOW_CC
 
-#include "MainWindow.h"
-#include "DialogHelp.h"
-#include "Document/VivyDocumentView.h"
+#include "MainWindow.hh"
+#include "DialogHelp.hh"
+#include "Document/VivyDocumentView.hh"
 
 #include <QFileInfo>
 #include <QStandardPaths>
diff --git a/src/MainWindow.h b/src/MainWindow.hh
similarity index 91%
rename from src/MainWindow.h
rename to src/MainWindow.hh
index b9f87f6d3b8b61b0cf73c557e63b355637843746..0d8c09bf351d0f3762a77738b64247e628fda783 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.hh
@@ -5,8 +5,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "AudioVisualizer.h"
-#include "Document/VivyDocumentStore.h"
+#include "AudioVisualizer.hh"
+#include "Document/VivyDocumentStore.hh"
 #include <QMainWindow>
 
 class QMenu;
diff --git a/src/TimingBar.cc b/src/TimingBar.cc
index a9ca196e015990829cb477f6c74375e9c20922cf..f06780335387760a26aa4cf08b17bd0868e95869 100644
--- a/src/TimingBar.cc
+++ b/src/TimingBar.cc
@@ -1,4 +1,4 @@
-#include "TimingBar.h"
+#include "TimingBar.hh"
 
 #include <QApplication>
 #include <QGraphicsSceneMouseEvent>
diff --git a/src/TimingBar.h b/src/TimingBar.hh
similarity index 100%
rename from src/TimingBar.h
rename to src/TimingBar.hh
diff --git a/src/TimingScene.cc b/src/TimingScene.cc
index 3841edef2633f70ab8fedf29da24aa6c4a07fdb6..6ca373a0ff140a36c705b89db875d51265465851 100644
--- a/src/TimingScene.cc
+++ b/src/TimingScene.cc
@@ -1,4 +1,4 @@
-#include "TimingScene.hpp"
+#include "TimingScene.hh"
 
 #include <QGraphicsLineItem>
 #include <QGraphicsPixmapItem>
diff --git a/src/TimingScene.hpp b/src/TimingScene.hh
similarity index 96%
rename from src/TimingScene.hpp
rename to src/TimingScene.hh
index 352b2099e709198a68ba7d11dda9cdb9355ffb3c..144a76cb466c0abb32e7b54ae41e1b94f39294be 100644
--- a/src/TimingScene.hpp
+++ b/src/TimingScene.hh
@@ -1,8 +1,8 @@
 #ifndef VIVY_TIMING_SCENE_H
 #define VIVY_TIMING_SCENE_H
 
-#include "TimingBar.h"
-#include "Ass/Line.h"
+#include "Ass/Line.hh"
+#include "TimingBar.hh"
 
 #include <QWidget>
 #include <QColor>
diff --git a/src/TimingView.cc b/src/TimingView.cc
index dcb7f82627ffd7c119139021beed6e74f3246398..86a067de03140a3aca9903aa2f9be7c2aed2e73e 100644
--- a/src/TimingView.cc
+++ b/src/TimingView.cc
@@ -1,4 +1,4 @@
-#include "TimingView.hpp"
+#include "TimingView.hh"
 
 #include <QAbstractScrollArea>
 #include <QGraphicsLineItem>
diff --git a/src/TimingView.hpp b/src/TimingView.hh
similarity index 92%
rename from src/TimingView.hpp
rename to src/TimingView.hh
index 1b6a864736fbda7ab3f7f2e8cb73038a635f5a38..675ac0d2c4a597f7ea412b4cc0bf2f65a1370578 100644
--- a/src/TimingView.hpp
+++ b/src/TimingView.hh
@@ -5,8 +5,8 @@
 #error "This is a C++ header"
 #endif
 
-#include "TimingBar.h"
-#include "TimingScene.hpp"
+#include "TimingBar.hh"
+#include "TimingScene.hh"
 
 #include <QWidget>
 #include <QColor>
diff --git a/src/Utils.cc b/src/Utils.cc
index eb974f1d614a3d9e823c3878337f6f478d26360a..6fab4a1824834a24de9fb203ace710047420dfc1 100644
--- a/src/Utils.cc
+++ b/src/Utils.cc
@@ -1,4 +1,4 @@
-#include "Utils.h"
+#include "Utils.hh"
 
 #include <QFileInfo>
 
diff --git a/src/Utils.h b/src/Utils.hh
similarity index 100%
rename from src/Utils.h
rename to src/Utils.hh
diff --git a/src/VivyApplication.cc b/src/VivyApplication.cc
index ed779647f74665be7617ed967dff53ca696d668c..5cb26f878c6e499dd353acfe699ce689718112d3 100644
--- a/src/VivyApplication.cc
+++ b/src/VivyApplication.cc
@@ -1,5 +1,5 @@
-#include "VivyApplication.h"
-#include "MainWindow.h"
+#include "VivyApplication.hh"
+#include "MainWindow.hh"
 
 #include <stdexcept>
 
diff --git a/src/VivyApplication.h b/src/VivyApplication.hh
similarity index 100%
rename from src/VivyApplication.h
rename to src/VivyApplication.hh