diff --git a/sflphone-client-gnome/src/config/accountwindow.c b/sflphone-client-gnome/src/config/accountwindow.c
index 61456e40f70a9b1a6489dba7a0cefea1a06fe2d5..f3e19db1b2b409be86f24a662b9b140a9f80fc88 100644
--- a/sflphone-client-gnome/src/config/accountwindow.c
+++ b/sflphone-client-gnome/src/config/accountwindow.c
@@ -51,7 +51,9 @@ GtkWidget * entryResolveNameOnlyOnce;
 GtkWidget * entryExpire;
 GtkListStore * credentialStore;
 GtkWidget * deleteCredButton;
-
+GtkWidget * treeViewCredential;
+GtkWidget * scrolledWindowCredential;
+		
 // Credentials
 enum {
     COLUMN_CREDENTIAL_REALM,
@@ -314,13 +316,20 @@ static void add_credential_cb (GtkWidget *button, gpointer data)
 {
     GtkTreeIter iter;
     GtkTreeModel *model = (GtkTreeModel *)data;
-
+    GtkRequisition requisitionTreeView;
+    GtkRequisition oldRequisitionTreeView;
+ 
+    gtk_widget_size_request(GTK_WIDGET(treeViewCredential), &oldRequisitionTreeView);
+           
     gtk_list_store_append (GTK_LIST_STORE (model), &iter);
     gtk_list_store_set (GTK_LIST_STORE (model), &iter,
                         COLUMN_CREDENTIAL_REALM, "*",
                         COLUMN_CREDENTIAL_USERNAME, _("Authentication"),
                         COLUMN_CREDENTIAL_PASSWORD, _("Secret"),
                         -1);
+                        
+    gtk_widget_size_request(GTK_WIDGET(treeViewCredential), &requisitionTreeView);
+    gtk_widget_set_size_request(GTK_WIDGET(scrolledWindowCredential), oldRequisitionTreeView.width, requisitionTreeView.height + 20);
 }
 
 static void delete_credential_cb(GtkWidget *button, gpointer data)
@@ -329,7 +338,11 @@ static void delete_credential_cb(GtkWidget *button, gpointer data)
     GtkTreeView *treeview = (GtkTreeView *)data;
     GtkTreeModel *model = gtk_tree_view_get_model (treeview);
     GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview);
-    
+    GtkRequisition requisitionTreeView;
+    GtkRequisition oldRequisitionTreeView;
+  
+    gtk_widget_size_request(GTK_WIDGET(treeViewCredential), &oldRequisitionTreeView);
+          
     if (gtk_tree_selection_get_selected (selection, NULL, &iter))
     {
         GtkTreePath *path;
@@ -338,6 +351,10 @@ static void delete_credential_cb(GtkWidget *button, gpointer data)
         
         gtk_tree_path_free (path);
     }
+
+    gtk_widget_size_request(GTK_WIDGET(treeViewCredential), &requisitionTreeView);
+    gtk_widget_set_size_request(GTK_WIDGET(scrolledWindowCredential), oldRequisitionTreeView.width, requisitionTreeView.height + 20);
+
 }
 
 static void cell_edited_cb(GtkCellRendererText *renderer, gchar *path_desc, gchar *text, gpointer data)
@@ -345,7 +362,7 @@ static void cell_edited_cb(GtkCellRendererText *renderer, gchar *path_desc, gcha
     GtkTreeModel *model = (GtkTreeModel *)data;
     GtkTreePath *path = gtk_tree_path_new_from_string (path_desc);
     GtkTreeIter iter;
-
+     
     gint column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (renderer), "column"));
     
     if(g_strcasecmp(path_desc, "0") == 0) {
@@ -370,8 +387,6 @@ GtkWidget * createAdvancedTab(account_t **a)
 {
 	GtkWidget * frame;
 	GtkWidget * table;
-	GtkWidget * scrolledWindow;
-	GtkWidget * treeView;
 	GtkWidget * ret;
 	GtkWidget * hbox;
 	GtkWidget * editButton;
@@ -428,10 +443,10 @@ GtkWidget * createAdvancedTab(account_t **a)
 	gtk_table_set_row_spacings (GTK_TABLE(table), 10);
     gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
 	
-    scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
-    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-    gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_SHADOW_IN);
-    gtk_table_attach (GTK_TABLE(table), scrolledWindow, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+    scrolledWindowCredential = gtk_scrolled_window_new(NULL, NULL);
+    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindowCredential), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+    gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledWindowCredential), GTK_SHADOW_IN);
+    gtk_table_attach (GTK_TABLE(table), scrolledWindowCredential, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
     
     credentialStore = gtk_list_store_new(COLUMN_CREDENTIAL_COUNT,
             G_TYPE_STRING,  // Realm
@@ -440,8 +455,8 @@ GtkWidget * createAdvancedTab(account_t **a)
             G_TYPE_POINTER  // Pointer to the Object
             );
             
-    treeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(credentialStore));
-    treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW (treeView));
+    treeViewCredential = gtk_tree_view_new_with_model(GTK_TREE_MODEL(credentialStore));
+    treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW (treeViewCredential));
     g_signal_connect(G_OBJECT (treeSelection), "changed", G_CALLBACK (select_credential_cb), credentialStore);
     
     renderer = gtk_cell_renderer_text_new();
@@ -452,7 +467,7 @@ GtkWidget * createAdvancedTab(account_t **a)
             renderer,
             "markup", COLUMN_CREDENTIAL_REALM,
             NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
+    gtk_tree_view_append_column (GTK_TREE_VIEW(treeViewCredential), treeViewColumn);
 
     renderer = gtk_cell_renderer_text_new();
     g_object_set (renderer, "editable", TRUE, "editable-set", TRUE, NULL);
@@ -462,7 +477,7 @@ GtkWidget * createAdvancedTab(account_t **a)
             renderer,
             "markup", COLUMN_CREDENTIAL_USERNAME,
             NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
+    gtk_tree_view_append_column (GTK_TREE_VIEW(treeViewCredential), treeViewColumn);
 
     renderer = gtk_cell_renderer_text_new();
     g_object_set (renderer, "editable", TRUE, "editable-set", TRUE, NULL);
@@ -473,15 +488,15 @@ GtkWidget * createAdvancedTab(account_t **a)
             renderer,
             "markup", COLUMN_CREDENTIAL_PASSWORD,
             NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
+    gtk_tree_view_append_column (GTK_TREE_VIEW(treeViewCredential), treeViewColumn);
     
-    gtk_container_add(GTK_CONTAINER(scrolledWindow), treeView);
+    gtk_container_add(GTK_CONTAINER(scrolledWindowCredential), treeViewCredential);
     
     fill_treeview_with_credential(credentialStore, *a);
         
     /* Dynamically resize the window to fit the scrolled window */
-    gtk_widget_size_request(GTK_WIDGET(treeView), &requisitionTreeView);
-    gtk_widget_set_size_request(GTK_WIDGET(scrolledWindow), requisitionTable.width, requisitionTreeView.height + 10);
+    gtk_widget_size_request(GTK_WIDGET(treeViewCredential), &requisitionTreeView);
+    gtk_widget_set_size_request(GTK_WIDGET(scrolledWindowCredential), requisitionTable.width, requisitionTreeView.height + 20);
         
     /* Credential Buttons */    
     hbox = gtk_hbox_new(FALSE, 10);
@@ -492,7 +507,7 @@ GtkWidget * createAdvancedTab(account_t **a)
     gtk_box_pack_start(GTK_BOX(hbox), addButton, FALSE, FALSE, 0);
         
     deleteCredButton = gtk_button_new_from_stock (GTK_STOCK_REMOVE);
-    g_signal_connect (deleteCredButton, "clicked", G_CALLBACK (delete_credential_cb), treeView);
+    g_signal_connect (deleteCredButton, "clicked", G_CALLBACK (delete_credential_cb), treeViewCredential);
     gtk_box_pack_start(GTK_BOX(hbox), deleteCredButton, FALSE, FALSE, 0);
                        	
     gtk_widget_show_all(ret);
diff --git a/sflphone-common/src/sipaccount.cpp b/sflphone-common/src/sipaccount.cpp
index 3e8dbf52b07e8b582619875b299d0f78502c51da..38f3e8ce8bf29e792add997dc7dcf5883a9aa0d0 100644
--- a/sflphone-common/src/sipaccount.cpp
+++ b/sflphone-common/src/sipaccount.cpp
@@ -70,8 +70,9 @@ int SIPAccount::registerVoIPLink()
     
     int credentialCount = 0;
     credentialCount = Manager::instance().getConfigInt (_accountID, CONFIG_CREDENTIAL_NUMBER);
+    credentialCount += 1;
     
-    pjsip_cred_info * cred_info = (pjsip_cred_info *) malloc(sizeof(pjsip_cred_info)*(credentialCount+1));        
+    pjsip_cred_info * cred_info = (pjsip_cred_info *) malloc(sizeof(pjsip_cred_info)*(credentialCount));        
     if (cred_info == NULL) {
         _debug("Failed to set cred_info for account %s\n", _accountID.c_str());
         return !SUCCESS;
@@ -89,10 +90,10 @@ int SIPAccount::registerVoIPLink()
     cred_info[0].scheme = pj_str("digest");
             
     int i;
-    for (i = 0; i < credentialCount; i++) {
+    for (i = 1; i < credentialCount; i++) {
         std::string credentialIndex;
         std::stringstream streamOut;
-        streamOut << i;
+        streamOut << i - 1;
         credentialIndex = streamOut.str();
 
         std::string section = std::string("Credential") + std::string(":") + _accountID + std::string(":") + credentialIndex;
@@ -107,7 +108,7 @@ int SIPAccount::registerVoIPLink()
         cred_info[i].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
         cred_info[i].scheme = pj_str("digest");
         
-        _debug("Setting credential %d realm = %s\n", i, realm.c_str());
+        _debug("Setting credential %d realm = %s passwd = %s username = %s data_type = %d\n", i, realm.c_str(), password.c_str(), username.c_str(), cred_info[i].data_type);
     }
 
     _credentialCount = credentialCount;
diff --git a/sflphone-common/src/sipvoiplink.cpp b/sflphone-common/src/sipvoiplink.cpp
index c41e4a335e5d14d0b236dc5822a4f45fed8dc372..4ef449218d9bb5eaf550c15198801ffb55750e33 100644
--- a/sflphone-common/src/sipvoiplink.cpp
+++ b/sflphone-common/src/sipvoiplink.cpp
@@ -485,6 +485,7 @@ int SIPVoIPLink::sendRegister (AccountID id)
 
     pjsip_cred_info *cred = account->getCredInfo();
     int credential_count = account->getCredentialCount();
+    _debug("setting %d credentials\n", credential_count);
     pjsip_regc_set_credentials (regc, credential_count, cred);
             
     // Add User-Agent Header