diff --git a/.gitmodules b/.gitmodules
index c6f897f772d275027b1c2ed0b69fd0476f0ff43c..2022e0b2978240865021cc6bce912404ee048d05 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
 [submodule "theme/reveal.js"]
-	path = components/theme/reveal.js
+	path = theme/reveal.js
 	url = https://github.com/hakimel/reveal.js.git
diff --git a/2019/template/Gruntfile.coffee b/2019/template/Gruntfile.coffee
deleted file mode 120000
index 71ae4e3a576a58ad931237600b41fb4d0c419fdb..0000000000000000000000000000000000000000
--- a/2019/template/Gruntfile.coffee
+++ /dev/null
@@ -1 +0,0 @@
-../../components/Gruntfile.coffee
\ No newline at end of file
diff --git a/2019/template/Gruntfile.coffee b/2019/template/Gruntfile.coffee
new file mode 100644
index 0000000000000000000000000000000000000000..2207935adfa3592c494261f78c85d7c16d9d001f
--- /dev/null
+++ b/2019/template/Gruntfile.coffee
@@ -0,0 +1,130 @@
+# Generated on 2013-11-27 using generator-reveal 0.3.2
+module.exports = (grunt) ->
+
+    grunt.loadNpmTasks 'grunt-gh-pages'
+
+    grunt.initConfig
+
+        "gh-pages":
+            "gh-pages":
+                options:
+                    base: "dist"
+                src: [ '**' ]
+
+        watch:
+
+            livereload:
+                options:
+                    livereload: true
+                files: [
+                    'index.html'
+                    'slides/*.md'
+                    'slides/*.html'
+                    'theme/js/*.js'
+                ]
+
+            index:
+                files: [
+                    'theme/templates/_index.html'
+                    'theme/templates/_section.html'
+                    'slides/list.json'
+                ]
+                tasks: ['buildIndex']
+
+            coffeelint:
+                files: ['Gruntfile.coffee']
+                tasks: ['coffeelint']
+
+            jshint:
+                files: ['theme/js/*.js']
+                tasks: ['jshint']
+
+        connect:
+
+            livereload:
+                options:
+                    port: 9000
+                    # Change hostname to '0.0.0.0' to access
+                    # the server from outside.
+                    hostname: 'localhost'
+                    base: '.'
+                    open: true
+                    livereload: true
+
+        coffeelint:
+
+            options:
+                indentation:
+                    value: 4
+
+            all: ['Gruntfile.coffee']
+
+        jshint:
+
+            all: ['theme/js/*.js']
+
+        copy:
+
+            dist:
+                files: [{
+                    expand: true
+                    src: [
+                        'slides/**'
+                        'theme/**'
+                        'theme/css/**'
+                        'theme/js/**'
+                        'slides/img/**'
+                    ]
+                    dest: 'public/'
+                },{
+                    expand: true
+                    src: ['index.html']
+                    dest: 'public/'
+                    filter: 'isFile'
+                }]
+
+
+    # Load all grunt tasks.
+    require('load-grunt-tasks')(grunt)
+
+    grunt.registerTask 'buildIndex',
+        'Build theme/templates/_index.html and slides/list.json.',
+        ->
+            indexTemplate = grunt.file.read 'theme/templates/_index.html'
+            sectionTemplate = grunt.file.read 'theme/templates/_section.html'
+            slides = grunt.file.readJSON 'slides/list.json'
+
+            html = grunt.template.process indexTemplate, data:
+                slides:
+                    slides
+                section: (slide) ->
+                    grunt.template.process sectionTemplate, data:
+                        slide:
+                            slide
+            grunt.file.write 'index.html', html
+
+    grunt.registerTask 'test',
+        '*Lint* javascript and coffee files.', [
+            'coffeelint'
+            'jshint'
+        ]
+
+    grunt.registerTask 'server',
+        'Run presentation locally and start watch process (living document).', [
+            'buildIndex'
+            'connect:livereload'
+            'watch'
+        ]
+
+    grunt.registerTask 'dist',
+        'Save presentation files to *public* directory.', [
+            'test'
+            'buildIndex'
+            'copy'
+        ]
+
+    # Define default task.
+    grunt.registerTask 'default', [
+        'test'
+        'server'
+    ]
diff --git a/2019/template/package.json b/2019/template/package.json
deleted file mode 120000
index d1ec8ef11915f84a0b212463f1d1356183f40e09..0000000000000000000000000000000000000000
--- a/2019/template/package.json
+++ /dev/null
@@ -1 +0,0 @@
-../../components/package.json
\ No newline at end of file
diff --git a/2019/template/package.json b/2019/template/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c7507c648bb3fbfd21d71b56867c504c96d6d4e
--- /dev/null
+++ b/2019/template/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "template",
+  "version": "0.0.1",
+  "private": true,
+  "devDependencies": {
+    "grunt": "~0.4.1",
+    "grunt-coffeelint": "0.0.7",
+    "grunt-contrib-connect": "~0.5.0",
+    "grunt-contrib-copy": "~0.4.1",
+    "grunt-contrib-jshint": "~0.7.0",
+    "grunt-contrib-sass": "^1.0.0",
+    "grunt-contrib-watch": "~0.5.3",
+    "grunt-gh-pages": "~0.9.0",
+    "load-grunt-tasks": "~0.2.0"
+  },
+  "engines": {
+    "node": ">=0.8.0"
+  },
+  "scripts": {
+    "test": "grunt test"
+  }
+}
diff --git a/2019/template/theme b/2019/template/theme
index eac764853d4780fc8b26bb61071eb7578fdbc91f..c825a7e2c4319bb3364b86200faae29d75cd84c5 120000
--- a/2019/template/theme
+++ b/2019/template/theme
@@ -1 +1 @@
-../../components/theme
\ No newline at end of file
+../../theme
\ No newline at end of file
diff --git a/components/Gruntfile.coffee b/components/Gruntfile.coffee
deleted file mode 100644
index 2207935adfa3592c494261f78c85d7c16d9d001f..0000000000000000000000000000000000000000
--- a/components/Gruntfile.coffee
+++ /dev/null
@@ -1,130 +0,0 @@
-# Generated on 2013-11-27 using generator-reveal 0.3.2
-module.exports = (grunt) ->
-
-    grunt.loadNpmTasks 'grunt-gh-pages'
-
-    grunt.initConfig
-
-        "gh-pages":
-            "gh-pages":
-                options:
-                    base: "dist"
-                src: [ '**' ]
-
-        watch:
-
-            livereload:
-                options:
-                    livereload: true
-                files: [
-                    'index.html'
-                    'slides/*.md'
-                    'slides/*.html'
-                    'theme/js/*.js'
-                ]
-
-            index:
-                files: [
-                    'theme/templates/_index.html'
-                    'theme/templates/_section.html'
-                    'slides/list.json'
-                ]
-                tasks: ['buildIndex']
-
-            coffeelint:
-                files: ['Gruntfile.coffee']
-                tasks: ['coffeelint']
-
-            jshint:
-                files: ['theme/js/*.js']
-                tasks: ['jshint']
-
-        connect:
-
-            livereload:
-                options:
-                    port: 9000
-                    # Change hostname to '0.0.0.0' to access
-                    # the server from outside.
-                    hostname: 'localhost'
-                    base: '.'
-                    open: true
-                    livereload: true
-
-        coffeelint:
-
-            options:
-                indentation:
-                    value: 4
-
-            all: ['Gruntfile.coffee']
-
-        jshint:
-
-            all: ['theme/js/*.js']
-
-        copy:
-
-            dist:
-                files: [{
-                    expand: true
-                    src: [
-                        'slides/**'
-                        'theme/**'
-                        'theme/css/**'
-                        'theme/js/**'
-                        'slides/img/**'
-                    ]
-                    dest: 'public/'
-                },{
-                    expand: true
-                    src: ['index.html']
-                    dest: 'public/'
-                    filter: 'isFile'
-                }]
-
-
-    # Load all grunt tasks.
-    require('load-grunt-tasks')(grunt)
-
-    grunt.registerTask 'buildIndex',
-        'Build theme/templates/_index.html and slides/list.json.',
-        ->
-            indexTemplate = grunt.file.read 'theme/templates/_index.html'
-            sectionTemplate = grunt.file.read 'theme/templates/_section.html'
-            slides = grunt.file.readJSON 'slides/list.json'
-
-            html = grunt.template.process indexTemplate, data:
-                slides:
-                    slides
-                section: (slide) ->
-                    grunt.template.process sectionTemplate, data:
-                        slide:
-                            slide
-            grunt.file.write 'index.html', html
-
-    grunt.registerTask 'test',
-        '*Lint* javascript and coffee files.', [
-            'coffeelint'
-            'jshint'
-        ]
-
-    grunt.registerTask 'server',
-        'Run presentation locally and start watch process (living document).', [
-            'buildIndex'
-            'connect:livereload'
-            'watch'
-        ]
-
-    grunt.registerTask 'dist',
-        'Save presentation files to *public* directory.', [
-            'test'
-            'buildIndex'
-            'copy'
-        ]
-
-    # Define default task.
-    grunt.registerTask 'default', [
-        'test'
-        'server'
-    ]
diff --git a/components/package.json b/components/package.json
deleted file mode 100644
index 5c7507c648bb3fbfd21d71b56867c504c96d6d4e..0000000000000000000000000000000000000000
--- a/components/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "name": "template",
-  "version": "0.0.1",
-  "private": true,
-  "devDependencies": {
-    "grunt": "~0.4.1",
-    "grunt-coffeelint": "0.0.7",
-    "grunt-contrib-connect": "~0.5.0",
-    "grunt-contrib-copy": "~0.4.1",
-    "grunt-contrib-jshint": "~0.7.0",
-    "grunt-contrib-sass": "^1.0.0",
-    "grunt-contrib-watch": "~0.5.3",
-    "grunt-gh-pages": "~0.9.0",
-    "load-grunt-tasks": "~0.2.0"
-  },
-  "engines": {
-    "node": ">=0.8.0"
-  },
-  "scripts": {
-    "test": "grunt test"
-  }
-}
diff --git a/components/theme/css/style.css b/theme/css/style.css
similarity index 100%
rename from components/theme/css/style.css
rename to theme/css/style.css
diff --git a/components/theme/img/LCSB_short_small_4c_cropped.svg b/theme/img/LCSB_short_small_4c_cropped.svg
similarity index 100%
rename from components/theme/img/LCSB_short_small_4c_cropped.svg
rename to theme/img/LCSB_short_small_4c_cropped.svg
diff --git a/components/theme/img/University-of-Luxembourg-Fr-01.svg b/theme/img/University-of-Luxembourg-Fr-01.svg
similarity index 100%
rename from components/theme/img/University-of-Luxembourg-Fr-01.svg
rename to theme/img/University-of-Luxembourg-Fr-01.svg
diff --git a/components/theme/img/lcsb_bg.png b/theme/img/lcsb_bg.png
similarity index 100%
rename from components/theme/img/lcsb_bg.png
rename to theme/img/lcsb_bg.png
diff --git a/components/theme/reveal.js b/theme/reveal.js
similarity index 100%
rename from components/theme/reveal.js
rename to theme/reveal.js
diff --git a/components/theme/templates/_index.html b/theme/templates/_index.html
similarity index 100%
rename from components/theme/templates/_index.html
rename to theme/templates/_index.html
diff --git a/components/theme/templates/_section.html b/theme/templates/_section.html
similarity index 100%
rename from components/theme/templates/_section.html
rename to theme/templates/_section.html