diff --git a/build_tarball.sh b/build_tarball.sh
index 623bdc8eb0e87ffad4dee69dc46e4a2ce5637a26..b1d0c8dee32384ee97aba641fb531fd19d1168b6 100755
--- a/build_tarball.sh
+++ b/build_tarball.sh
@@ -32,7 +32,6 @@ rm -f *.tar.gz
 rm -rf lang/
 rm -rf tools/
 rm -rf sflphone-client-kde/
-rm -rf sippxml
 
 rm -rf .git/
 rm -f .gitignore
diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c
index b8eb4ba5c735653de945e512c5245284f6e49a6c..8c45c22dae76ef30f6c4356d1a9394d1a47df974 100644
--- a/sflphone-client-gnome/src/actions.c
+++ b/sflphone-client-gnome/src/actions.c
@@ -652,7 +652,6 @@ process_dialing (callable_obj_t *c, guint keyval, gchar *key)
     switch (keyval) {
         case 65293: /* ENTER */
         case 65421: /* ENTER numpad */
-	    DEBUG("------------------------------------------------ SFLPHONE PLACE CALL (process dialing)");
             sflphone_place_call (c);
             break;
         case 65307: /* ESCAPE */
@@ -921,10 +920,10 @@ static int _place_registered_call (callable_obj_t * c)
     DEBUG ("Actions: Get account for this call");
 
     if (g_strcasecmp (c->_accountID, "") != 0) {
-        DEBUG ("-------------------------------------------------------- Actions: Account %s already set for this call", c->_accountID);
+        DEBUG ("Actions: Account %s already set for this call", c->_accountID);
         current = account_list_get_by_id (c->_accountID);
     } else {
-        DEBUG ("-------------------------------------------------------- Actions: No account set for this call, use first of the list");
+        DEBUG ("Actions: No account set for this call, use first of the list");
         current = account_list_get_current();
     }
 
@@ -1281,7 +1280,7 @@ void sflphone_fill_history (void)
 
     gboolean is_first;
 
-    DEBUG ("Loading history ...");
+    DEBUG ("SFLphone: Loading history ...");
 
     entries = dbus_get_history ();
 
@@ -1321,14 +1320,30 @@ void sflphone_fill_history (void)
 		gchar **ptr;
     		const gchar *delim = "|";
 
-		DEBUG("---------------------------------- HISTORY VALUE %s", value);
 
 	        ptr = g_strsplit(value, delim, 6);
 		if(ptr != NULL) {
 
+		    DEBUG("!!!!!!!!!!!!!!!!!!!!!!!!!!!! %s", *ptr);
+
 		    // first ptr refers to entry type
 		    if(g_strcmp0(*ptr, "2188") == 0) {
-			// create_conference_history_entry_from_serialized((gchar *)key, (gchar **)ptr, &conference_entry);
+		        DEBUG("---------------------------------- HISTORY VALUE %s", value);
+			create_conference_history_entry_from_serialized((gchar *)key, (gchar **)ptr, &conference_entry);
+			conferencelist_add (history, conference_entry);
+			calltree_add_conference (history, conference_entry);
+			conferencelist_add(current_calls, conference_entry);
+/*
+		        GSList *part = conference_entry->participant_list;
+
+			while(part) {
+			    callable_obj_t *call_to_add = NULL;
+			    gchar *call_id = (gchar *)part->data;
+			    call_to_add = calllist_get_call(history, call_id);
+
+			    calltree_add_call();
+                        }	
+*/
 			g_hash_table_remove(entries, key_to_min);	
 		    }
 		    else {
diff --git a/sflphone-client-gnome/src/callable_obj.c b/sflphone-client-gnome/src/callable_obj.c
index df20980b58a6756473367ea16c07eef2b6086843..d37d449bc47fadb272fab45970b7f1b36cf57085 100644
--- a/sflphone-client-gnome/src/callable_obj.c
+++ b/sflphone-client-gnome/src/callable_obj.c
@@ -313,27 +313,21 @@ void create_history_entry_from_serialized_form (gchar *timestamp, gchar **ptr, c
     while (ptr != NULL && token < 6) {
         switch (token) {
             case 0:
-	        DEBUG("------------------------------------------------------------------------------------------ HISTORYSTATE FROM SERIALIZATION %s", *ptr);
                 history_state = get_history_state_from_id (*ptr);
                 break;
             case 1:
-	        DEBUG("------------------------------------------------------------------------------------------ PEERNUMBER FROM SERIALIZATION %s", *ptr);
                 peer_number = *ptr;
                 break;
             case 2:
-	        DEBUG("------------------------------------------------------------------------------------------ PEERNAME FROM SERIALIZATION %s", *ptr);
                 peer_name = *ptr;
                 break;
             case 3:
-		DEBUG("------------------------------------------------------------------------------------------ TIMESTOP FROM SERIALIZATION %s", *ptr);
                 time_stop = *ptr;
                 break;
             case 4:
-		DEBUG("------------------------------------------------------------------------------------------ ACCOUNTID FROM SERIALIZATION %s", *ptr);
                 accountID = *ptr;
                 break;
             case 5:
-		DEBUG("------------------------------------------------------------------------------------------ RECORDFILE FROM SERIALIZATION %s", *ptr);
 		recordfile = *ptr;
             default:
                 break;
diff --git a/sflphone-client-gnome/src/conference_obj.c b/sflphone-client-gnome/src/conference_obj.c
index 663f971579d0879d25a1e23cb90e32332c9025ad..6212ee46ce3366907ae5c01f42f37c98fbc62f15 100644
--- a/sflphone-client-gnome/src/conference_obj.c
+++ b/sflphone-client-gnome/src/conference_obj.c
@@ -38,6 +38,7 @@
 
 static void set_conference_timestamp (time_t *);
 static void conference_add_participant_number(const gchar *, conference_obj_t *);
+static void process_conference_participant_from_serialized(gchar *, conference_obj_t *);
 
 static void set_conference_timestamp (time_t *timestamp) 
 {
@@ -50,21 +51,27 @@ static void set_conference_timestamp (time_t *timestamp)
 
 void create_new_conference (conference_state_t state, const gchar* confID, conference_obj_t ** conf)
 {
-    DEBUG ("create_new_conference");
-
-    // conference_obj_t *obj;
     conference_obj_t *new_conf;
-    const gchar* conf_id;
+
+    if(confID == NULL) {
+	ERROR("Conference: Error: Conference ID is NULL while creating new conference");
+	return;
+    }
+
+    DEBUG ("Conference: Create new conference %s", confID);
 
     // Allocate memory
     new_conf = g_new0 (conference_obj_t, 1);
+    if(new_conf == NULL) {
+	ERROR("Conference: Error: Could not allocate data ");
+	return;
+    }
 
     // Set state field
     new_conf->_state = state;
 
     // Set the ID field
-    conf_id = confID;
-    new_conf->_confID = g_strdup (conf_id);
+    new_conf->_confID = g_strdup (confID);
 
     new_conf->participant_list = NULL;
     new_conf->participant_number = NULL;
@@ -74,15 +81,18 @@ void create_new_conference (conference_state_t state, const gchar* confID, confe
 
 void create_new_conference_from_details (const gchar *conf_id, GHashTable *details, conference_obj_t ** conf)
 {
-    DEBUG ("create_new_conference_from_details");
-
     conference_obj_t *new_conf;
     gchar** participants;
     gchar* state_str;
-    // GSList* participant_list;
+    
+    DEBUG ("Conference: Create new conference from details");
 
     // Allocate memory
     new_conf = g_new0 (conference_obj_t, 1);
+    if(new_conf == NULL) {
+        ERROR("Conference: Error: Could not allocate data ");
+        return;
+    }
 
     new_conf->_confID = g_strdup (conf_id);
 
@@ -93,6 +103,9 @@ void create_new_conference_from_details (const gchar *conf_id, GHashTable *detai
 
     // get participant list
     participants = dbus_get_participant_list (conf_id);
+    if(participants == NULL) {
+	ERROR("Conference: Error: Could not get participant list");
+    }
 
     // generate conference participant list
     conference_participant_list_update (participants, new_conf);
@@ -131,6 +144,8 @@ void free_conference_obj_t (conference_obj_t *c)
 
 void conference_add_participant (const gchar* call_id, conference_obj_t* conf)
 {
+    DEBUG("Conference: Conference %s, adding participant %s", conf->_confID, call_id);
+
     // store the new participant list after appending participant id
     conf->participant_list = g_slist_append (conf->participant_list, (gpointer) g_strdup(call_id));
 
@@ -246,6 +261,8 @@ void create_conference_history_entry_from_serialized(gchar *timestamp, gchar **p
     gchar *recordfile = "";
     const gchar *confID = "conf_1234";
     
+    DEBUG("Conference: Create a conference from serialized form");
+ 
     // create a new empty conference
     create_new_conference(state, confID, conf);
 
@@ -255,7 +272,8 @@ void create_conference_history_entry_from_serialized(gchar *timestamp, gchar **p
 		history_state = MISSED;
 		break;
 	    case 1:
-		participant = *ptr;
+		participant = g_strdup(*ptr);
+		process_conference_participant_from_serialized(participant, *conf);
 		break;
 	    case 2:
 		name = *ptr;
@@ -276,9 +294,11 @@ void create_conference_history_entry_from_serialized(gchar *timestamp, gchar **p
 	token++;
  	ptr++;
     }
+
+    g_free(participant);
 }
 
-void process_conference_participant_from_serialized(gchar *participant, conference_obj_t *conf)
+static void process_conference_participant_from_serialized(gchar *participant, conference_obj_t *conf)
 {
     gchar **ptr = NULL;
     gchar **numberptr = NULL;
@@ -286,15 +306,22 @@ void process_conference_participant_from_serialized(gchar *participant, conferen
     gchar *delimnumber = ",";
     gchar *numberaccount;
     guint token = 0;
+    callable_obj_t *tmp_call = NULL;
+    gint tok = 0;
+    
+
+    DEBUG("------------------------------- process_conference_participant_from_serialized");
 
-    ptr = g_strsplit(participant, delim, 0);
-    while(ptr != NULL) {
+    ptr = g_strsplit(participant, delim, 2);
+    while(ptr != NULL && (tok < 2)) {
+	gchar *phone_number = NULL;
+	gchar *account = NULL;
 	token = 0;
 	numberaccount = *ptr;
+	DEBUG("HERE IS THE PROBLEM");
 	numberptr = g_strsplit(numberaccount, delimnumber, 2);
-	while(numberptr != NULL) {
-	    gchar *phone_number = NULL;
-	    gchar *account = NULL;
+	DEBUG("problem !!!");
+	while(numberptr != NULL && (token < 2)) {
 	    switch(token) {
 	 	case 0:
 		    phone_number = *numberptr;
@@ -307,8 +334,22 @@ void process_conference_participant_from_serialized(gchar *participant, conferen
 	    }
 	    token++;
 	    numberptr++;
-
-	    // we should create call here and add it to the conference to be inserted in history
 	}
+
+	tok++;
+
+	gchar *name = "name";
+	gchar *call_id = generate_call_id();
+	   
+	// we should create call here and add it to the conference to be inserted in history
+	create_new_call(HISTORY_ENTRY, CALL_STATE_DIALING, call_id, account, name, phone_number, &tmp_call);  
+	calllist_add_history_call(tmp_call);
+	calllist_add_call(current_calls, tmp_call); 
+
+	DEBUG("BEFORE %s", call_id);
+	conference_add_participant(call_id, conf);
+	DEBUG("AFTER");
+	
+	ptr++;
     }
 } 
diff --git a/sflphone-client-gnome/src/conference_obj.h b/sflphone-client-gnome/src/conference_obj.h
index 9acbc4cb77648ffa9ba5545dd4223fd660fb5032..c66071d2bc8ab22f304f98f5052d16fd4d9b12be 100644
--- a/sflphone-client-gnome/src/conference_obj.h
+++ b/sflphone-client-gnome/src/conference_obj.h
@@ -86,4 +86,6 @@ void conference_participant_list_update (gchar**, conference_obj_t*);
 
 gchar *serialize_history_conference_entry(conference_obj_t *entry);
 
+void create_conference_history_entry_from_serialized(gchar *, gchar **, conference_obj_t **);
+
 #endif
diff --git a/sflphone-client-gnome/src/config/addressbook-config.c b/sflphone-client-gnome/src/config/addressbook-config.c
index e2108b362d98e1da4684ad367b8fcca924b7a6f6..39deed31b5843984db743ba6b0ec0409faa77a59 100644
--- a/sflphone-client-gnome/src/config/addressbook-config.c
+++ b/sflphone-client-gnome/src/config/addressbook-config.c
@@ -246,13 +246,6 @@ addressbook_config_book_active_toggled (
     }
     book_data->active = active;
 
-    if(active) {
-        DEBUG("-------------------------------------------- SET ADDRESSBOOK %s AS ACTIVE", book_data->name);
-    }
-    else {
-        DEBUG("-------------------------------------------- SET ADDRESSBOOK %s AS INACTIVE", book_data->name);
-    }
-
     // Save data
     gboolean valid;
 
diff --git a/sflphone-client-gnome/src/contacts/calltree.c b/sflphone-client-gnome/src/contacts/calltree.c
index 307338f03983d8e7654bef4338948a86587a83c1..f99fa289f86901e5c6b397934e119a324c5db7e3 100644
--- a/sflphone-client-gnome/src/contacts/calltree.c
+++ b/sflphone-client-gnome/src/contacts/calltree.c
@@ -77,7 +77,8 @@ static void calltree_add_history_conference(conference_obj_t *);
 
 static void drag_begin_cb (GtkWidget *, GdkDragContext *, gpointer);
 static void drag_end_cb (GtkWidget *, GdkDragContext *, gpointer);
-void drag_data_received_cb (GtkWidget *, GdkDragContext *, gint, gint, GtkSelectionData *, guint, guint, gpointer);
+static void drag_data_received_cb (GtkWidget *, GdkDragContext *, gint, gint, GtkSelectionData *, guint, guint, gpointer);
+static void drag_history_received_cb (GtkWidget *, GdkDragContext *, gint, gint, GtkSelectionData *, guint, guint, gpointer);
 static void menuitem_response (gchar *);
 static void calltree_create_conf_from_participant_list (GSList *);
 
@@ -104,7 +105,7 @@ static void
 call_selected_cb (GtkTreeSelection *sel, void* data UNUSED)
 {
 
-    DEBUG ("******************************************* CallTree: Selection callback");
+    DEBUG ("CallTree: Selection callback");
 
     GtkTreeIter iter;
     GValue val;
@@ -119,10 +120,10 @@ call_selected_cb (GtkTreeSelection *sel, void* data UNUSED)
     }
 
     if(active_calltree == history) {
-	DEBUG("Current call tree is history");
+	DEBUG("CallTree: Current call tree is history");
     } 
     else if(active_calltree == current_calls) {
-	DEBUG("Current call tree is current calls");
+	DEBUG("CallTree: Current call tree is current calls");
     }
 
     // store info for dragndrop
@@ -154,7 +155,7 @@ call_selected_cb (GtkTreeSelection *sel, void* data UNUSED)
             }
         }
 
-        DEBUG ("******************************* CallTree: selected_path %s, selected_conf_id %s, selected_path_depth %d",
+        DEBUG ("CallTree: selected_path %s, selected_conf_id %s, selected_path_depth %d",
                selected_path, selected_call_id, selected_path_depth);
 
     } else {
@@ -201,10 +202,12 @@ row_activated (GtkTreeView       *tree_view UNUSED,
     conference_obj_t* selectedConf = NULL;
     gchar *account_id;
 
-    DEBUG ("----------------------------------------------- CallTree: Double click action");
+    DEBUG ("CallTree: Double click action");
 
     if (calltab_get_selected_type (active_calltree) == A_CALL) {
 
+	DEBUG("CallTree: Selected a conference");
+
         selectedCall = calltab_get_selected_call (active_calltree);
 
         if (selectedCall) {
@@ -251,7 +254,7 @@ row_activated (GtkTreeView       *tree_view UNUSED,
         }
     } else if (calltab_get_selected_type (active_calltree) == A_CONFERENCE) {
 
-	DEBUG("SELECTED A CONFERENCE");
+	DEBUG("CallTree: Seleceted a conference");
 
         if (active_calltree == current_calls) {
 
@@ -276,7 +279,6 @@ row_activated (GtkTreeView       *tree_view UNUSED,
             }
         }
 	else if (active_calltree == history) {
-	    DEBUG("SELECTED A CONFERENCE IN HISTORY");
 
 	    selectedConf = calltab_get_selected_conf(history);
 	    if(selectedConf == NULL) {
@@ -284,8 +286,6 @@ row_activated (GtkTreeView       *tree_view UNUSED,
 	        return;
 	    }
 
-	    DEBUG("Selected conf id %s", selectedConf->_confID);
-
 	    calltree_create_conf_from_participant_list(selectedConf->participant_list); 
         }
     }
@@ -302,13 +302,11 @@ calltree_create_conf_from_participant_list(GSList *list) {
     DEBUG("CallTree: Create conference from participant list");
 
     participant_list = (void *) malloc(sizeof(void*));
-    
 
     // concatenate 
     for(i = 0; i < list_length; i++) {
 	gchar *number;
 	gchar *participant_id = g_slist_nth_data(list, i);
-	DEBUG("********************* participant %s ***************************", participant_id);       
         callable_obj_t *call = calllist_get_call(history, participant_id);
  
         if(c!=0) {
@@ -667,6 +665,7 @@ calltree_create (calltab_t* tab, gboolean searchbar_type)
 
     if(tab == history) {
          gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(tab->view), TRUE);
+	 g_signal_connect (G_OBJECT (tab->view), "drag_data_received", G_CALLBACK (drag_history_received_cb), NULL);
     }
 
 
@@ -985,7 +984,10 @@ void calltree_add_call (calltab_t* tab, callable_obj_t * c, GtkTreeIter *parent)
     gtk_tree_store_prepend (tab->store, &iter, parent);
 
     if (c != NULL) {
-        account_details = account_list_get_by_id (c->_callID);
+        account_details = account_list_get_by_id (c->_accountID);
+	if(account_details == NULL) {
+	    ERROR("CallTree: Could not find account %s", c->_accountID);
+	}
 
         if (account_details != NULL) {
             srtp_enabled = g_hash_table_lookup (account_details->properties, ACCOUNT_SRTP_ENABLED);
@@ -1162,7 +1164,7 @@ void calltree_add_conference (calltab_t* tab, conference_obj_t* conf)
     GdkPixbuf *pixbuf_security = NULL;
     GtkTreeIter iter;
     GtkTreePath *path;
-    GtkTreeModel *model = (GtkTreeModel*) active_calltree->store;
+    GtkTreeModel *model = (GtkTreeModel*) tab->store;
     GSList *conference_participant;
     gchar *call_id;
     callable_obj_t *call;
@@ -1170,14 +1172,14 @@ void calltree_add_conference (calltab_t* tab, conference_obj_t* conf)
     gchar *srtp_enabled = "";
     // New call in the list
     gchar * description;
-
-    DEBUG ("Calltree: Add conference %s", conf->_confID);
-
+    
     if (!conf) {
         ERROR ("Calltree: Error: Conference is null");
         return;
     }
 
+    DEBUG ("Calltree: Add conference %s", conf->_confID);
+
     if(tab == history) {
         calltree_add_history_conference(conf);
     	return;
@@ -1238,10 +1240,16 @@ void calltree_add_conference (calltab_t* tab, conference_obj_t* conf)
         while (conference_participant) {
             call_id = (gchar*) (conference_participant->data);
             call = calllist_get_call(tab, call_id);
+	    if(call == NULL) {
+		ERROR("Calltree: Error: Could not find call %s in call list", call_id);
+	    }
 
             if (call != NULL) {
 
-                account_details = account_list_get_by_id (call->_callID);
+                account_details = account_list_get_by_id (call->_accountID);
+		if (account_details == NULL) {
+		    ERROR("Calltree: Error: Could not find account %s in account list", call->_accountID);
+	        }
 
                 if (account_details != NULL) {
                     srtp_enabled = g_hash_table_lookup (account_details->properties, ACCOUNT_SRTP_ENABLED);
@@ -1264,12 +1272,9 @@ void calltree_add_conference (calltab_t* tab, conference_obj_t* conf)
         DEBUG ("Calltree: Determine if all conference participant are secured");
 
         if (conf->_conf_srtp_enabled) {
-            // participant = conf->participant;
             conference_participant = conf->participant_list;
 
-            // for (pl = participant; *pl; pl++)
             while (conference_participant) {
-                // call_id = (gchar*)(*pl);
                 call_id = (gchar*) (conference_participant->data);
                 call = calllist_get_call(tab, call_id);
 
@@ -1317,8 +1322,6 @@ void calltree_add_conference (calltab_t* tab, conference_obj_t* conf)
         return;
     }
 
-    // participant = conf->participant;
-    // participant = dbus_get_participant_list(conf->_confID);
     conference_participant = conf->participant_list;
 
     if (conference_participant) {
@@ -1339,13 +1342,6 @@ void calltree_add_conference (calltab_t* tab, conference_obj_t* conf)
         }
     }
 
-    /*
-    else
-      {
-        WARN ("Conferences cannot be added in this widget - This is a bug in the application.");
-      }
-    */
-
     gtk_tree_view_set_model (GTK_TREE_VIEW (tab->view), GTK_TREE_MODEL (tab->store));
 
     path = gtk_tree_model_get_path (model, &iter);
@@ -1367,21 +1363,19 @@ void calltree_update_conference (calltab_t* tab, const conference_obj_t* conf)
 
 void calltree_remove_conference (calltab_t* tab, const conference_obj_t* conf, GtkTreeIter *parent)
 {
-
-    DEBUG ("CallTree: Remove conference %s\n", conf->_confID);
-
     GtkTreeIter iter_parent;
     GtkTreeIter iter_child;
     GValue confval;
     GValue callval;
-    conference_obj_t * tempconf;
-    callable_obj_t * call;
+    conference_obj_t *tempconf = NULL;
+    callable_obj_t *call = NULL;
     GtkTreeStore* store = tab->store;
-
-    int nbChild = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), parent);
-
     int nbParticipant;
     int i, j;
+   	
+    DEBUG ("CallTree: Remove conference %s\n", conf->_confID);
+
+    int nbChild = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), parent);
 
     for (i = 0; i < nbChild; i++) {
 
@@ -1430,20 +1424,21 @@ void calltree_remove_conference (calltab_t* tab, const conference_obj_t* conf, G
 
 }
 
-void calltree_add_history_conference(conference_obj_t *conf) {
+void calltree_add_history_conference(conference_obj_t *conf) 
+{
     GdkPixbuf *pixbuf = NULL;
     gchar *description = "Conference: ", *date = "", *duration = "";
     GtkTreeIter iter;
     gchar *call_id;
     callable_obj_t *call; 
     GSList *conference_participant;
-
-    DEBUG("CallTree: Add conference %s to history", conf->_confID);
-
+    
     if(!conf) {
         ERROR("CallTree: Error conference is NULL");
     }
 
+    DEBUG("CallTree: Add conference %s to history", conf->_confID);
+
     gtk_tree_store_prepend(history->store, &iter, NULL);
 
     pixbuf = gdk_pixbuf_new_from_file(ICONS_DIR "/usersAttached.svg", NULL);
@@ -1478,8 +1473,6 @@ void calltree_add_history_conference(conference_obj_t *conf) {
 
 void calltree_display (calltab_t *tab)
 {
-
-
     GtkTreeSelection *sel;
 
     /* If we already are displaying the specified calltree */
@@ -1489,7 +1482,7 @@ void calltree_display (calltab_t *tab)
     /* case 1: we want to display the main calltree */
     if (tab==current_calls) {
 
-        DEBUG ("display main tab");
+        DEBUG ("CallTree: Display main tab");
 
 
         if (active_calltree==contacts) {
@@ -1503,9 +1496,9 @@ void calltree_display (calltab_t *tab)
     }
 
     /* case 2: we want to display the history */
-    else if (tab==history) {
+    else if (tab == history) {
 
-        DEBUG ("display history tab");
+        DEBUG ("ConferenceList: Display history tab");
 
         if (active_calltree==contacts) {
             gtk_toggle_tool_button_set_active ( (GtkToggleToolButton*) contactButton, FALSE);
@@ -1516,7 +1509,7 @@ void calltree_display (calltab_t *tab)
 
     else if (tab==contacts) {
 
-        DEBUG ("display contact tab");
+        DEBUG ("CallTree: Display contact tab");
 
         if (active_calltree==history) {
             gtk_toggle_tool_button_set_active ( (GtkToggleToolButton*) historyButton, FALSE);
@@ -1526,17 +1519,16 @@ void calltree_display (calltab_t *tab)
 
         set_forcus_on_addressbook_searchbar();
     }
-
-    else
-        ERROR ("calltree.c line %d . This is probably a bug in the application", __LINE__);
-
+    else {
+        ERROR ("CallTree: Error: Not a valid call tab  (%d, %s)", __LINE__, __FILE__);
+    }
 
     gtk_widget_hide (active_calltree->tree);
     active_calltree = tab;
     gtk_widget_show (active_calltree->tree);
 
     sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (active_calltree->view));
-    DEBUG ("Emit signal changed from calltree_display");
+    DEBUG ("CallTree: Emit signal changed from calltree_display");
     g_signal_emit_by_name (sel, "changed");
     update_actions();
 }
@@ -1855,6 +1847,10 @@ static void drag_end_cb (GtkWidget * widget UNUSED, GdkDragContext * context UNU
 
 }
 
+void drag_history_received_cb (GtkWidget *widget, GdkDragContext *context UNUSED, gint x UNUSED, gint y UNUSED, GtkSelectionData *selection_data UNUSED, guint info UNUSED, guint t UNUSED, gpointer data UNUSED)
+{
+    g_signal_stop_emission_by_name(G_OBJECT(widget), "drag_data_received"); 
+}
 
 void drag_data_received_cb (GtkWidget *widget, GdkDragContext *context UNUSED, gint x UNUSED, gint y UNUSED, GtkSelectionData *selection_data UNUSED, guint info UNUSED, guint t UNUSED, gpointer data UNUSED)
 {
@@ -1863,6 +1859,10 @@ void drag_data_received_cb (GtkWidget *widget, GdkDragContext *context UNUSED, g
     GtkTreeViewDropPosition position;
     GValue val;
 
+    if(active_calltree == history) {
+	g_signal_stop_emission_by_name(G_OBJECT(widget), "drag_data_received");
+    }
+
     GtkTreeModel* tree_model = gtk_tree_view_get_model (tree_view);
 
     GtkTreeIter iter;
diff --git a/sflphone-client-gnome/src/contacts/conferencelist.c b/sflphone-client-gnome/src/contacts/conferencelist.c
index 5ecb86cab89c60864bcfe28f6018d1104b8b2dc2..399cee58aa16f39d5bd14834616b58d41447a054 100644
--- a/sflphone-client-gnome/src/contacts/conferencelist.c
+++ b/sflphone-client-gnome/src/contacts/conferencelist.c
@@ -118,6 +118,8 @@ void conferencelist_remove (calltab_t *tab, const gchar* conf)
 {
     gchar* c; 
 
+    DEBUG("ConferenceList: Remove conference %s", conf);
+
     if(conf == NULL) {
 	ERROR("ConferenceList: Error: Conf id is NULL");
 	return;
@@ -143,6 +145,8 @@ conference_obj_t* conferencelist_get (calltab_t *tab, const gchar* conf_id)
 
     GList* c;
 
+    DEBUG("ConferenceList: Conference list get %s", conf_id);
+
     if(tab == NULL) {
 	ERROR("ConferenceList: Error: Calltab is NULL");
 	return;
diff --git a/sflphone-common/test/siptest.cpp b/sflphone-common/test/siptest.cpp
index eeaffa5051ffe71e53097d1400ee9d82a95ae90d..8fed03d09e37d0a5535de587cdbc906b20c1cea1 100644
--- a/sflphone-common/test/siptest.cpp
+++ b/sflphone-common/test/siptest.cpp
@@ -232,7 +232,7 @@ void SIPTest::testTwoOutgoingIpCall ()
     void *status;
 
     // This scenario expect to be put on hold before hangup 
-    std::string firstCallCommand("sipp -sf sippxml/test_1.xml -i 127.0.0.1 -p 5062 -m 1");
+    std::string firstCallCommand("sipp -sf tools/sippxml/test_1.xml -i 127.0.0.1 -p 5062 -m 1");
 
     // The second call uses the default user agent scenario
     std::string secondCallCommand("sipp -sn uas -i 127.0.0.1 -p 5064 -m 1");
@@ -302,7 +302,7 @@ void SIPTest::testTwoIncomingIpCall ()
     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
 
     // the first call is supposed to be put on hold when answering teh second incoming call
-    std::string firstCallCommand("sipp -sf sippxml/test_2.xml 127.0.0.1 -i 127.0.0.1 -p 5064 -m 1 > testfile1.txt");
+    std::string firstCallCommand("sipp -sf tools/sippxml/test_2.xml 127.0.0.1 -i 127.0.0.1 -p 5064 -m 1 > testfile1.txt");
 
     // command to be executed by the thread, user agent client which initiate a call and hangup
     std::string secondCallCommand("sipp -sn uac 127.0.0.1 -i 127.0.0.1 -p 5062 -m 1 -d 250 > testfile2.txt");
@@ -377,7 +377,7 @@ void SIPTest::testHoldIpCall()
 {
     pthread_t callThread;
 
-    std::string callCommand("sipp -sf sippxml/test_3.xml -i 127.0.0.1 -p 5062 -m 1");
+    std::string callCommand("sipp -sf tools/sippxml/test_3.xml -i 127.0.0.1 -p 5062 -m 1");
 
     int rc = pthread_create(&callThread, NULL, sippThread, (void *)(&callCommand));
     if(rc) {
@@ -415,7 +415,7 @@ void SIPTest::testIncomingIpCallSdp ()
     void *status;
 
     // command to be executed by the thread, user agent client which initiate a call and hangup
-    std::string command("sipp -sf sippxml/test_4.xml 127.0.0.1 -i 127.0.0.1 -p 5062 -m 1");
+    std::string command("sipp -sf tools/sippxml/test_4.xml 127.0.0.1 -i 127.0.0.1 -p 5062 -m 1");
 
     int rc = pthread_create(&thethread, NULL, sippThread, (void *)(&command));
     if (rc) {
diff --git a/sippxml/account_uac_send_hangup.xml b/tools/sippxml/account_uac_send_hangup.xml
similarity index 100%
rename from sippxml/account_uac_send_hangup.xml
rename to tools/sippxml/account_uac_send_hangup.xml
diff --git a/sippxml/account_uac_send_peer_hungup.xml b/tools/sippxml/account_uac_send_peer_hungup.xml
similarity index 100%
rename from sippxml/account_uac_send_peer_hungup.xml
rename to tools/sippxml/account_uac_send_peer_hungup.xml
diff --git a/sippxml/account_uas_receive_transfer.xml b/tools/sippxml/account_uas_receive_transfer.xml
similarity index 100%
rename from sippxml/account_uas_receive_transfer.xml
rename to tools/sippxml/account_uas_receive_transfer.xml
diff --git a/sippxml/account_uas_recv_hangup.xml b/tools/sippxml/account_uas_recv_hangup.xml
similarity index 100%
rename from sippxml/account_uas_recv_hangup.xml
rename to tools/sippxml/account_uas_recv_hangup.xml
diff --git a/sippxml/account_uas_recv_peer_hungup.xml b/tools/sippxml/account_uas_recv_peer_hungup.xml
similarity index 100%
rename from sippxml/account_uas_recv_peer_hungup.xml
rename to tools/sippxml/account_uas_recv_peer_hungup.xml
diff --git a/sippxml/account_uas_recv_transfered.xml b/tools/sippxml/account_uas_recv_transfered.xml
similarity index 100%
rename from sippxml/account_uas_recv_transfered.xml
rename to tools/sippxml/account_uas_recv_transfered.xml
diff --git a/sippxml/account_uas_register.xml b/tools/sippxml/account_uas_register.xml
similarity index 100%
rename from sippxml/account_uas_register.xml
rename to tools/sippxml/account_uas_register.xml
diff --git a/sippxml/accountcalluac.xml b/tools/sippxml/accountcalluac.xml
similarity index 100%
rename from sippxml/accountcalluac.xml
rename to tools/sippxml/accountcalluac.xml
diff --git a/sippxml/accountcalluas.xml b/tools/sippxml/accountcalluas.xml
similarity index 100%
rename from sippxml/accountcalluas.xml
rename to tools/sippxml/accountcalluas.xml
diff --git a/sippxml/g711a.pcap b/tools/sippxml/g711a.pcap
similarity index 100%
rename from sippxml/g711a.pcap
rename to tools/sippxml/g711a.pcap
diff --git a/sippxml/ip2ip_uac_send_hangup.xml b/tools/sippxml/ip2ip_uac_send_hangup.xml
similarity index 100%
rename from sippxml/ip2ip_uac_send_hangup.xml
rename to tools/sippxml/ip2ip_uac_send_hangup.xml
diff --git a/sippxml/ip2ip_uac_send_peer_hungup.xml b/tools/sippxml/ip2ip_uac_send_peer_hungup.xml
similarity index 100%
rename from sippxml/ip2ip_uac_send_peer_hungup.xml
rename to tools/sippxml/ip2ip_uac_send_peer_hungup.xml
diff --git a/sippxml/ip2ip_uas_recv_hangup.xml b/tools/sippxml/ip2ip_uas_recv_hangup.xml
similarity index 100%
rename from sippxml/ip2ip_uas_recv_hangup.xml
rename to tools/sippxml/ip2ip_uas_recv_hangup.xml
diff --git a/sippxml/ip2ip_uas_recv_hold_offhold.xml b/tools/sippxml/ip2ip_uas_recv_hold_offhold.xml
similarity index 100%
rename from sippxml/ip2ip_uas_recv_hold_offhold.xml
rename to tools/sippxml/ip2ip_uas_recv_hold_offhold.xml
diff --git a/sippxml/ip2ip_uas_recv_peer_hungup.xml b/tools/sippxml/ip2ip_uas_recv_peer_hungup.xml
similarity index 100%
rename from sippxml/ip2ip_uas_recv_peer_hungup.xml
rename to tools/sippxml/ip2ip_uas_recv_peer_hungup.xml
diff --git a/sippxml/ip2ipcalluac.xml b/tools/sippxml/ip2ipcalluac.xml
similarity index 100%
rename from sippxml/ip2ipcalluac.xml
rename to tools/sippxml/ip2ipcalluac.xml
diff --git a/sippxml/ip2ipcalluas.xml b/tools/sippxml/ip2ipcalluas.xml
similarity index 100%
rename from sippxml/ip2ipcalluas.xml
rename to tools/sippxml/ip2ipcalluas.xml
diff --git a/sippxml/simpleServiceRoute.xml b/tools/sippxml/simpleServiceRoute.xml
similarity index 100%
rename from sippxml/simpleServiceRoute.xml
rename to tools/sippxml/simpleServiceRoute.xml
diff --git a/sippxml/sippusage.txt b/tools/sippxml/sippusage.txt
similarity index 100%
rename from sippxml/sippusage.txt
rename to tools/sippxml/sippusage.txt
diff --git a/sippxml/tempscript.sh b/tools/sippxml/tempscript.sh
similarity index 100%
rename from sippxml/tempscript.sh
rename to tools/sippxml/tempscript.sh
diff --git a/sippxml/testEarlyMedia.xml b/tools/sippxml/testEarlyMedia.xml
similarity index 100%
rename from sippxml/testEarlyMedia.xml
rename to tools/sippxml/testEarlyMedia.xml
diff --git a/sippxml/testsuiteuac.sh b/tools/sippxml/testsuiteuac.sh
similarity index 100%
rename from sippxml/testsuiteuac.sh
rename to tools/sippxml/testsuiteuac.sh
diff --git a/sippxml/voice b/tools/sippxml/voice
similarity index 100%
rename from sippxml/voice
rename to tools/sippxml/voice