diff --git a/src/pidgin-libnotify.c b/src/pidgin-libnotify.c
index 66d36fc..f0a5849 100644
--- a/src/pidgin-libnotify.c
+++ b/src/pidgin-libnotify.c
@@ -41,6 +41,7 @@
 #include <string.h>
 
 #define PLUGIN_ID "pidgin-libnotify"
+#define MAX_TIMEOUT 30
 
 static GHashTable *buddy_hash;
 
@@ -63,6 +64,17 @@ get_plugin_pref_frame (PurplePlugin *plugin)
 	purple_plugin_pref_frame_add (frame, ppref);
 
 	ppref = purple_plugin_pref_new_with_name_and_label (
+                            "/plugins/gtk/libnotify/msgtimeout",
+                            _("Timeout for popups"));
+	purple_plugin_pref_set_bounds (ppref, 0, MAX_TIMEOUT);
+	purple_plugin_pref_frame_add (frame, ppref);
+
+	ppref = purple_plugin_pref_new_with_name_and_label (
+                            "/plugins/gtk/libnotify/showbuddyicon",
+                            _("Show buddy icon"));
+	purple_plugin_pref_frame_add (frame, ppref);
+
+	ppref = purple_plugin_pref_new_with_name_and_label (
                             "/plugins/gtk/libnotify/blocked",
                             _("Ignore events from blocked users"));
 	purple_plugin_pref_frame_add (frame, ppref);
@@ -270,6 +282,7 @@ notify (const gchar *title,
 	notification = g_hash_table_lookup (buddy_hash, contact);
 
 	if (notification != NULL) {
+
 		notify_notification_update (notification, title, tr_body, NULL);
 		/* this shouldn't be necessary, file a bug */
 		notify_notification_show (notification, NULL);
@@ -289,7 +302,8 @@ notify (const gchar *title,
 	g_free (tr_body);
 
 	buddy_icon = purple_buddy_get_icon (buddy);
-	if (buddy_icon) {
+	gboolean showbuddyicon = purple_prefs_get_bool ("/plugins/gtk/libnotify/showbuddyicon");
+	if (buddy_icon && showbuddyicon) {
 		icon = pixbuf_from_buddy_icon (buddy_icon);
 		purple_debug_info (PLUGIN_ID, "notify(), has a buddy icon.\n");
 	} else {
@@ -312,6 +326,9 @@ notify (const gchar *title,
 
 	notify_notification_set_urgency (notification, NOTIFY_URGENCY_NORMAL);
 
+	gint msgtimeout = purple_prefs_get_int ("/plugins/gtk/libnotify/msgtimeout");
+	notify_notification_set_timeout (notification, msgtimeout * 1000);
+
 	notify_notification_add_action (notification, "show", _("Show"), action_cb, NULL, NULL);
 
 	if (!notify_notification_show (notification, NULL)) {
@@ -575,6 +592,8 @@ init_plugin (PurplePlugin *plugin)
 
 	purple_prefs_add_none ("/plugins/gtk/libnotify");
 	purple_prefs_add_bool ("/plugins/gtk/libnotify/newmsg", TRUE);
+	purple_prefs_add_bool ("/plugins/gtk/libnotify/showbuddyicon", TRUE);
+	purple_prefs_add_int  ("/plugins/gtk/libnotify/msgtimeout", 5);
 	purple_prefs_add_bool ("/plugins/gtk/libnotify/blocked", TRUE);
 	purple_prefs_add_bool ("/plugins/gtk/libnotify/newconvonly", FALSE);
 	purple_prefs_add_bool ("/plugins/gtk/libnotify/signon", TRUE);
