diff --git a/app/layout/centrallayout.cpp b/app/layout/centrallayout.cpp
index 2c248ec0a..907299a64 100644
--- a/app/layout/centrallayout.cpp
+++ b/app/layout/centrallayout.cpp
@@ -251,6 +251,24 @@ Latte::View *CentralLayout::lastConfigViewFor()
     }
 }
 
+Data::Layout CentralLayout::data() const
+{
+    Data::Layout cdata;
+
+    cdata.name = name();
+    cdata.icon = icon();
+    cdata.backgroundStyle = backgroundStyle();
+    cdata.color = color();
+    cdata.background = customBackground();
+    cdata.textColor = customTextColor();
+    cdata.isLocked = !isWritable();
+    cdata.isShownInMenu = showInMenu();
+    cdata.hasDisabledBorders = disableBordersForMaximizedWindows();
+    cdata.activities = activities();
+
+    return cdata;
+}
+
 void CentralLayout::loadConfig()
 {
     m_disableBordersForMaximizedWindows = m_layoutGroup.readEntry("disableBordersForMaximizedWindows", false);
diff --git a/app/layout/centrallayout.h b/app/layout/centrallayout.h
index db1de1074..b8cda0383 100644
--- a/app/layout/centrallayout.h
+++ b/app/layout/centrallayout.h
@@ -23,6 +23,7 @@
 
 // local
 #include "genericlayout.h"
+#include "../data/layoutdata.h"
 
 // Qt
 #include <QObject>
@@ -83,6 +84,7 @@ public:
     int viewsCount() const override;
 
     Layout::Type type() const override;
+    Data::Layout data() const;
 
     void setLastConfigViewFor(Latte::View *view) override;
     Latte::View *lastConfigViewFor() override;
diff --git a/app/templates/templatesmanager.cpp b/app/templates/templatesmanager.cpp
index 51f5664ea..28ecb3ccf 100644
--- a/app/templates/templatesmanager.cpp
+++ b/app/templates/templatesmanager.cpp
@@ -19,6 +19,9 @@
 
 #include "templatesmanager.h"
 
+// local
+#include "../layout/centrallayout.h"
+
 // Qt
 #include <QDir>
 
@@ -46,7 +49,20 @@ void Manager::init()
     QStringList systemLayoutTemplates = systemTemplatesDir.entryList(filter, QDir::Files | QDir::NoSymLinks);
 
     for (int i=0; i<systemLayoutTemplates.count(); ++i) {
-        qDebug() << "System layout template : " << systemLayoutTemplates[i];
+        QString systemTemplatePath = systemTemplatesDir.path() + "/" + systemLayoutTemplates[i];
+        if (!m_layoutTemplates.containsId(systemTemplatePath)) {
+            CentralLayout layouttemplate(this, systemTemplatePath);
+
+            Data::Layout tdata = layouttemplate.data();
+            tdata.isTemplate = true;
+
+            if (tdata.name == DEFAULTLAYOUTTEMPLATENAME || tdata.name == EMPTYLAYOUTTEMPLATENAME) {
+                QByteArray templateNameChars = tdata.name.toUtf8();
+                tdata.name = i18n(templateNameChars);
+            }
+
+            m_layoutTemplates << tdata;
+        }
     }
 }
 
diff --git a/app/templates/templatesmanager.h b/app/templates/templatesmanager.h
index 32fe2e644..6e8a12bc1 100644
--- a/app/templates/templatesmanager.h
+++ b/app/templates/templatesmanager.h
@@ -23,6 +23,7 @@
 // local
 #include "../lattecorona.h"
 #include "../data/layoutdata.h"
+#include "../data/layoutstable.h"
 
 // Qt
 #include <QObject>
@@ -53,7 +54,8 @@ private:
 
 private:
     Latte::Corona *m_corona;
-    QList<Data::Layout> m_layoutTemplates;
+
+    Data::LayoutsTable m_layoutTemplates;
 
 };