diff --git a/sflphone-client-gnome/src/callable_obj.c b/sflphone-client-gnome/src/callable_obj.c
index 6bd0d3c775aa9e4e0baec9a053aa15e6b3ee74cf..834cea66fa18aeb699f687c9d7b3896bf84f6a8c 100644
--- a/sflphone-client-gnome/src/callable_obj.c
+++ b/sflphone-client-gnome/src/callable_obj.c
@@ -136,8 +136,6 @@ void threaded_clock_incrementer (void *pc)
 
     while (call->clockStarted) {
 
-        DEBUG ("CALL CLOCK");
-
         int duration;
         time_t start, current;
 
diff --git a/sflphone-client-gnome/src/contacts/addressbook/eds.c b/sflphone-client-gnome/src/contacts/addressbook/eds.c
index ede7355fbf41c46c870a88dc4074c576a2ff16b5..2cf2e677d1893d4af4b2dafe3533af5430f5bf37 100644
--- a/sflphone-client-gnome/src/contacts/addressbook/eds.c
+++ b/sflphone-client-gnome/src/contacts/addressbook/eds.c
@@ -733,3 +733,19 @@ fetch_information_from_contact (EContact *contact, EContactField field, gchar **
     *info = g_strdup (to_fetch);
 }
 
+void
+set_current_addressbook (const gchar *name)
+{
+
+    GSList *book_list_iterator;
+    book_data_t *book_data;
+
+    // Iterate throw the list
+    for (book_list_iterator = books_data; book_list_iterator != NULL; book_list_iterator
+            = book_list_iterator->next) {
+        book_data = (book_data_t *) book_list_iterator->data;
+
+        if (strcmp (book_data->name, name) == 0)
+            current_uri = book_data->uri;
+    }
+}
diff --git a/sflphone-client-gnome/src/contacts/addressbook/eds.h b/sflphone-client-gnome/src/contacts/addressbook/eds.h
index efc7926392c2c91109324eef78e774b829dd7882..4cac91d1be8f1d711a16553bbeff3975ed9af394 100644
--- a/sflphone-client-gnome/src/contacts/addressbook/eds.h
+++ b/sflphone-client-gnome/src/contacts/addressbook/eds.h
@@ -109,19 +109,6 @@ init (OpenAsyncHandler);
 void
 fill_books_data (void);
 
-/**
- * Asynchronous search function (without the get_contacts method)
- */
-void
-search_async (const char *query, int max_results, SearchAsyncHandler handler,
-              gpointer user_data);
-
-/**
- * Synchronous query to EDS using get_contacts method. Block the application until a result is received.
- */
-void
-search_by_contacts (const char *query, int max_results, SearchAsyncHandler handler, gpointer user_data);
-
 /**
  * Asynchronous query to EDS using get contact method.
  */
@@ -159,6 +146,12 @@ books_active();
 GSList *
 addressbook_get_books_data();
 
+/**
+ * Set the current address book
+ */
+void
+set_current_addressbook (const gchar *name);
+
 G_END_DECLS
 
 #endif /* __EDS_H__ */
diff --git a/sflphone-client-gnome/src/contacts/searchbar.c b/sflphone-client-gnome/src/contacts/searchbar.c
index 173c3e7d22adabc691f5da05f8226ecb50845074..76fabb4df7c04a60f7d049689645db3428d9de4b 100644
--- a/sflphone-client-gnome/src/contacts/searchbar.c
+++ b/sflphone-client-gnome/src/contacts/searchbar.c
@@ -33,6 +33,7 @@
 
 #include <searchbar.h>
 #include <calltree.h>
+#include <contacts/addressbook/eds.h>
 
 GtkWidget * searchbox;
 
@@ -58,6 +59,13 @@ void searchbar_entry_changed (GtkEntry* entry, gchar* arg1 UNUSED, gpointer data
 
 #if GTK_CHECK_VERSION(2,16,0)
 
+static void select_addressbook (GtkWidget *item, GtkEntry  *entry)
+{
+    DEBUG ("Searchbar: Selected item label %s", gtk_menu_item_get_label (item));
+
+    set_current_addressbook (gtk_menu_item_get_label (item));
+}
+
 static void search_all (GtkWidget *item UNUSED, GtkEntry  *entry)
 {
     HistorySearchType = SEARCH_ALL;
@@ -109,10 +117,16 @@ static void search_by_outgoing (GtkWidget *item UNUSED, GtkEntry  *entry)
 
 static void icon_press_cb (GtkEntry *entry, gint position, GdkEventButton *event, gpointer data UNUSED)
 {
+    DEBUG ("Searchbar: Icon pressed");
+
     if (position == GTK_ENTRY_ICON_PRIMARY && active_calltree == history)
         gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
                         event->button, event->time);
-    else
+    else if (position == GTK_ENTRY_ICON_PRIMARY && active_calltree == contacts) {
+        GtkWidget *addrbook_menu = addressbook_menu_new();
+        gtk_menu_popup (GTK_MENU (addrbook_menu), NULL, NULL, NULL, NULL,
+                        event->button, event->time);
+    } else
         gtk_entry_set_text (entry, "");
 }
 
@@ -126,6 +140,33 @@ static void text_changed_cb (GtkEntry *entry, GParamSpec *pspec UNUSED)
 
 #endif
 
+GtkWidget *addressbook_menu_new (void)
+{
+
+    GtkWidget *menu, *item;
+
+    GSList *book_list_iterator;
+    book_data_t *book_data;
+    GSList *books_data = addressbook_get_books_data();
+
+    // Create the menu
+    menu = gtk_menu_new ();
+    gtk_menu_attach_to_widget (GTK_MENU (menu), contacts->searchbar, NULL);
+
+    // Populate menu
+    for (book_list_iterator = books_data; book_list_iterator != NULL; book_list_iterator
+            = book_list_iterator->next) {
+        book_data = (book_data_t *) book_list_iterator->data;
+        item = gtk_menu_item_new_with_label (book_data->name);
+        g_signal_connect (item, "activate", G_CALLBACK (select_addressbook), searchbox);
+        gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+    }
+
+    gtk_widget_show_all (menu);
+
+    return menu;
+}
+
 void
 focus_on_searchbar_out()
 {
diff --git a/sflphone-client-gnome/src/contacts/searchbar.h b/sflphone-client-gnome/src/contacts/searchbar.h
index 0fa107cce7fd48f3b82d74b9f97c45fa3ca8cb4d..7a8cad07f0b698ef9ff5247a852f608ea9da2a00 100644
--- a/sflphone-client-gnome/src/contacts/searchbar.h
+++ b/sflphone-client-gnome/src/contacts/searchbar.h
@@ -81,4 +81,6 @@ void activateWaitingLayer();
  */
 void deactivateWaitingLayer();
 
+GtkWidget *addressbook_menu_new (void);
+
 #endif
diff --git a/sflphone-client-gnome/src/uimanager.c b/sflphone-client-gnome/src/uimanager.c
index bfba38e43f6c871be6a209342faea0287f8a661e..363997a5c3d34fac34bffd4977a18cdb8fb76399 100644
--- a/sflphone-client-gnome/src/uimanager.c
+++ b/sflphone-client-gnome/src/uimanager.c
@@ -85,7 +85,7 @@ void
 update_actions()
 {
 
-    DEBUG ("Update action");
+    DEBUG ("UIManager: Update action");
 
     gtk_action_set_sensitive (GTK_ACTION (newCallAction), TRUE);
     gtk_action_set_sensitive (GTK_ACTION (pickUpAction), FALSE);
@@ -510,7 +510,7 @@ conference_hold (void* foo UNUSED)
 static void
 call_pick_up (void * foo UNUSED)
 {
-    DEBUG ("------ call_button -----");
+    DEBUG ("UIManager: Call_button");
     callable_obj_t * selectedCall;
     callable_obj_t* new_call;
 
@@ -577,7 +577,7 @@ remove_from_history (void * foo UNUSED)
     callable_obj_t* c = calltab_get_selected_call (history);
 
     if (c) {
-        DEBUG ("Remove the call from the history");
+        DEBUG ("UIManager: Remove the call from the history");
         calllist_remove_from_history (c);
     }
 }
@@ -637,7 +637,7 @@ edit_copy (void * foo UNUSED)
                 break;
         }
 
-        DEBUG ("Clipboard number: %s\n", no);
+        DEBUG ("UIManager: Clipboard number: %s\n", no);
         gtk_clipboard_set_text (clip, no, strlen (no));
     }
 
@@ -716,7 +716,7 @@ edit_paste (void * foo UNUSED)
         selectedCall->_peer_number = g_strconcat (selectedCall->_peer_number, no,
                                      NULL);
         g_free (before);
-        DEBUG ("TO: %s", selectedCall->_peer_number);
+        DEBUG ("UIManager: TO: %s", selectedCall->_peer_number);
 
         g_free (selectedCall->_peer_info);
         selectedCall->_peer_info = g_strconcat ("\"\" <",
@@ -952,7 +952,7 @@ show_popup_menu (GtkWidget *my_widget, GdkEventButton *event)
     conference_obj_t * selectedConf;
 
     if (calltab_get_selected_type (current_calls) == A_CALL) {
-        DEBUG ("MENUS: SELECTED A CALL");
+        DEBUG ("UIManager: Menus: Selected a call");
         selectedCall = calltab_get_selected_call (current_calls);
 
         if (selectedCall) {
@@ -990,13 +990,13 @@ show_popup_menu (GtkWidget *my_widget, GdkEventButton *event)
                     hangup = TRUE;
                     break;
                 default:
-                    WARN ("Should not happen in show_popup_menu for calls!")
+                    WARN ("UIManager: Should not happen in show_popup_menu for calls!")
                     ;
                     break;
             }
         }
     } else {
-        DEBUG ("MENUS: SELECTED A CONF");
+        DEBUG ("UIManager: Menus: selected a conf");
         selectedConf = calltab_get_selected_conf();
 
         if (selectedConf) {
@@ -1012,7 +1012,7 @@ show_popup_menu (GtkWidget *my_widget, GdkEventButton *event)
                     hold_conf = TRUE;
                     break;
                 default:
-                    WARN ("Should not happen in show_popup_menu for conferences!")
+                    WARN ("UIManager: Should not happen in show_popup_menu for conferences!")
                     ;
                     break;
             }
@@ -1030,7 +1030,7 @@ show_popup_menu (GtkWidget *my_widget, GdkEventButton *event)
     //g_signal_connect (menu, "deactivate",
     //       G_CALLBACK (gtk_widget_destroy), NULL);
     if (calltab_get_selected_type (current_calls) == A_CALL) {
-        DEBUG ("BUILD CALL MENU");
+        DEBUG ("UIManager: Build call menu");
 
         if (copy) {
             menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_COPY,
@@ -1103,7 +1103,7 @@ show_popup_menu (GtkWidget *my_widget, GdkEventButton *event)
         }
 
     } else {
-        DEBUG ("BUILD CONFERENCE MENU");
+        DEBUG ("UIManager: Build call menus");
 
         if (hangup_conf) {
             menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("_Hang up"));
@@ -1148,6 +1148,8 @@ void
 show_popup_menu_history (GtkWidget *my_widget, GdkEventButton *event)
 {
 
+    DEBUG ("UIManager: Show popup menu history");
+
     gboolean pickup = FALSE;
     gboolean remove = FALSE;
     gboolean edit = FALSE;
@@ -1216,6 +1218,75 @@ show_popup_menu_history (GtkWidget *my_widget, GdkEventButton *event)
     gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL);
     gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
 }
+
+/*
+void
+show_popup_menu_addressbook (GtkWidget *my_widget, GdkEventButton *event)
+{
+
+    if (selectedCall) {
+        remove = TRUE;
+        pickup = TRUE;
+        edit = TRUE;
+        accounts = TRUE;
+    }
+
+    GtkWidget *menu;
+    GtkWidget *image;
+    int button, event_time;
+    GtkWidget * menu_items;
+
+    menu = gtk_menu_new();
+    //g_signal_connect (menu, "deactivate",
+    //       G_CALLBACK (gtk_widget_destroy), NULL);
+
+    if (pickup) {
+
+        menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("_Call back"));
+        image = gtk_image_new_from_file (ICONS_DIR "/icon_accept.svg");
+        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_items), image);
+        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
+        g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL);
+        gtk_widget_show (menu_items);
+    }
+
+    menu_items = gtk_separator_menu_item_new();
+    gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
+    gtk_widget_show (menu_items);
+
+    if (edit) {
+        menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_EDIT,
+                     get_accel_group());
+        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
+        g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (edit_number_cb), selectedCall);
+        gtk_widget_show (menu_items);
+    }
+
+    if (remove) {
+        menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE,
+                     get_accel_group());
+        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
+        g_signal_connect (G_OBJECT (menu_items), "activate", G_CALLBACK (remove_from_history), NULL);
+        gtk_widget_show (menu_items);
+    }
+
+    if (accounts) {
+        add_registered_accounts_to_menu (menu);
+    }
+
+    if (event) {
+        button = event->button;
+        event_time = event->time;
+    } else {
+        button = 0;
+        event_time = gtk_get_current_event_time();
+    }
+
+    gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL);
+    gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
+}
+*/
+
 void
 show_popup_menu_contacts (GtkWidget *my_widget, GdkEventButton *event)
 {