diff --git a/src/chat_control.py b/src/chat_control.py
index 511a21bbcb893612d8a12d46893795b42607e654..d3dfa6bc2755ba9cfa9d7e7426ef86d6f84e84dc 100644
--- a/src/chat_control.py
+++ b/src/chat_control.py
@@ -521,8 +521,12 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
         super(ChatControlBase, self).shutdown()
         # PluginSystem: removing GUI extension points connected with ChatControlBase
         # instance object
-        gajim.plugin_manager.remove_gui_extension_point('chat_control_base', self)
-        gajim.plugin_manager.remove_gui_extension_point('chat_control_base_draw_banner', self)
+        gajim.plugin_manager.remove_gui_extension_point('chat_control_base',
+            self)
+        gajim.plugin_manager.remove_gui_extension_point(
+            'chat_control_base_draw_banner', self)
+        gajim.plugin_manager.remove_gui_extension_point('print_special_text',
+            self)
         gajim.ged.remove_event_handler('our-show', ged.GUI1,
             self._nec_our_status)
 
diff --git a/src/conversation_textview.py b/src/conversation_textview.py
index 12912f21441edeaa588a90533bf0af24113d055b..7de98f3175d5e562d7858d9168477a405dcc9ed2 100644
--- a/src/conversation_textview.py
+++ b/src/conversation_textview.py
@@ -1039,6 +1039,15 @@ class ConversationTextview(gobject.GObject):
         Is called by detect_and_print_special_text and prints special text
         (emots, links, formatting)
         """
+
+
+        # PluginSystem: adding GUI extension point for ConversationTextview
+        self.plugin_modified = False
+        gajim.plugin_manager.gui_extension_point('print_special_text', self,
+            special_text, other_tags, graphics)
+        if self.plugin_modified:
+            return
+
         tags = []
         use_other_tags = True
         text_is_valid_uri = False
diff --git a/src/plugins/pluginmanager.py b/src/plugins/pluginmanager.py
index 5aed9edba470ed6ee816b36f4b27bed42a77ff67..18e4765c36ce62db9f76a767a151bdfc706e841f 100644
--- a/src/plugins/pluginmanager.py
+++ b/src/plugins/pluginmanager.py
@@ -215,9 +215,13 @@ class PluginManager(object):
                 extension point name) to identify element to be removed.
         :type args: tuple
         '''
-
         if gui_extpoint_name in self.gui_extension_points:
-            self.gui_extension_points[gui_extpoint_name].remove(args)
+            extension_points = list(self.gui_extension_points[gui_extpoint_name])
+            for ext_point in extension_points:
+                if args[0] in ext_point:
+                    self.gui_extension_points[gui_extpoint_name].remove(
+                        ext_point)
+
 
     @log_calls('PluginManager')
     def _add_gui_extension_point_call_to_list(self, gui_extpoint_name, *args):