diff --git a/briar-gtk/briar_gtk/actions/actions.py b/briar-gtk/briar_gtk/actions/actions.py
index d2fc7c9349978bf7fea04e1618579e0fe78756b1..4b34067cca0e924b0b133e6d5916386040227972 100644
--- a/briar-gtk/briar_gtk/actions/actions.py
+++ b/briar-gtk/briar_gtk/actions/actions.py
@@ -5,10 +5,24 @@
 from gi.repository import Gio
 
 
+# pylint: disable=too-few-public-methods
 class Actions:
 
-    # pylint: disable=no-member
-    def _setup_action(self, key, parameter, callback):
+    def __init__(self, widget):
+        self.widget = widget
+
+    def _create_action(self, key, parameter, callback):
         action = Gio.SimpleAction.new(key, parameter)
         action.connect("activate", callback)
-        self.add_action(action)
+        return action
+
+    def _setup_action(self, key, parameter, callback):
+        action = self._create_action(key, parameter, callback)
+        self.actions.add_action(action)
+
+    def _setup_global_action_group(self):
+        self.actions = self.widget
+
+    def _setup_simple_action_group(self, name):
+        self.actions = Gio.SimpleActionGroup.new()
+        self.widget.insert_action_group(name, self.actions)
diff --git a/briar-gtk/briar_gtk/actions/application.py b/briar-gtk/briar_gtk/actions/application.py
index 93a85eefd36e34f7a5aba5121736f10decebf288..50b9e9615b9fb048e0584754c81167d898fc6aad 100644
--- a/briar-gtk/briar_gtk/actions/application.py
+++ b/briar-gtk/briar_gtk/actions/application.py
@@ -12,17 +12,18 @@ from briar_gtk.actions.actions import Actions
 # pylint: disable=too-few-public-methods
 class ApplicationActions(Actions):
 
-    def __init__(self):
+    def __init__(self, widget):
+        super().__init__(widget)
+        self._setup_global_action_group()
         self._setup_actions()
 
     def _setup_actions(self):
         self._setup_quit_action()
 
-    # pylint: disable=no-member
     def _setup_quit_action(self):
         self._setup_action("quit", None, self._quit)
-        self.set_accels_for_action("app.quit", ["<Ctrl>q"])
+        self.widget.set_accels_for_action("app.quit", ["<Ctrl>q"])
 
     # pylint: disable=unused-argument
     def _quit(self, action, parameter):
-        self.quit()
+        self.widget.quit()
diff --git a/briar-gtk/briar_gtk/actions/window.py b/briar-gtk/briar_gtk/actions/window.py
index 66ab67de5eed87a754bfddfc89a58ba240984aa1..1ffc61715d4febe4caa7787b68f04c37126b2f2f 100644
--- a/briar-gtk/briar_gtk/actions/window.py
+++ b/briar-gtk/briar_gtk/actions/window.py
@@ -16,7 +16,9 @@ from briar_gtk.define import APP
 # pylint: disable=too-few-public-methods
 class WindowActions(Actions):
 
-    def __init__(self):
+    def __init__(self, widget):
+        super().__init__(widget)
+        self._setup_global_action_group()
         self._setup_actions()
 
     def _setup_actions(self):
@@ -41,17 +43,17 @@ class WindowActions(Actions):
 
     # pylint: disable=unused-argument
     def _back_to_sidebar(self, action, parameter):
-        if isinstance(self.current_container, MainWindowContainer):
-            self.current_container.show_sidebar()
+        if isinstance(self.widget.current_container, MainWindowContainer):
+            self.widget.current_container.show_sidebar()
 
     # pylint: disable=unused-argument
     def _open_about_page(self, action, parameter):
-        self.current_container.open_about_page()
+        self.widget.current_container.open_about_page()
 
     # pylint: disable=unused-argument
     def _open_add_contact(self, action, parameter):
-        self.show_add_contact_container()
+        self.widget.show_add_contact_container()
 
     # pylint: disable=unused-argument
     def _open_private_chat(self, action, contact_id):
-        self.current_container.open_private_chat(contact_id.get_int32())
+        self.widget.current_container.open_private_chat(contact_id.get_int32())
diff --git a/briar-gtk/briar_gtk/application.py b/briar-gtk/briar_gtk/application.py
index 39e80ecfe7c2dbada6607cf83ac4bb1105756c19..1dc959d37a4407c44d6a71f89f42a4249a4c2ef3 100644
--- a/briar-gtk/briar_gtk/application.py
+++ b/briar-gtk/briar_gtk/application.py
@@ -20,12 +20,12 @@ from briar_gtk.define import APPLICATION_STYLING_PATH, BRIAR_HEADLESS_JAR
 from briar_gtk.window import Window
 
 
-class Application(Gtk.Application, ApplicationActions):
+class Application(Gtk.Application):
 
     def __init__(self):
         Application._set_application_name(APPLICATION_NAME)
         super().__init__(application_id=APPLICATION_ID)
-        ApplicationActions.__init__(self)
+        ApplicationActions(self)
 
     # pylint: disable=arguments-differ
     def do_startup(self):
diff --git a/briar-gtk/briar_gtk/window.py b/briar-gtk/briar_gtk/window.py
index f45998ab4fce2ee2c0ba9212e4dcbf68e682f5cf..851664c80c476dd145d67ff3bd50ff7e4000298e 100644
--- a/briar-gtk/briar_gtk/window.py
+++ b/briar-gtk/briar_gtk/window.py
@@ -11,13 +11,13 @@ from briar_gtk.containers.startup import StartupContainer
 from briar_gtk.define import APP, APPLICATION_ID, APPLICATION_NAME
 
 
-class Window(Gtk.ApplicationWindow, WindowActions):
+class Window(Gtk.ApplicationWindow):
 
     DEFAULT_WINDOW_SIZE = (900, 600)
 
     def __init__(self):
         self._initialize_gtk_application_window()
-        WindowActions.__init__(self)
+        WindowActions(self)
         self._setup_content()
 
     def show_main_container(self):