diff --git a/briar-gtk/briar_gtk/action.py b/briar-gtk/briar_gtk/action.py
new file mode 100644
index 0000000000000000000000000000000000000000..d2fc7c9349978bf7fea04e1618579e0fe78756b1
--- /dev/null
+++ b/briar-gtk/briar_gtk/action.py
@@ -0,0 +1,14 @@
+# Copyright (c) 2020 Nico Alt
+# SPDX-License-Identifier: AGPL-3.0-only
+# License-Filename: LICENSE.md
+
+from gi.repository import Gio
+
+
+class Actions:
+
+    # pylint: disable=no-member
+    def _setup_action(self, key, parameter, callback):
+        action = Gio.SimpleAction.new(key, parameter)
+        action.connect("activate", callback)
+        self.add_action(action)
diff --git a/briar-gtk/briar_gtk/actions/application.py b/briar-gtk/briar_gtk/actions/application.py
index 56baf547e8c52347f108fe32ca13bef25c961689..afec02e521f678c6c5399f2b5e990d3ca46a3750 100644
--- a/briar-gtk/briar_gtk/actions/application.py
+++ b/briar-gtk/briar_gtk/actions/application.py
@@ -6,22 +6,22 @@
 # Initial version based on GNOME Lollypop
 # https://gitlab.gnome.org/World/lollypop/blob/1.2.20/lollypop/application_actions.py
 
-from gi.repository import Gio
+from briar_gtk.action import Actions
 
 
 # pylint: disable=too-few-public-methods
-class ApplicationActions:
+class ApplicationActions(Actions):
 
     def __init__(self):
         self._setup_actions()
 
-    # pylint: disable=no-member
     def _setup_actions(self):
+        self._setup_quit_action()
 
-        quit_action = Gio.SimpleAction.new("quit", None)
-        quit_action.connect("activate", self._quit)
+    # 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.add_action(quit_action)
 
     # pylint: disable=unused-argument
     def _quit(self, action, parameter):
diff --git a/briar-gtk/briar_gtk/actions/window.py b/briar-gtk/briar_gtk/actions/window.py
index 7d3fd36d4be656db6d8b952a6cc1862df2e5806e..4ac69506247699cd3d422b76174e14ee7da7f0f9 100644
--- a/briar-gtk/briar_gtk/actions/window.py
+++ b/briar-gtk/briar_gtk/actions/window.py
@@ -6,40 +6,38 @@
 # Initial version based on GNOME Lollypop
 # https://gitlab.gnome.org/World/lollypop/blob/1.2.20/lollypop/application_actions.py
 
-from gi.repository import Gio, GLib
+from gi.repository import GLib
 
+from briar_gtk.action import Actions
 from briar_gtk.containers.main_window import MainWindowContainer
 from briar_gtk.define import APP
 
 
 # pylint: disable=too-few-public-methods
-class WindowActions:
+class WindowActions(Actions):
 
     def __init__(self):
         self._setup_actions()
 
-    # pylint: disable=no-member
     def _setup_actions(self):
-        back_to_sidebar_action = Gio.SimpleAction.new(
-            "back-to-sidebar", None)
-        back_to_sidebar_action.connect("activate", self._back_to_sidebar)
+        self._setup_back_to_sidebar_action()
+        self._setup_open_about_page_action()
+        self._setup_open_add_contact_action()
+        self._setup_open_private_chat_action()
+
+    def _setup_back_to_sidebar_action(self):
+        self._setup_action("back-to-sidebar", None, self._back_to_sidebar)
         APP().set_accels_for_action("win.back-to-sidebar", ["<Ctrl>w"])
-        self.add_action(back_to_sidebar_action)
-
-        open_add_contact_action = Gio.SimpleAction.new(
-            "open-add-contact", None)
-        open_add_contact_action.connect("activate", self._open_add_contact)
-        self.add_action(open_add_contact_action)
-
-        open_about_page_action = Gio.SimpleAction.new(
-            "open-about-page", None)
-        open_about_page_action.connect("activate", self._open_about_page)
-        self.add_action(open_about_page_action)
-
-        open_private_chat_action = Gio.SimpleAction.new(
-            "open-private-chat", GLib.VariantType.new("i"))
-        open_private_chat_action.connect("activate", self._open_private_chat)
-        self.add_action(open_private_chat_action)
+
+    def _setup_open_about_page_action(self):
+        self._setup_action("open-about-page", None, self._open_about_page)
+
+    def _setup_open_add_contact_action(self):
+        self._setup_action("open-add-contact", None, self._open_add_contact)
+
+    def _setup_open_private_chat_action(self):
+        self._setup_action("open-private-chat", GLib.VariantType.new("i"),
+                           self._open_private_chat)
 
     # pylint: disable=unused-argument
     def _back_to_sidebar(self, action, parameter):