diff --git a/sflphone-client-gnome/src/contacts/addressbook.c b/sflphone-client-gnome/src/contacts/addressbook.c
index 60557d04f6533ac2b87e724d6570bb170c7251ae..d9b987c6340af544880f01ef9e74ded840bfd2b4 100644
--- a/sflphone-client-gnome/src/contacts/addressbook.c
+++ b/sflphone-client-gnome/src/contacts/addressbook.c
@@ -32,17 +32,21 @@ void
 addressbook_search(GtkEntry* entry)
 {
 
-  AddressBook_Config *addressbook_config;
+    gchar* query = gtk_entry_get_text(GTK_ENTRY (entry));
+    if (strlen(query) >= 3) {
 
-  // Activate waiting layer
-  activateWaitingLayer();
+        AddressBook_Config *addressbook_config;
+	
+	// Activate waiting layer
+	activateWaitingLayer();
 
-  // Load the address book parameters
-  addressbook_config_load_parameters(&addressbook_config);
+	// Load the address book parameters
+	addressbook_config_load_parameters(&addressbook_config);
+      
+	// Start the asynchronous search as soon as we have an entry */
+	search_async(gtk_entry_get_text(GTK_ENTRY (entry)), addressbook_config->max_results, &handler_async_search, addressbook_config);
 
-  // Start the asynchronous search as soon as we have an entry */
-  search_async(gtk_entry_get_text(GTK_ENTRY (entry)), addressbook_config->max_results, &handler_async_search,
-      addressbook_config);
+    }
 }
 
 /**
@@ -84,6 +88,7 @@ addressbook_is_active()
 static void
 addressbook_config_books()
 {
+
   gchar **config_book_uid;
   book_data_t *book_data;
   gchar **list;
@@ -91,21 +96,21 @@ addressbook_config_books()
   // Retrieve list of books
   list = (gchar **) dbus_get_addressbook_list();
 
-  if (list)
-    {
-      for (config_book_uid = list; *config_book_uid; config_book_uid++)
-        {
+  if (list) {
+
+      for (config_book_uid = list; *config_book_uid; config_book_uid++) {
+
           // Get corresponding book data
           book_data = books_get_book_data_by_uid(*config_book_uid);
 
           // If book_data exists
-          if (book_data != NULL)
-            {
+          if (book_data != NULL) {
+
               book_data->active = TRUE;
-            }
-        }
+	  }
+      }
       g_strfreev(list);
-    }
+  }
 
   // Update buttons
   update_actions ();
diff --git a/sflphone-client-gnome/src/contacts/addressbook/eds.c b/sflphone-client-gnome/src/contacts/addressbook/eds.c
index 4303109b741c4c7c9ccff471f1570246aa983629..289e5aea7485b34346cee19bff43cc28d3dffcea 100644
--- a/sflphone-client-gnome/src/contacts/addressbook/eds.c
+++ b/sflphone-client-gnome/src/contacts/addressbook/eds.c
@@ -275,23 +275,25 @@ pixbuf_from_contact(EContact *contact)
 static void
 eds_async_open_callback(EBook *book, EBookStatus status, gpointer closure)
 {
-  Open_Handler_And_Data *had = (Open_Handler_And_Data *) closure;
+    Open_Handler_And_Data *had = (Open_Handler_And_Data *) closure;
 
-  remaining_books_to_open--;
+    remaining_books_to_open--;
 
-  if (status == E_BOOK_ERROR_OK)
-    {
-      book_data_t *book_data = g_new(book_data_t, 1);
-      book_data->active = FALSE;
-      book_data->name = g_strdup(e_source_peek_name(e_book_get_source(book)));
-      book_data->uid = g_strdup(e_source_peek_uid(e_book_get_source(book)));
-      book_data->ebook = book;
-      books_data = g_slist_prepend(books_data, book_data);
-      had->handler();
+    DEBUG("eds_async_open_callback remaining book to open: %i", remaining_books_to_open);
+
+    if (status == E_BOOK_ERROR_OK) {
+
+        book_data_t *book_data = g_new(book_data_t, 1);
+	book_data->active = FALSE;
+	book_data->name = g_strdup(e_source_peek_name(e_book_get_source(book)));
+	book_data->uid = g_strdup(e_source_peek_uid(e_book_get_source(book)));
+	book_data->ebook = book;
+	books_data = g_slist_prepend(books_data, book_data);
+	had->handler();
     }
-  else
-    {
-      WARN("Got error %d when opening book", status);
+    else {
+
+        WARN("Got error %d when opening book", status);
     }
 }
 
@@ -302,14 +304,15 @@ void
 init(OpenAsyncHandler callback)
 {
   GSList *list, *l;
-  ESourceList *source_list;
+  ESourceList *source_list = NULL;
   remaining_books_to_open = 0;
   books_data = NULL;
 
-  source_list = e_source_list_new_for_gconf_default(
-      "/apps/evolution/addressbook/sources");
+  source_list = e_source_list_new_for_gconf_default("/apps/evolution/addressbook/sources");
+  
   if (source_list == NULL)
     {
+      DEBUG("Error could not initialize source list for addressbook");
       return;
     }
 
@@ -320,6 +323,7 @@ init(OpenAsyncHandler callback)
 
   for (l = list; l != NULL; l = l->next)
     {
+
       ESourceGroup *group = l->data;
       GSList *sources = NULL, *m;
       sources = e_source_group_peek_sources(group);
@@ -330,10 +334,12 @@ init(OpenAsyncHandler callback)
           if (book != NULL)
             {
               // Keep count of remaining books to open
-              remaining_books_to_open++;
 
+	      DEBUG("init addressbook %i", remaining_books_to_open);
+              remaining_books_to_open++;
+	      
               // Asynchronous open
-              e_book_async_open(book, TRUE, eds_async_open_callback, had);
+              e_book_async_open(book, FALSE, eds_async_open_callback, had);
             }
         }
     }
diff --git a/sflphone-client-gnome/src/contacts/searchbar.c b/sflphone-client-gnome/src/contacts/searchbar.c
index 2044b4badd022dd103b60e32bad63cbbaf3c1fef..d84c6efcc4e6c168371daa1cec5fc0bbe7a9aff5 100644
--- a/sflphone-client-gnome/src/contacts/searchbar.c
+++ b/sflphone-client-gnome/src/contacts/searchbar.c
@@ -36,6 +36,8 @@ GdkPixbuf *missed_pixbuf = NULL;
 
 void searchbar_entry_changed (GtkEntry* entry, gchar* arg1 UNUSED, gpointer data UNUSED)
 {
+    DEBUG("searchbar_entry_changed");
+
     if (active_calltree == contacts) {
         addressbook_search (entry);
     }