diff --git a/meson.build b/meson.build
index e60def85b54a40c47846c39d3a777de16c7ab9e7..63ef097ca63326ba094d827ac6c2f9cb7f255a31 100644
--- a/meson.build
+++ b/meson.build
@@ -1,11 +1,12 @@
-project('briar-gtk',         version: '0.1.0',
+project(
+  'briar-gtk',
+  version: '0.1.0',
   meson_version: '>= 0.40.0',
 )
 
 i18n = import('i18n')
 
-
-subdir('data')
+subdir('res')
 subdir('src')
 subdir('po')
 
diff --git a/data/app.briar.gtk.appdata.xml.in b/res/app.briar.gtk.appdata.xml.in
similarity index 100%
rename from data/app.briar.gtk.appdata.xml.in
rename to res/app.briar.gtk.appdata.xml.in
diff --git a/data/app.briar.gtk.desktop.in b/res/app.briar.gtk.desktop.in
similarity index 100%
rename from data/app.briar.gtk.desktop.in
rename to res/app.briar.gtk.desktop.in
diff --git a/data/app.briar.gtk.gschema.xml b/res/app.briar.gtk.gschema.xml
similarity index 100%
rename from data/app.briar.gtk.gschema.xml
rename to res/app.briar.gtk.gschema.xml
diff --git a/data/meson.build b/res/meson.build
similarity index 81%
rename from data/meson.build
rename to res/meson.build
index 23e11ab5bb017004c9f94c4ccfa24236b46e5185..a8cb8c3e1bb4eb5e830c8fc4ea2ccbc79c964c50 100644
--- a/data/meson.build
+++ b/res/meson.build
@@ -38,4 +38,14 @@ if compile_schemas.found()
   test('Validate schema file', compile_schemas,
     args: ['--strict', '--dry-run', meson.current_source_dir()]
   )
-endif
\ No newline at end of file
+endif
+
+pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
+gnome = import('gnome')
+
+gnome.compile_resources('briar-gtk',
+  'ui/gresource.xml',
+  gresource_bundle: true,
+  install: true,
+  install_dir: pkgdatadir,
+)
\ No newline at end of file
diff --git a/src/briar-gtk.gresource.xml b/res/ui/gresource.xml
similarity index 80%
rename from src/briar-gtk.gresource.xml
rename to res/ui/gresource.xml
index 3479e86d3cedfcd6138bf92ce2c0e91358693170..247afd5acc43be2f24f41511210367d8dd976923 100644
--- a/src/briar-gtk.gresource.xml
+++ b/res/ui/gresource.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
   <gresource prefix="/app/briar/gtk">
-    <file>window.ui</file>
+    <file>ui/setup.ui</file>
   </gresource>
 </gresources>
diff --git a/src/window.ui b/res/ui/setup.ui
similarity index 91%
rename from src/window.ui
rename to res/ui/setup.ui
index f57dfac9f06cf0c8522e6bb68c4fc51d7b420a42..59da619951063815cff4cd558a8ba79485bf584b 100644
--- a/src/window.ui
+++ b/res/ui/setup.ui
@@ -28,7 +28,7 @@
             <property name="row_spacing">6</property>
             <property name="column_spacing">12</property>
             <child>
-              <object class="GtkLabel" id="username-label">
+              <object class="GtkLabel" id="username_label">
                 <property name="visible">True</property>
                 <property name="halign">center</property>
                 <property name="label" translatable="yes">Nickname</property>
@@ -39,7 +39,7 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="username">
+              <object class="GtkEntry" id="username_entry">
                 <property name="visible">True</property>
                 <property name="placeholder_text" translatable="yes">Choose your nickname</property>
               </object>
@@ -49,7 +49,7 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="username-next">
+              <object class="GtkButton" id="username_next">
                 <property name="visible">True</property>
                 <property name="halign">center</property>
                 <property name="label" translatable="yes">Next</property>
@@ -69,7 +69,7 @@
             <property name="row_spacing">6</property>
             <property name="column_spacing">12</property>
             <child>
-              <object class="GtkLabel" id="password-label">
+              <object class="GtkLabel" id="password_label">
                 <property name="visible">True</property>
                 <property name="halign">center</property>
                 <property name="label" translatable="yes">Password</property>
@@ -80,7 +80,7 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="password">
+              <object class="GtkEntry" id="password_entry">
                 <property name="visible">True</property>
                 <property name="placeholder_text" translatable="yes">Choose your password</property>
               </object>
@@ -90,7 +90,7 @@
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="password_confirm">
+              <object class="GtkEntry" id="password_confirm_entry">
                 <property name="visible">True</property>
                 <property name="placeholder_text" translatable="yes">Confirm your password</property>
               </object>
@@ -100,7 +100,7 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="password-next">
+              <object class="GtkButton" id="password_next">
                 <property name="visible">True</property>
                 <property name="halign">center</property>
                 <property name="label" translatable="yes">Next</property>
@@ -118,3 +118,4 @@
   </template>
 </interface>
 
+
diff --git a/src/main.py b/src/main.py
index a2b5ec2e4a3dbe3e1accc15833eb12ba2ef5b675..96e76a502208c68bb4c4a7143a5038f01f83c9d3 100644
--- a/src/main.py
+++ b/src/main.py
@@ -22,7 +22,7 @@ gi.require_version('Gtk', '3.0')
 
 from gi.repository import Gtk, Gio
 
-from .window import BriarGtkWindow
+from .setup import BriarSetupWindow
 
 
 class Application(Gtk.Application):
@@ -33,7 +33,7 @@ class Application(Gtk.Application):
     def do_activate(self):
         win = self.props.active_window
         if not win:
-            win = BriarGtkWindow(application=self)
+            win = BriarSetupWindow(application=self)
         win.present()
 
 
diff --git a/src/meson.build b/src/meson.build
index 1551bbb5ba1c3402403848fbcc45fa0a823b391d..7faa3ba4cc0195e76d7112bcf7efe2d2d90b21b0 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,13 +1,5 @@
 pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
 moduledir = join_paths(pkgdatadir, 'briar_gtk')
-gnome = import('gnome')
-
-gnome.compile_resources('briar-gtk',
-  'briar-gtk.gresource.xml',
-  gresource_bundle: true,
-  install: true,
-  install_dir: pkgdatadir,
-)
 
 python3 = import('python3')
 
@@ -27,9 +19,9 @@ configure_file(
 
 briar_gtk_sources = [
   '__init__.py',
-  'gi_composites.py',
   'main.py',
-  'window.py',
+  'ui/gi_composites.py',
+  'ui/setup.py',
 ]
 
 install_data(briar_gtk_sources, install_dir: moduledir)
diff --git a/src/gi_composites.py b/src/ui/gi_composites.py
similarity index 100%
rename from src/gi_composites.py
rename to src/ui/gi_composites.py
diff --git a/src/window.py b/src/ui/setup.py
similarity index 93%
rename from src/window.py
rename to src/ui/setup.py
index 5a47da71c1ea6cec882e73f1b24a96ab30cd761a..58e37e773672d764015fc85f3aee3cab82da3b77 100644
--- a/src/window.py
+++ b/src/ui/setup.py
@@ -19,8 +19,8 @@ from gi.repository import Gtk
 from .gi_composites import GtkTemplate
 
 
-@GtkTemplate(ui='/app/briar/gtk/window.ui')
-class BriarGtkWindow(Gtk.ApplicationWindow):
+@GtkTemplate(ui='/app/briar/gtk/ui/setup.ui')
+class BriarSetupWindow(Gtk.ApplicationWindow):
     __gtype_name__ = 'BriarGtkWindow'
 
     username_grid = GtkTemplate.Child()