diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am
index 065fa3f..0eff9aa 100644
--- a/libempathy-gtk/Makefile.am
+++ b/libempathy-gtk/Makefile.am
@@ -65,7 +65,8 @@ libempathy_gtk_handwritten_source =            	\
 	empathy-theme-irc.c			\
 	empathy-theme-manager.c			\
 	empathy-kludge-label.c			\
-	empathy-ui-utils.c
+	empathy-ui-utils.c			\
+	empathy-notify-manager.c
 
 libempathy_gtk_headers =			\
 	empathy-account-chooser.h		\
@@ -107,7 +108,8 @@ libempathy_gtk_headers =			\
 	empathy-theme-irc.h			\
 	empathy-theme-manager.h			\
 	empathy-kludge-label.h			\
-	empathy-ui-utils.h
+	empathy-ui-utils.h			\
+	empathy-notify-manager.h
 
 libempathy_gtk_la_SOURCES =			\
 	$(libempathy_gtk_handwritten_source)	\
diff --git a/libempathy-gtk/empathy-notify-manager.c b/libempathy-gtk/empathy-notify-manager.c
new file mode 100644
index 0000000..ffcc34f
--- /dev/null
+++ b/libempathy-gtk/empathy-notify-manager.c
@@ -0,0 +1,188 @@
+/* * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * Authors: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+ */
+
+#include <config.h>
+#include <string.h>
+
+#include <libnotify/notification.h>
+#include <libnotify/notify.h>
+
+#include <libempathy/empathy-utils.h>
+
+#include <libempathy-gtk/empathy-ui-utils.h>
+#include <libempathy-gtk/empathy-conf.h>
+
+#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
+#include <libempathy/empathy-debug.h>
+
+#include "empathy-notify-manager.h"
+
+#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyNotifyManager)
+
+typedef struct
+{
+  /* owned (gchar *) => TRUE */
+  GHashTable *capabilities;
+
+  gboolean dispose_has_run;
+} EmpathyNotifyManagerPriv;
+
+G_DEFINE_TYPE (EmpathyNotifyManager, empathy_notify_manager, G_TYPE_OBJECT);
+
+static EmpathyNotifyManager *notify_manager = NULL;
+
+static GObject *
+notify_manager_constructor (GType type,
+    guint n_construct_params,
+    GObjectConstructParam *construct_params)
+{
+  GObject *retval;
+  EmpathyNotifyManagerPriv *priv;
+  GList *list, *l;
+
+  if (notify_manager != NULL)
+    return g_object_ref (notify_manager);
+
+  retval = G_OBJECT_CLASS (empathy_notify_manager_parent_class)->constructor
+    (type, n_construct_params, construct_params);
+
+  notify_manager = EMPATHY_NOTIFY_MANAGER (retval);
+  g_object_add_weak_pointer (retval, (gpointer) &notify_manager);
+
+  priv = GET_PRIV (notify_manager);
+
+  /* fetch capabilities */
+  list = notify_get_server_caps ();
+  for (l = list; l != NULL; l = g_list_next (l))
+    {
+      gchar *capa = l->data;
+
+      DEBUG ("add capability: %s", capa);
+      /* owernship of the string is transfered to the hash table */
+      g_hash_table_insert (priv->capabilities, capa, GUINT_TO_POINTER (TRUE));
+    }
+  g_list_free (list);
+
+  return retval;
+}
+
+static void
+notify_manager_dispose (GObject *object)
+{
+  EmpathyNotifyManagerPriv *priv = GET_PRIV (object);
+
+  if (priv->dispose_has_run)
+    return;
+
+  priv->dispose_has_run = TRUE;
+
+  G_OBJECT_CLASS (empathy_notify_manager_parent_class)->dispose (object);
+}
+
+static void
+notify_manager_finalize (GObject *object)
+{
+  EmpathyNotifyManagerPriv *priv = GET_PRIV (object);
+
+  g_hash_table_destroy (priv->capabilities);
+
+  G_OBJECT_CLASS (empathy_notify_manager_parent_class)->finalize (object);
+}
+
+static void
+empathy_notify_manager_class_init (EmpathyNotifyManagerClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->dispose = notify_manager_dispose;
+  object_class->finalize = notify_manager_finalize;
+  object_class->constructor = notify_manager_constructor;
+
+  g_type_class_add_private (object_class, sizeof (EmpathyNotifyManagerPriv));
+}
+
+static void
+empathy_notify_manager_init (EmpathyNotifyManager *self)
+{
+  EmpathyNotifyManagerPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
+    EMPATHY_TYPE_NOTIFY_MANAGER, EmpathyNotifyManagerPriv);
+
+  self->priv = priv;
+
+  priv->capabilities = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
+      NULL);
+}
+
+EmpathyNotifyManager *
+empathy_notify_manager_dup_singleton (void)
+{
+  return EMPATHY_NOTIFY_MANAGER (g_object_new (EMPATHY_TYPE_NOTIFY_MANAGER,
+        NULL));
+}
+
+gboolean
+empathy_notify_manager_has_capability (EmpathyNotifyManager *self,
+    const gchar *capa)
+{
+  EmpathyNotifyManagerPriv *priv = GET_PRIV (self);
+
+  return g_hash_table_lookup (priv->capabilities, capa) != NULL;
+}
+
+GdkPixbuf *
+empathy_notify_manager_get_pixbuf_for_notification (EmpathyNotifyManager *self,
+    EmpathyContact *contact,
+    const char *icon_name)
+{
+  GdkPixbuf *pixbuf = NULL;
+
+  if (contact != NULL)
+    pixbuf = empathy_pixbuf_avatar_from_contact_scaled (contact, 48, 48);
+
+  if (pixbuf == NULL)
+    pixbuf = empathy_pixbuf_from_icon_name_sized (icon_name, 48);
+
+  return pixbuf;
+}
+
+gboolean
+empathy_notify_manager_notification_is_enabled  (EmpathyNotifyManager *self)
+{
+  EmpathyConf *conf;
+  gboolean res;
+
+  conf = empathy_conf_get ();
+  res = FALSE;
+
+  empathy_conf_get_bool (conf, EMPATHY_PREFS_NOTIFICATIONS_ENABLED, &res);
+
+  if (!res)
+    return FALSE;
+
+  if (!empathy_check_available_state ())
+    {
+      empathy_conf_get_bool (conf, EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY,
+          &res);
+
+      if (res)
+        return FALSE;
+    }
+
+  return TRUE;
+}
diff --git a/libempathy-gtk/empathy-notify-manager.h b/libempathy-gtk/empathy-notify-manager.h
new file mode 100644
index 0000000..4faa13b
--- /dev/null
+++ b/libempathy-gtk/empathy-notify-manager.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * Authors: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+ */
+
+#ifndef __EMPATHY_NOTIFY_MANAGER_H__
+#define __EMPATHY_NOTIFY_MANAGER_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define EMPATHY_NOTIFY_MANAGER_CAPA_ACTIONS             "actions"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_APPEND              "append"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_BODY                "body"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_BODY_HYPERLINKS     "body-hyperlinks"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_BODY_IMAGES         "body-images"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_BODY_MARKUP         "body-markup"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_ICON_MULTI          "icon-multi"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_ICON_STATIC         "icon-static"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_IMAGE_SVG_XML       "image/svg+xml"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_PRIVATE_ICON_ONLY   "private-icon-only"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_PRIVATE_SYNCHRONOUS "private-synchronous"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_SOUND                "sound"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_TRUNCATION           "truncation"
+/* notify-osd specific */
+#define EMPATHY_NOTIFY_MANAGER_CAPA_X_CANONICAL_APPEND              "x-canonical-append"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_X_CANONICAL_PRIVATE_ICON_ONLY   "x-canonical-private-icon-only"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_X_CANONICAL_PRIVATE_SYNCHRONOUS "x-canonical-private-synchronous"
+#define EMPATHY_NOTIFY_MANAGER_CAPA_X_CANONICAL_TRUNCATION          "x-canonical-truncation"
+
+#define EMPATHY_TYPE_NOTIFY_MANAGER         (empathy_notify_manager_get_type ())
+#define EMPATHY_NOTIFY_MANAGER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_NOTIFY_MANAGER, EmpathyNotifyManager))
+#define EMPATHY_NOTIFY_MANAGER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_NOTIFY_MANAGER, EmpathyNotifyManagerClass))
+#define EMPATHY_IS_NOTIFY_MANAGER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_NOTIFY_MANAGER))
+#define EMPATHY_IS_NOTIFY_MANAGER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_NOTIFY_MANAGER))
+#define EMPATHY_NOTIFY_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_NOTIFY_MANAGER, EmpathyNotifyManagerClass))
+
+/* FIXME: this should *really* belong to libnotify. */
+typedef enum {
+    EMPATHY_NOTIFICATION_CLOSED_INVALID = 0,
+    EMPATHY_NOTIFICATION_CLOSED_EXPIRED = 1,
+    EMPATHY_NOTIFICATION_CLOSED_DISMISSED = 2,
+    EMPATHY_NOTIFICATION_CLOSED_PROGRAMMATICALY = 3,
+    EMPATHY_NOTIFICATION_CLOSED_RESERVED = 4
+} EmpathyNotificationClosedReason;
+
+typedef struct _EmpathyNotifyManager      EmpathyNotifyManager;
+typedef struct _EmpathyNotifyManagerClass EmpathyNotifyManagerClass;
+
+struct _EmpathyNotifyManager
+{
+  GObject parent;
+  gpointer priv;
+};
+
+struct _EmpathyNotifyManagerClass
+{
+ GObjectClass parent_class;
+};
+
+GType empathy_notify_manager_get_type (void) G_GNUC_CONST;
+
+/* Get the notify_manager singleton */
+EmpathyNotifyManager * empathy_notify_manager_dup_singleton (void);
+
+gboolean empathy_notify_manager_has_capability (EmpathyNotifyManager *self,
+    const gchar *capa);
+
+gboolean empathy_notify_manager_notification_is_enabled  (
+    EmpathyNotifyManager *self);
+
+GdkPixbuf * empathy_notify_manager_get_pixbuf_for_notification (
+    EmpathyNotifyManager *self,
+    EmpathyContact *contact,
+    const char *icon_name);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_NOTIFY_MANAGER_H__ */
diff --git a/src/Makefile.am b/src/Makefile.am
index 21409c1..08b13c7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -47,7 +47,6 @@ empathy_handwritten_source = \
 	empathy-import-pidgin.c empathy-import-pidgin.h			\
 	empathy-import-utils.c empathy-import-utils.h			\
 	empathy-main-window.c empathy-main-window.h			\
-	empathy-misc.c empathy-misc.h					\
 	empathy-new-chatroom-dialog.c empathy-new-chatroom-dialog.h	\
 	empathy-preferences.c empathy-preferences.h			\
 	empathy-sidebar.c empathy-sidebar.h			\
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index ccbfff6..4d99afd 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -52,10 +52,10 @@
 #include <libempathy-gtk/empathy-smiley-manager.h>
 #include <libempathy-gtk/empathy-sound.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
+#include <libempathy-gtk/empathy-notify-manager.h>
 
 #include "empathy-chat-window.h"
 #include "empathy-about-dialog.h"
-#include "empathy-misc.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_CHAT
 #include <libempathy/empathy-debug.h>
@@ -75,6 +75,7 @@ typedef struct {
 	gboolean     dnd_same_window;
 	guint        save_geometry_id;
 	EmpathyChatroomManager *chatroom_manager;
+	EmpathyNotifyManager *notify_mgr;
 	GtkWidget   *dialog;
 	GtkWidget   *notebook;
 	NotifyNotification *notification;
@@ -1079,7 +1080,7 @@ chat_window_show_or_update_notification (EmpathyChatWindow *window,
 	EmpathyChatWindowPriv *priv = GET_PRIV (window);
 	gboolean res;
 
-	if (!empathy_notification_is_enabled ()) {
+	if (!empathy_notify_manager_notification_is_enabled (priv->notify_mgr)) {
 		return;
 	} else {
 		empathy_conf_get_bool (empathy_conf_get (),
@@ -1111,7 +1112,8 @@ chat_window_show_or_update_notification (EmpathyChatWindow *window,
 				  G_CALLBACK (chat_window_notification_closed_cb), cb_data);
 	}
 
-	pixbuf = empathy_misc_get_pixbuf_for_notification (sender, EMPATHY_IMAGE_NEW_MESSAGE);
+	pixbuf = empathy_notify_manager_get_pixbuf_for_notification (priv->notify_mgr,
+		sender, EMPATHY_IMAGE_NEW_MESSAGE);
 
 	if (pixbuf != NULL) {
 		notify_notification_set_icon_from_pixbuf (priv->notification, pixbuf);
@@ -1508,6 +1510,7 @@ chat_window_finalize (GObject *object)
 
 	g_object_unref (priv->ui_manager);
 	g_object_unref (priv->chatroom_manager);
+	g_object_unref (priv->notify_mgr);
 	if (priv->save_geometry_id != 0) {
 		g_source_remove (priv->save_geometry_id);
 		chat_window_save_geometry_timeout_cb (window);
@@ -1690,6 +1693,8 @@ empathy_chat_window_init (EmpathyChatWindow *window)
 	priv->chats_new_msg = NULL;
 	priv->chats_composing = NULL;
 	priv->current_chat = NULL;
+
+	priv->notify_mgr = empathy_notify_manager_dup_singleton ();
 }
 
 EmpathyChatWindow *
diff --git a/src/empathy-misc.c b/src/empathy-misc.c
deleted file mode 100644
index a1a0847..0000000
--- a/src/empathy-misc.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2009 Collabora Ltd.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- *
- * Author: Cosimo Cecchi <cosimo.cecchi@collabora.co.uk>
- *
- */
-
-#include "empathy-misc.h"
-
-#include <libempathy/empathy-utils.h>
-#include <libempathy-gtk/empathy-ui-utils.h>
-#include <libempathy-gtk/empathy-conf.h>
-
-/* public methods */
-
-GdkPixbuf *
-empathy_misc_get_pixbuf_for_notification (EmpathyContact *contact,
-					  const char *icon_name)
-{
-	GdkPixbuf *pixbuf = NULL;
-
-	if (contact != NULL) {
-		pixbuf = empathy_pixbuf_avatar_from_contact_scaled (contact,
-								    48, 48);
-	}
-
-	if (!pixbuf) {
-		pixbuf = empathy_pixbuf_from_icon_name_sized
-					(icon_name, 48);
-	}
-
-	return pixbuf;
-}
-
-gboolean
-empathy_notification_is_enabled (void)
-{
-	EmpathyConf *conf;
-	gboolean res;
-
-	conf = empathy_conf_get ();
-	res = FALSE;
-
-	empathy_conf_get_bool (conf, EMPATHY_PREFS_NOTIFICATIONS_ENABLED, &res);
-
-	if (!res) {
-		return FALSE;
-	}
-
-	if (!empathy_check_available_state ()) {
-		empathy_conf_get_bool (conf,
-				       EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY,
-				       &res);
-		if (res) {
-			return FALSE;
-		}
-	}
-
-	return TRUE;
-}
-
diff --git a/src/empathy-misc.h b/src/empathy-misc.h
deleted file mode 100644
index b3fe8fd..0000000
--- a/src/empathy-misc.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2009 Collabora Ltd.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA  02110-1301  USA
- *
- * Author: Cosimo Cecchi <cosimo.cecchi@collabora.co.uk>
- *
- */
-
-#ifndef __EMPATHY_MISC_H__
-#define __EMPATHY_MISC_H__
-
-#include <glib.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-
-#include <libempathy/empathy-contact.h>
-
-G_BEGIN_DECLS
-
-/* FIXME: this should *really* belong to libnotify. */
-typedef enum {
-	EMPATHY_NOTIFICATION_CLOSED_INVALID = 0,
-	EMPATHY_NOTIFICATION_CLOSED_EXPIRED = 1,
-	EMPATHY_NOTIFICATION_CLOSED_DISMISSED = 2,
-	EMPATHY_NOTIFICATION_CLOSED_PROGRAMMATICALY = 3,
-	EMPATHY_NOTIFICATION_CLOSED_RESERVED = 4
-} EmpathyNotificationClosedReason;
-
-gboolean    empathy_notification_is_enabled  (void);
-GdkPixbuf * empathy_misc_get_pixbuf_for_notification (EmpathyContact *contact,
-                                                      const char *icon_name);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_MISC_H__ */
diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c
index c2faaea..1b0abdc 100644
--- a/src/empathy-status-icon.c
+++ b/src/empathy-status-icon.c
@@ -43,12 +43,12 @@
 #include <libempathy-gtk/empathy-ui-utils.h>
 #include <libempathy-gtk/empathy-images.h>
 #include <libempathy-gtk/empathy-new-message-dialog.h>
+#include <libempathy-gtk/empathy-notify-manager.h>
 
 #include "empathy-accounts-dialog.h"
 #include "empathy-status-icon.h"
 #include "empathy-preferences.h"
 #include "empathy-event-manager.h"
-#include "empathy-misc.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_DISPATCHER
 #include <libempathy/empathy-debug.h>
@@ -61,6 +61,7 @@ typedef struct {
 	GtkStatusIcon       *icon;
 	EmpathyIdle         *idle;
 	TpAccountManager    *account_manager;
+	EmpathyNotifyManager *notify_mgr;
 	gboolean             showing_event_icon;
 	guint                blink_timeout;
 	EmpathyEventManager *event_manager;
@@ -73,7 +74,6 @@ typedef struct {
 	GtkAction           *show_window_item;
 	GtkAction           *new_message_item;
 	GtkAction           *status_item;
-	gboolean             notify_supports_actions;
 } EmpathyStatusIconPriv;
 
 G_DEFINE_TYPE (EmpathyStatusIcon, empathy_status_icon, G_TYPE_OBJECT);
@@ -147,7 +147,7 @@ status_icon_update_notification (EmpathyStatusIcon *icon)
 	EmpathyStatusIconPriv *priv = GET_PRIV (icon);
 	GdkPixbuf *pixbuf = NULL;
 
-	if (!empathy_notification_is_enabled ()) {
+	if (!empathy_notify_manager_notification_is_enabled (priv->notify_mgr)) {
 		/* always close the notification if this happens */
 		notification_close_helper (priv);
 		return;
@@ -173,7 +173,8 @@ status_icon_update_notification (EmpathyStatusIcon *icon)
 			notify_notification_set_timeout (priv->notification,
 							 NOTIFY_EXPIRES_DEFAULT);
 
-			if (priv->notify_supports_actions) {
+			if (empathy_notify_manager_has_capability (priv->notify_mgr,
+			           EMPATHY_NOTIFY_MANAGER_CAPA_ACTIONS)) {
 				notify_notification_add_action (priv->notification,
 					"respond",
 					_("Respond"),
@@ -186,7 +187,8 @@ status_icon_update_notification (EmpathyStatusIcon *icon)
 					  G_CALLBACK (status_icon_notification_closed_cb), icon);
 		}
 
-		pixbuf = empathy_misc_get_pixbuf_for_notification (priv->event->contact,
+		pixbuf = empathy_notify_manager_get_pixbuf_for_notification (
+								   priv->notify_mgr, priv->event->contact,
 								   priv->event->icon_name);
 
 		if (pixbuf != NULL) {
@@ -329,7 +331,7 @@ status_icon_event_updated_cb (EmpathyEventManager *manager,
 		return;
 	}
 
-	if (empathy_notification_is_enabled ()) {
+	if (empathy_notify_manager_notification_is_enabled (priv->notify_mgr)) {
 		status_icon_update_notification (icon);
 	}
 
@@ -386,7 +388,7 @@ status_icon_idle_notify_cb (EmpathyStatusIcon *icon)
 	status_icon_update_icon (icon);
 	status_icon_update_tooltip (icon);
 
-	if (!empathy_notification_is_enabled ()) {
+	if (!empathy_notify_manager_notification_is_enabled (priv->notify_mgr)) {
 		/* dismiss the outstanding notification if present */
 
 		if (priv->notification) {
@@ -552,6 +554,7 @@ status_icon_finalize (GObject *object)
 	g_object_unref (priv->account_manager);
 	g_object_unref (priv->event_manager);
 	g_object_unref (priv->ui_manager);
+	g_object_unref (priv->notify_mgr);
 }
 
 static void
@@ -594,7 +597,6 @@ empathy_status_icon_init (EmpathyStatusIcon *icon)
 {
 	EmpathyStatusIconPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (icon,
 		EMPATHY_TYPE_STATUS_ICON, EmpathyStatusIconPriv);
-	GList *list, *l;
 
 	icon->priv = priv;
 	priv->icon = gtk_status_icon_new ();
@@ -634,15 +636,7 @@ empathy_status_icon_init (EmpathyStatusIcon *icon)
 			  icon);
 
 	/* Query the notification daemon to check if it supports actions */
-	priv->notify_supports_actions = FALSE;
-	list = notify_get_server_caps ();
-	for (l = list; l != NULL; l = g_list_next (l)) {
-		gchar *caps = l->data;
-		if (!tp_strdiff (caps, "actions"))
-			priv->notify_supports_actions = TRUE;
-		g_free (caps);
-	}
-	g_list_free (list);
+	priv->notify_mgr = empathy_notify_manager_dup_singleton ();
 }
 
 EmpathyStatusIcon *
