diff --git a/gajim/gtk/const.py b/gajim/gtk/const.py
index 12f3bd6bc9dac00bc1b09b8c3e089ee681f80581..498259b29463ca39f214ed1c3e074021638b7767 100644
--- a/gajim/gtk/const.py
+++ b/gajim/gtk/const.py
@@ -128,4 +128,5 @@ def __str__(self):
     'Themes': 'gajim.gtk.themes',
     'AdvancedConfig': 'gajim.gtk.advanced_config',
     'CertificateDialog': 'gajim.gtk.dialogs',
+    'SubscriptionRequest': 'gajim.gtk.subscription_request',
 }
diff --git a/gajim/gtk/subscription_request.py b/gajim/gtk/subscription_request.py
index 79b4939e1c642583247b540e927e8587a62b62d5..367f5bf78c1e1c50d695cca87dc458acddd32aa5 100644
--- a/gajim/gtk/subscription_request.py
+++ b/gajim/gtk/subscription_request.py
@@ -24,7 +24,7 @@
 
 
 class SubscriptionRequest(Gtk.ApplicationWindow):
-    def __init__(self, jid, text, account, user_nick=None):
+    def __init__(self, account, jid, text, user_nick=None):
         Gtk.ApplicationWindow.__init__(self)
         self.set_name('SubscriptionRequest')
         self.set_application(app.app)
@@ -52,14 +52,6 @@ def __init__(self, jid, text, account, user_nick=None):
         self._ui.connect_signals(self)
         self.show_all()
 
-    def on_subscription_request_window_destroy(self, widget):
-        """
-        Close window
-        """
-        if self.jid in app.interface.instances[self.account]['sub_request']:
-            # Remove us from open windows
-            del app.interface.instances[self.account]['sub_request'][self.jid]
-
     def on_authorize_button_clicked(self, widget):
         """
         Accept the request
diff --git a/gajim/gui_interface.py b/gajim/gui_interface.py
index 85b5c5b896c94aca65caa04459be8ef5cfef87ba..5596e3423a85572444df29ffb048d708a33d5863 100644
--- a/gajim/gui_interface.py
+++ b/gajim/gui_interface.py
@@ -106,7 +106,6 @@
 from gajim.gtk.filetransfer import FileTransfersWindow
 from gajim.gtk.http_upload_progress import HTTPUploadProgressWindow
 from gajim.gtk.roster_item_exchange import RosterItemExchangeWindow
-from gajim.gtk.subscription_request import SubscriptionRequest
 from gajim.gtk.util import get_show_in_roster
 from gajim.gtk.util import get_show_in_systray
 from gajim.gtk.util import open_window
@@ -305,11 +304,11 @@ def handle_event_subscribe_presence(self, obj):
         #('SUBSCRIBE', account, (jid, text, user_nick)) user_nick is JEP-0172
         account = obj.conn.name
         if helpers.allow_popup_window(account) or not self.systray_enabled:
-            if obj.jid in self.instances[account]['sub_request']:
-                self.instances[account]['sub_request'][obj.jid].destroy()
-            self.instances[account]['sub_request'][obj.jid] = \
-                SubscriptionRequest(obj.jid, obj.status, account,
-                                          obj.user_nick)
+            open_window('SubscriptionRequest',
+                        account=account,
+                        jid=obj.jid,
+                        text=obj.status,
+                        user_nick=obj.user_nick)
             return
 
         event = events.SubscriptionRequestEvent(obj.status, obj.user_nick)
@@ -1270,7 +1269,11 @@ def handle_event(self, account, fjid, type_):
             event = app.events.get_first_event(account, jid, type_)
             if event is None:
                 return
-            SubscriptionRequest(jid, event.text, account, event.nick)
+            open_window('SubscriptionRequest',
+                        account=account,
+                        jid=jid,
+                        text=event.text,
+                        user_nick=event.nick)
             app.events.remove_events(account, jid, event)
             self.roster.draw_contact(jid, account)
         elif type_ == 'unsubscribed':
diff --git a/gajim/roster_window.py b/gajim/roster_window.py
index 4ffd646cf262f2186fb27b270a9a32d6e1de5a9d..9b686c5f271ba3ce05f5153d281990a06e6d36a5 100644
--- a/gajim/roster_window.py
+++ b/gajim/roster_window.py
@@ -80,7 +80,6 @@
 from gajim.gtk.discovery import ServiceDiscoveryWindow
 from gajim.gtk.tooltips import RosterTooltip
 from gajim.gtk.adhoc import AdHocCommand
-from gajim.gtk.subscription_request import SubscriptionRequest
 from gajim.gtk.util import get_icon_name
 from gajim.gtk.util import resize_window
 from gajim.gtk.util import restore_roster_position
@@ -88,6 +87,7 @@
 from gajim.gtk.util import get_builder
 from gajim.gtk.util import set_urgency_hint
 from gajim.gtk.util import get_activity_icon_name
+from gajim.gtk.util import open_window
 
 
 log = logging.getLogger('gajim.roster')
@@ -1971,7 +1971,11 @@ def open_event(self, account, jid, event):
             return True
 
         if event.type_ == 'subscription_request':
-            SubscriptionRequest(jid, event.text, account, event.nick)
+            open_window('SubscriptionRequest',
+                        account=account,
+                        jid=jid,
+                        text=event.text,
+                        user_nick=event.nick)
             app.events.remove_events(account, jid, event)
             return True