diff --git a/meson_post_install.py b/data/build_aux/meson_post_install.py
similarity index 100%
rename from meson_post_install.py
rename to data/build_aux/meson_post_install.py
diff --git a/ch.gnugen.Moody.appdata.xml b/data/ch.gnugen.Moody.appdata.xml
similarity index 100%
rename from ch.gnugen.Moody.appdata.xml
rename to data/ch.gnugen.Moody.appdata.xml
diff --git a/ch.gnugen.Moody.desktop b/data/ch.gnugen.Moody.desktop
similarity index 100%
rename from ch.gnugen.Moody.desktop
rename to data/ch.gnugen.Moody.desktop
diff --git a/ch.gnugen.Moody.gresources.xml b/data/ch.gnugen.Moody.gresources.xml
similarity index 100%
rename from ch.gnugen.Moody.gresources.xml
rename to data/ch.gnugen.Moody.gresources.xml
diff --git a/ch.gnugen.Moody.gschema.xml b/data/ch.gnugen.Moody.gschema.xml
similarity index 100%
rename from ch.gnugen.Moody.gschema.xml
rename to data/ch.gnugen.Moody.gschema.xml
diff --git a/media/EPFL-bi.svg b/data/media/EPFL-bi.svg
similarity index 100%
rename from media/EPFL-bi.svg
rename to data/media/EPFL-bi.svg
diff --git a/media/EPFL-black.svg b/data/media/EPFL-black.svg
similarity index 100%
rename from media/EPFL-black.svg
rename to data/media/EPFL-black.svg
diff --git a/media/EPFL.svg b/data/media/EPFL.svg
similarity index 100%
rename from media/EPFL.svg
rename to data/media/EPFL.svg
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000000000000000000000000000000000000..9f40f3e3d0de64ca3f25c45367daadba26852ad3
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,20 @@
+
+configure_file(
+  input: 'ch.gnugen.Moody.desktop',
+  output: 'ch.gnugen.Moody.desktop',
+  copy: true,
+  install: true,
+  install_dir: join_paths(get_option('datadir'), 'applications')
+)
+install_data('ch.gnugen.Moody.gschema.xml', install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas'))
+install_data('ch.gnugen.Moody.appdata.xml', install_dir: join_paths(get_option('datadir'), 'metainfo'))
+meson.add_install_script('build_aux/meson_post_install.py')
+
+gnome.compile_schemas(depend_files: 'ch.gnugen.Moody.gresources.xml')
+moody_resources = gnome.compile_resources(
+   'moody-resources',
+   'ch.gnugen.Moody.gresources.xml',
+   source_dir : ['ui', 'media'],
+   c_name: 'hdy',
+)
+
diff --git a/ui/gui-course.ui b/data/ui/gui-course.ui
similarity index 100%
rename from ui/gui-course.ui
rename to data/ui/gui-course.ui
diff --git a/ui/gui-pass-dialog.ui b/data/ui/gui-pass-dialog.ui
similarity index 100%
rename from ui/gui-pass-dialog.ui
rename to data/ui/gui-pass-dialog.ui
diff --git a/ui/gui-resource.ui b/data/ui/gui-resource.ui
similarity index 100%
rename from ui/gui-resource.ui
rename to data/ui/gui-resource.ui
diff --git a/ui/gui-week.ui b/data/ui/gui-week.ui
similarity index 100%
rename from ui/gui-week.ui
rename to data/ui/gui-week.ui
diff --git a/ui/gui-window.ui b/data/ui/gui-window.ui
similarity index 100%
rename from ui/gui-window.ui
rename to data/ui/gui-window.ui
diff --git a/ui/style.css b/data/ui/style.css
similarity index 100%
rename from ui/style.css
rename to data/ui/style.css
diff --git a/meson.build b/meson.build
index 7977027619f95fe0bf4a3ac7fcde89f5493db2ac..a352714f6330cc2ebfd755605ee317a70295fb5f 100644
--- a/meson.build
+++ b/meson.build
@@ -4,6 +4,8 @@ project('moody', 'c',
   meson_version: '>= 0.47.0',
 )
 
+gnome = import('gnome')
+
 root_inc = include_directories('.')
 src_inc = include_directories('src')
 
@@ -12,6 +14,8 @@ config_h.set_quoted('GETTEXT_PACKAGE', 'moody')
 #config_h.set_quoted('CACHE_ROOT', meson.source_root())
 config_h.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir')))
 
+subdir('data')
+
 configure_file(
   input: 'config.h.in',
   output: 'config.h',
@@ -61,6 +65,8 @@ test_c_args = [
   '-Wtype-limits',
   '-Wundef',
   '-Wunused-function',
+  #'-fsanitize=address',
+  #'-fsanitize=undefined',
   '-DGDK_DISABLE_DEPRECATED', '-DGTK_DISABLE_DEPRECATED',
 ]
 
@@ -87,8 +93,6 @@ add_project_arguments(
   language: 'c',
 )
 
-gnome = import('gnome')
-
 summary = [
   '',
   '------',
@@ -99,25 +103,6 @@ summary = [
 
 message('\n'.join(summary))
 
-configure_file(
-  input: 'ch.gnugen.Moody.desktop',
-  output: 'ch.gnugen.Moody.desktop',
-  copy: true,
-  install: true,
-  install_dir: join_paths(get_option('datadir'), 'applications')
-)
-install_data('ch.gnugen.Moody.gschema.xml', install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas'))
-install_data('ch.gnugen.Moody.appdata.xml', install_dir: join_paths(get_option('datadir'), 'metainfo'))
-meson.add_install_script('meson_post_install.py')
-
-gnome.compile_schemas(depend_files: 'ch.gnugen.Moody.gresources.xml')
-moody_resources = gnome.compile_resources(
-   'moody-resources',
-   'ch.gnugen.Moody.gresources.xml',
-   source_dir : ['ui', 'media'],
-   c_name: 'hdy',
-)
-
 moody_sources = [
   moody_resources,
   'src/moody.c',