diff --git a/.ci/develop.sh b/.ci/develop.sh
new file mode 100644
index 0000000000000000000000000000000000000000..84cbd1e1d557114b4c2bd80cc94de92f2aab6bd0
--- /dev/null
+++ b/.ci/develop.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+if  [[ $1 = "-i" ]]; then
+    echo "Install from scratch"
+
+    npm install -g npm@latest grunt-cli generator-reveal
+    npm install
+
+    git submodule update --init
+else
+    echo "Install already performed. Only watching."
+fi
+
+grunt server
+
diff --git a/Gruntfile.coffee b/2019/template/Gruntfile.coffee
similarity index 100%
rename from Gruntfile.coffee
rename to 2019/template/Gruntfile.coffee
diff --git a/package.json b/2019/template/package.json
similarity index 100%
rename from package.json
rename to 2019/template/package.json
diff --git a/slides/img/favicon.ico b/2019/template/slides/img/favicon.ico
similarity index 100%
rename from slides/img/favicon.ico
rename to 2019/template/slides/img/favicon.ico
diff --git a/slides/img/r3-training-logo.png b/2019/template/slides/img/r3-training-logo.png
similarity index 100%
rename from slides/img/r3-training-logo.png
rename to 2019/template/slides/img/r3-training-logo.png
diff --git a/slides/index.md b/2019/template/slides/index.md
similarity index 68%
rename from slides/index.md
rename to 2019/template/slides/index.md
index 67717c6404806305b3e3ae23f7ce72d85ab66ed6..8c711c92e17269443007c5f4b80220a97b3e7dc4 100644
--- a/slides/index.md
+++ b/2019/template/slides/index.md
@@ -3,15 +3,15 @@
 #### Month XYth, 2019
 
 <div style="top: 6em; left: 0%; position: absolute;">
-    <img src="slides/img/lcsb_bg.png">
+    <img src="theme/img/lcsb_bg.png">
 </div>
 
 <div style="top: 15em; left: 60%; position: absolute;">
 <h3><b>A catchy title</b></h3>
 </div>
 
-<div style="top: 25em; left: 60%; position: fixed; width: 50%;">
-**Firstname LastName, Title**<br>
+<div style="top: 24em; left: 60%; position: fixed; width: 50%;">
+<b>Firstname LastName, Title</b><br>
 firstname.lastname@uni.lu<br>
 <i>Luxembourg Centre for Systems Biomedicine</i>
 </div>
diff --git a/slides/list.json b/2019/template/slides/list.json
similarity index 100%
rename from slides/list.json
rename to 2019/template/slides/list.json
diff --git a/slides/overview.md b/2019/template/slides/overview.md
similarity index 100%
rename from slides/overview.md
rename to 2019/template/slides/overview.md
diff --git a/slides/thanks.md b/2019/template/slides/thanks.md
similarity index 100%
rename from slides/thanks.md
rename to 2019/template/slides/thanks.md
diff --git a/2019/template/theme b/2019/template/theme
new file mode 120000
index 0000000000000000000000000000000000000000..c825a7e2c4319bb3364b86200faae29d75cd84c5
--- /dev/null
+++ b/2019/template/theme
@@ -0,0 +1 @@
+../../theme
\ No newline at end of file
diff --git a/README.md b/README.md
index 35ed38cabedb5a78f7f62d2aff575bf4afd6dd3e..e1e170d77b9f7d8af20a7180ed1264c1af7d61a7 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,26 @@
 # Presentation slides
 
-## How to get started
+This repository contains all presentations related to R3.
+
+# How to get started
+
+Copy the presentation template folder into the folder of the current year and name it
+according to your preference, i.e. `YYYY-MM-DD_myPresentation`.
 
 ```bash
+$ cd YYYY-MM-DD_myPresentation
 $ npm install -g npm@latest grunt-cli generator-reveal
 $ npm install
 ```
 
-## How to develop locally
+# How to develop locally
 
 ```bash
 $ grunt server
 ```
 
-## How to publish
+# How to publish
 
 ```bash
-grunt dist
+$ grunt dist
 ```
diff --git a/slides/img/logoLCSB.png b/slides/img/logoLCSB.png
deleted file mode 100644
index 1190f0a8673684505a90b954965f2854642454d4..0000000000000000000000000000000000000000
Binary files a/slides/img/logoLCSB.png and /dev/null differ
diff --git a/theme/css/lcsb.css b/theme/css/lcsb.css
deleted file mode 100644
index 3f8029612b24b23d4ddebebc9337239843c2b8e5..0000000000000000000000000000000000000000
--- a/theme/css/lcsb.css
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * A simple theme for reveal.js presentations, similar
- * to the default theme. The accent color is darkblue.
- *
- * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
- * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
- */
- .reveal a:not(.image) {
-  line-height: 1.3em; }
-
-/*********************************************
- * GLOBAL STYLES
- *********************************************/
-body {
-  background: #fff;
-  background-color: #fff; }
-
-.reveal {
-  font-family: "Verdana", sans-serif;
-  font-size: 32px;
-  font-weight: 200;
-  letter-spacing: -0.02em;
-  color: #000; }
-
-::selection {
-  color: #fff;
-  background: rgba(0, 0, 0, 0.99);
-  text-shadow: none; }
-
-/*********************************************
- * HEADERS
- *********************************************/
-.reveal h1,
-.reveal h2,
-.reveal h3,
-.reveal h4,
-.reveal h5,
-.reveal h6 {
-  margin: -80px 0 20px 20px;
-  color: #00a3df;
-  font-family: "Verdana", sans-serif;
-  line-height: 1.3em;
-  letter-spacing: 0em;
-  text-transform: none;
-  text-shadow: none; }
-
-.reveal h1 {
-  text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
-
-/*********************************************
- * LINKS
- *********************************************/
-.reveal a:not(.image) {
-  color: #000000;
-  text-decoration: none;
-  -webkit-transition: color .15s ease;
-  -moz-transition: color .15s ease;
-  -ms-transition: color .15s ease;
-  -o-transition: color .15s ease;
-  transition: color .15s ease; }
-
-.reveal a:not(.image):hover {
-  color: #333333;
-  text-shadow: none;
-  border: none; }
-
-.reveal .roll span:after {
-  color: #fff;
-  background: black; }
-
-/*********************************************
- * IMAGES
- *********************************************/
-.reveal section img {
-  margin: 15px 0px;
-  background: rgba(255, 255, 255, 0.12);
-  border: 4px solid #000;
-  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-  -webkit-transition: all .2s linear;
-  -moz-transition: all .2s linear;
-  -ms-transition: all .2s linear;
-  -o-transition: all .2s linear;
-  transition: all .2s linear; }
-
-.reveal a:hover img {
-  background: rgba(255, 255, 255, 0.2);
-  border-color: #000000;
-  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
-
-/*********************************************
- * NAVIGATION CONTROLS
- *********************************************/
-.reveal .controls div.navigate-left,
-.reveal .controls div.navigate-left.enabled {
-  border-right-color: #000000; }
-
-.reveal .controls div.navigate-right,
-.reveal .controls div.navigate-right.enabled {
-  border-left-color: #000000; }
-
-.reveal .controls div.navigate-up,
-.reveal .controls div.navigate-up.enabled {
-  border-bottom-color: #000000; }
-
-.reveal .controls div.navigate-down,
-.reveal .controls div.navigate-down.enabled {
-  border-top-color: #000000; }
-
-.reveal .controls div.navigate-left.enabled:hover {
-  border-right-color: #333333; }
-
-.reveal .controls div.navigate-right.enabled:hover {
-  border-left-color: #333333; }
-
-.reveal .controls div.navigate-up.enabled:hover {
-  border-bottom-color: #333333; }
-
-.reveal .controls div.navigate-down.enabled:hover {
-  border-top-color: #333333; }
-
-/*********************************************
- * PROGRESS BAR
- *********************************************/
-.reveal .progress {
-  background: rgba(0, 0, 0, 0.2); }
-
-.reveal .progress span {
-  background: #000000;
-  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
-  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
-
-/*# sourceMappingURL=lcsb.css.map */
diff --git a/theme/css/style.css b/theme/css/style.css
index 6f800942d14a97d449f48cbc69fe88f5e7f2d5af..f41990f864f92b549903f6afcda8b01ccf0d396f 100644
--- a/theme/css/style.css
+++ b/theme/css/style.css
@@ -1,53 +1,127 @@
-.reveal pre {
-  font-size: 0.8em;  /* Make the commands bigger */
-  box-shadow: 3px 4px 10px rgba(0,0,0,0.8);
-  width: 120%;
-  position: relative;
-  left: -10%;
-}
-.reveal pre code {
-  background-color: #333333;
-  padding: 0.5em;
+ .reveal a:not(.image) {
+  line-height: 1.3em; }
+
+.reveal {
+  color: #1e497d;
+  font-family: Lato;
+  font-weight: normal;
 }
 
-.reveal section img.as-is {
-  background: none;
-  border: none;
-  box-shadow: none
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: #fff;
+  background-color: #fff; }
+
+.reveal .slides>section,
+.reveal .slides>section>section {
+  font-size: 32px;
+  vertical-align: top;
+  position: absolute;
+  top: 10%!important;
+  font-family: Lato;
+  position: absolute;
+  top: 0;
+  left: 0;
+  vertical-align: top;
+  line-height: 1.5em;
 }
-.reveal section img {
-  margin: 10px 0px;
-  background: rgba(255, 255, 255, 0.12);
-  border: 0px solid #000;
-  box-shadow: 0 0 0px rgba(0, 0, 0, 0.15);
-  -webkit-transition: all .2s linear;
-  -moz-transition: all .2s linear;
-  -ms-transition: all .2s linear;
-  -o-transition: all .2s linear;
-  transition: all .2s linear; }
 
- .reveal h2 {
+::selection {
+  color: #fff;
+  background: rgba(0, 0, 0, 0.99);
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: -80px 0 20px 20px;
+  color: #1e497d;
+  font-family: Lato;
+  line-height: 1.3em;
+  letter-spacing: 0em;
+  text-transform: none;
+  text-shadow: none; }
+
+.reveal h2 {
   color: #1e497d;
   font-family: Lato;
   font-size: 2em;
   }
-
 .reveal h3 {
     color: #000000;
     font-family: Lato;
     font-size: 2em;
 }
-
 .reveal h4 {
     color: #1e497d;
     font-family: Lato;
     font-size: 1em;
 }
 
-.reveal {
-  color: #1e497d;
-  font-family: Lato;
-  font-weight: normal;
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: #000000;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #333333;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: black; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+
+.reveal section img {
+  margin: 10px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 0px solid #000;
+  box-shadow: 0 0 0px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+/*********************************************
+ * CUSTOMIZATIONS
+ *********************************************/
+
+.reveal pre {
+  font-size: 0.8em;  /* Make the commands bigger */
+  box-shadow: 3px 4px 10px rgba(0,0,0,0.8);
+  width: 120%;
+  position: relative;
+  left: -10%;
+}
+.reveal pre code {
+  background-color: #333333;
+  padding: 0.5em;
+}
+
+.reveal section img.as-is {
+  background: none;
+  border: none;
+  box-shadow: none
 }
 
 .present {
@@ -58,6 +132,10 @@
   left: 0;
 }
 
+/*********************************************
+ * CONTROLS
+ *********************************************/
+
 .reveal .controls{
   display: none;
   position: fixed;
@@ -83,19 +161,4 @@
   z-index: 9999;
   left: 10px;
   bottom: 8px;
-}
-.slides {
-  font-family: Lato;
-  position: absolute;
-  top: 0;
-  left: 0;
-  vertical-align: top;
-}
-
-.reveal .slides>section,
-.reveal .slides>section>section {
-  vertical-align: top;
-  position: absolute;
-  top: 10%!important;
-  font-family: Lato;
 }
\ No newline at end of file
diff --git a/slides/img/LCSB_short_small_4c_cropped.svg b/theme/img/LCSB_short_small_4c_cropped.svg
similarity index 100%
rename from slides/img/LCSB_short_small_4c_cropped.svg
rename to theme/img/LCSB_short_small_4c_cropped.svg
diff --git a/slides/img/University-of-Luxembourg-Fr-01.svg b/theme/img/University-of-Luxembourg-Fr-01.svg
similarity index 100%
rename from slides/img/University-of-Luxembourg-Fr-01.svg
rename to theme/img/University-of-Luxembourg-Fr-01.svg
diff --git a/slides/img/lcsb_bg.png b/theme/img/lcsb_bg.png
similarity index 100%
rename from slides/img/lcsb_bg.png
rename to theme/img/lcsb_bg.png
diff --git a/theme/js/loadhtmlslides.js b/theme/js/loadhtmlslides.js
deleted file mode 100644
index 8f92a6ca7efd208b03d973d9ff60ce7d004553c2..0000000000000000000000000000000000000000
--- a/theme/js/loadhtmlslides.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// Modified from markdown.js from Hakim to handle external html files
-(function () {
-    /*jslint loopfunc: true, browser: true*/
-    /*globals alert*/
-    'use strict';
-
-    var querySlidingHtml = function () {
-        var sections = document.querySelectorAll('[data-html]'),
-            section, j, jlen;
-
-        for (j = 0, jlen = sections.length; j < jlen; j++) {
-            section = sections[j];
-
-            if (section.getAttribute('data-html').length) {
-
-                var xhr = new XMLHttpRequest(),
-                    url = section.getAttribute('data-html'),
-                    cb = function () {
-                        if (xhr.readyState === 4) {
-                            if (xhr.status >= 200 && xhr.status < 300) {
-                                section.innerHTML = xhr.responseText;
-                            } else {
-                                section.outerHTML = '<section data-state="alert">ERROR: The attempt to fetch ' + url + ' failed with the HTTP status ' + xhr.status + '. Check your browser\'s JavaScript console for more details.</p></section>';
-                            }
-                        }
-                    };
-
-                xhr.onreadystatechange = cb;
-
-                xhr.open('GET', url, false);
-                try {
-                    xhr.send();
-                } catch (e) {
-                    alert('Failed to get file' + url + '.' + e);
-                }
-            }
-        }
-    };
-
-    querySlidingHtml();
-})();
diff --git a/theme/templates/_index.html b/theme/templates/_index.html
index 0f9844e8a25c057df6202049d79e87b9f5317b61..9d3d69dc1b259fa9e6ae3437ac8594e6f95cd123 100644
--- a/theme/templates/_index.html
+++ b/theme/templates/_index.html
@@ -13,8 +13,6 @@
 
         <link rel="stylesheet" href="theme/reveal.js/css/reveal.css">
 
-        <link rel="stylesheet" href="theme/css/lcsb.css" id="theme">
-
         <link rel="stylesheet" href="theme/css/style.css">
 
         <!-- For syntax highlighting -->
@@ -52,10 +50,10 @@
                 <% }); %>
             </div>
             <div class="bottomLogoLeft">
-                <img src="slides/img/University-of-Luxembourg-Fr-01.svg" height="110px">
+                <img src="theme/img/University-of-Luxembourg-Fr-01.svg" height="110px">
             </div>
             <div class="bottomLogoRight">
-                    <img src="slides/img/LCSB_short_small_4c_cropped.svg" height="86px">
+                    <img src="theme/img/LCSB_short_small_4c_cropped.svg" height="86px">
             </div>
         </div>