diff --git a/sflphone-client-gnome/src/config/accountlistconfigdialog.c b/sflphone-client-gnome/src/config/accountlistconfigdialog.c
new file mode 100644
index 0000000000000000000000000000000000000000..877527e5adb2fa48e8334574c0392ab9dfe19502
--- /dev/null
+++ b/sflphone-client-gnome/src/config/accountlistconfigdialog.c
@@ -0,0 +1,503 @@
+/*
+ *  Copyright (C) 2007 Savoir-Faire Linux inc.
+ *  Author: Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>
+ *  Author: Pierre-Luc Bacon <pierre-luc.bacon@savoirfairelinux.com>
+ *                                                                              
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *                                                                                
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *                                                                              
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <accountlistconfigdialog.h>
+#include <dbus/dbus.h>
+#include <actions.h>
+#include <utils.h>
+
+#define CONTEXT_ID_REGISTRATION 0
+
+GtkWidget *addButton;
+GtkWidget *editButton;
+GtkWidget *deleteButton;
+GtkWidget *restoreButton;
+GtkWidget *accountMoveDownButton;
+GtkWidget *accountMoveUpButton;
+GtkWidget * status_bar;
+GtkListStore * accountStore;
+
+GtkDialog * accountListDialog = NULL;
+
+      
+account_t * selectedAccount = NULL;      
+// Account properties
+enum {
+    COLUMN_ACCOUNT_ALIAS,
+    COLUMN_ACCOUNT_TYPE,
+    COLUMN_ACCOUNT_STATUS,
+    COLUMN_ACCOUNT_ACTIVE,
+    COLUMN_ACCOUNT_DATA,
+    COLUMN_ACCOUNT_COUNT
+};
+
+/**
+ * Fills the treelist with accounts
+ */
+    void
+account_list_config_dialog_fill()
+{
+    
+    if (accountListDialog == NULL) {
+        DEBUG("Dialog is not opened");
+        return;
+    }
+    
+    GtkTreeIter iter;
+
+    gtk_list_store_clear(accountStore);
+    
+    unsigned int i;
+    for(i = 0; i < account_list_get_size(); i++) {
+        account_t * a = account_list_get_nth (i);
+    
+        if (a) {
+            gtk_list_store_append (accountStore, &iter);
+
+            DEBUG("Filling accounts: Account is enabled :%s", g_hash_table_lookup(a->properties, ACCOUNT_ENABLED));
+            
+            gtk_list_store_set(accountStore, &iter,
+                    COLUMN_ACCOUNT_ALIAS, g_hash_table_lookup(a->properties, ACCOUNT_ALIAS),  // Name
+                    COLUMN_ACCOUNT_TYPE, g_hash_table_lookup(a->properties, ACCOUNT_TYPE),   // Protocol
+                    COLUMN_ACCOUNT_STATUS, account_state_name(a->state),      // Status
+                    COLUMN_ACCOUNT_ACTIVE, (g_strcasecmp(g_hash_table_lookup(a->properties, ACCOUNT_ENABLED),"true") == 0)? TRUE:FALSE,  // Enable/Disable
+                    COLUMN_ACCOUNT_DATA, a,   // Pointer
+                    -1);
+        }
+    }
+    
+}
+
+/**
+ * Delete an account
+ */
+    static void
+delete_account_cb(GtkWidget *widget UNUSED, gpointer data UNUSED)
+{
+    if(selectedAccount != NULL) {
+        dbus_remove_account(selectedAccount->accountID);
+    }
+}
+
+
+/**
+ * Edit an account
+ */
+    static void
+edit_account_cb(GtkWidget *widget UNUSED, gpointer data UNUSED)
+{
+    if(selectedAccount != NULL)
+    {
+        show_account_window(selectedAccount);
+    } 
+}
+
+/**
+ * Add an account
+ */
+static void
+add_account_cb(GtkWidget *widget UNUSED, gpointer data UNUSED)
+{
+    show_account_window(NULL);
+}
+
+/**
+ * Call back when the user click on an account in the list
+ */
+    static void
+select_account_cb(GtkTreeSelection *selection, GtkTreeModel *model)
+{
+    GtkTreeIter iter;
+    GValue val;
+
+    memset (&val, 0, sizeof(val));
+    if (!gtk_tree_selection_get_selected(selection, &model, &iter))
+    {
+        selectedAccount = NULL;
+        gtk_widget_set_sensitive(GTK_WIDGET(accountMoveUpButton), FALSE);
+        gtk_widget_set_sensitive(GTK_WIDGET(accountMoveDownButton), FALSE);
+        gtk_widget_set_sensitive(GTK_WIDGET(editButton), FALSE);
+        gtk_widget_set_sensitive(GTK_WIDGET(deleteButton), FALSE);                
+        return;
+    }
+
+    // The Gvalue will be initialized in the following function
+    gtk_tree_model_get_value(model, &iter, COLUMN_ACCOUNT_DATA, &val);
+
+    selectedAccount = (account_t*)g_value_get_pointer(&val);
+    g_value_unset(&val);
+
+    if(selectedAccount != NULL)
+    {
+        gtk_widget_set_sensitive(GTK_WIDGET(accountMoveUpButton), TRUE);
+        gtk_widget_set_sensitive(GTK_WIDGET(accountMoveDownButton), TRUE);
+        gtk_widget_set_sensitive(GTK_WIDGET(editButton), TRUE);
+        gtk_widget_set_sensitive(GTK_WIDGET(deleteButton), TRUE);      
+
+        /* Update status bar about current registration state */
+        gtk_statusbar_pop(status_bar, CONTEXT_ID_REGISTRATION);
+        
+        if (selectedAccount->protocol_state_description != NULL  
+            && selectedAccount->protocol_state_code != 0) {
+            
+            gchar code[4];
+            g_snprintf(code, 4, "%d", selectedAccount->protocol_state_code);
+            
+           gchar * message = g_strconcat(
+                                account_state_name(selectedAccount->state), 
+                                ". ", 
+                                _("Server returned \""),
+                                selectedAccount->protocol_state_description, 
+                                "\" (",
+                                code,
+                                ") ",
+                                NULL);
+                        
+           gtk_statusbar_push(status_bar, CONTEXT_ID_REGISTRATION, message);
+           
+           g_free(message);
+            
+        } else {
+            gchar * state = account_state_name(selectedAccount->state);        
+            gtk_statusbar_push(status_bar, CONTEXT_ID_REGISTRATION, state);        
+        }
+                  
+    }
+    
+    DEBUG("Selecting account in account window");
+}
+
+    static void
+enable_account_cb(GtkCellRendererToggle *rend UNUSED, gchar* path,  gpointer data )
+{
+    GtkTreeIter iter;
+    GtkTreePath *treePath;    
+    GtkTreeModel *model;
+    gboolean enable;
+    account_t* acc ;
+
+    // Get pointer on object
+    treePath = gtk_tree_path_new_from_string(path);
+    model = gtk_tree_view_get_model(GTK_TREE_VIEW(data));
+    gtk_tree_model_get_iter(model, &iter, treePath);
+    gtk_tree_model_get(model, &iter,
+            COLUMN_ACCOUNT_ACTIVE, &enable,
+            COLUMN_ACCOUNT_DATA, &acc,
+            -1);
+    enable = !enable;
+
+    DEBUG("Account is %d enabled", enable);
+    // Store value
+    gtk_list_store_set(GTK_LIST_STORE(model), &iter,
+            COLUMN_ACCOUNT_ACTIVE, enable,
+            -1);
+
+    // Modify account state
+    gchar * registrationState;
+    if (enable == TRUE) {
+        registrationState = g_strdup("true");
+    } else {
+        registrationState = g_strdup("false");
+    }
+    DEBUG("Replacing with %s", registrationState);
+    g_hash_table_replace( acc->properties , g_strdup(ACCOUNT_ENABLED), registrationState);
+
+    dbus_send_register(acc->accountID, enable);
+
+}
+
+/**
+ * Move account in list depending on direction and selected account
+ */
+    static void
+account_move(gboolean moveUp, gpointer data)
+{
+    GtkTreeIter iter;
+    GtkTreeIter *iter2;
+    GtkTreeView *treeView;
+    GtkTreeModel *model;
+    GtkTreeSelection *selection;
+    GtkTreePath *treePath;
+    gchar *path;
+
+    // Get view, model and selection of codec store
+    treeView = GTK_TREE_VIEW(data);
+    model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeView));
+    selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeView));
+
+    // Find selected iteration and create a copy
+    gtk_tree_selection_get_selected(GTK_TREE_SELECTION(selection), &model, &iter);
+    iter2 = gtk_tree_iter_copy(&iter);
+
+    // Find path of iteration
+    path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(model), &iter);
+    treePath = gtk_tree_path_new_from_string(path);
+    gint *indices = gtk_tree_path_get_indices(treePath);
+    gint indice = indices[0];
+
+    // Depending on button direction get new path
+    if(moveUp)
+        gtk_tree_path_prev(treePath);
+    else
+        gtk_tree_path_next(treePath);
+    gtk_tree_model_get_iter(model, &iter, treePath);
+
+    // Swap iterations if valid
+    if(gtk_list_store_iter_is_valid(GTK_LIST_STORE(model), &iter))
+        gtk_list_store_swap(GTK_LIST_STORE(model), &iter, iter2);
+
+    // Scroll to new position
+    gtk_tree_view_scroll_to_cell(treeView, treePath, NULL, FALSE, 0, 0);
+
+    // Free resources
+    gtk_tree_path_free(treePath);
+    gtk_tree_iter_free(iter2);
+    g_free(path);
+
+    // Perpetuate changes in account queue
+    if(moveUp)
+        account_list_move_up(indice);
+    else
+        account_list_move_down(indice);
+
+
+    // Set the order in the configuration file
+    dbus_set_accounts_order (account_list_get_ordered_list ());
+}
+
+/**
+ * Called from move up account button signal
+ */
+    static void
+account_move_up_cb(GtkButton *button UNUSED, gpointer data)
+{
+    // Change tree view ordering and get indice changed
+    account_move(TRUE, data);
+}
+
+/**
+ * Called from move down account button signal
+ */
+    static void
+account_move_down_cb(GtkButton *button UNUSED, gpointer data)
+{
+    // Change tree view ordering and get indice changed
+    account_move(FALSE, data);
+}
+
+static void 
+help_contents_cb (GtkWidget * widget,
+                  gpointer data UNUSED)
+{
+    GError *error = NULL;
+    
+    gboolean success = gtk_show_uri (NULL, "ghelp: sflphone.xml", GDK_CURRENT_TIME, &error);
+
+    if (error != NULL)
+    {    
+            g_warning ("%s", error->message);
+
+            g_error_free (error);
+    }    
+}
+
+static void
+close_dialog_cb (GtkWidget * widget,
+                  gpointer data UNUSED)
+{
+    gtk_dialog_response(GTK_DIALOG(accountListDialog), GTK_RESPONSE_ACCEPT);
+
+}
+
+/**
+ * Account settings tab
+ */
+    GtkWidget *
+create_account_list(GtkDialog * dialog)
+{
+    GtkWidget *table;
+    GtkWidget *scrolledWindow;
+    GtkWidget *buttonBox;
+    GtkCellRenderer *renderer;
+    GtkTreeView * treeView;
+    GtkTreeViewColumn *treeViewColumn;
+    GtkTreeSelection *treeSelection;
+    GtkRequisition requisition;
+
+    selectedAccount = NULL;
+
+    table = gtk_table_new (1, 2, FALSE/* homogeneous */);
+    gtk_table_set_col_spacings(GTK_TABLE(table), 10); 
+    gtk_container_set_border_width(GTK_TABLE(table), 10);    
+    
+    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);
+
+    accountStore = gtk_list_store_new(COLUMN_ACCOUNT_COUNT,
+            G_TYPE_STRING,  // Name
+            G_TYPE_STRING,  // Protocol
+            G_TYPE_STRING,  // Status
+            G_TYPE_BOOLEAN, // Enabled / Disabled
+            G_TYPE_POINTER  // Pointer to the Object
+            );
+
+    treeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(accountStore));
+    treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW (treeView));
+    g_signal_connect(G_OBJECT (treeSelection), "changed",
+            G_CALLBACK (select_account_cb),
+            accountStore);
+
+    renderer = gtk_cell_renderer_toggle_new();
+    treeViewColumn = gtk_tree_view_column_new_with_attributes("Enabled", renderer, "active", COLUMN_ACCOUNT_ACTIVE , NULL);
+    gtk_tree_view_append_column(GTK_TREE_VIEW(treeView), treeViewColumn);
+    g_signal_connect( G_OBJECT(renderer) , "toggled" , G_CALLBACK(enable_account_cb), (gpointer)treeView );
+
+    renderer = gtk_cell_renderer_text_new();
+    treeViewColumn = gtk_tree_view_column_new_with_attributes ("Alias",
+            renderer,
+            "markup", COLUMN_ACCOUNT_ALIAS,
+            NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
+
+    // A double click on the account line opens the window to edit the account
+    g_signal_connect( G_OBJECT( treeView ) , "row-activated" , G_CALLBACK( edit_account_cb ) , NULL );
+
+    renderer = gtk_cell_renderer_text_new();
+    treeViewColumn = gtk_tree_view_column_new_with_attributes (_("Protocol"),
+            renderer,
+            "markup", COLUMN_ACCOUNT_TYPE,
+            NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
+
+    renderer = gtk_cell_renderer_text_new();
+    treeViewColumn = gtk_tree_view_column_new_with_attributes (_("Status"),
+            renderer,
+            "markup", COLUMN_ACCOUNT_STATUS,
+            NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
+
+    g_object_unref(G_OBJECT(accountStore));
+    
+    gtk_container_add(GTK_CONTAINER(scrolledWindow), treeView);
+    
+    /* The buttons to press! */    
+    buttonBox = gtk_vbutton_box_new();
+    gtk_box_set_spacing(GTK_BOX(buttonBox), 10);
+    gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonBox), GTK_BUTTONBOX_START);
+    gtk_table_attach (GTK_TABLE(table), buttonBox, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+    accountMoveUpButton = gtk_button_new_from_stock(GTK_STOCK_GO_UP);
+    gtk_widget_set_sensitive(GTK_WIDGET(accountMoveUpButton), FALSE);
+    gtk_box_pack_start(GTK_BOX(buttonBox), accountMoveUpButton, FALSE, FALSE, 0);
+    g_signal_connect(G_OBJECT(accountMoveUpButton), "clicked", G_CALLBACK(account_move_up_cb), treeView);
+
+    accountMoveDownButton = gtk_button_new_from_stock(GTK_STOCK_GO_DOWN);
+    gtk_widget_set_sensitive(GTK_WIDGET(accountMoveDownButton), FALSE);
+    gtk_box_pack_start(GTK_BOX(buttonBox), accountMoveDownButton, FALSE, FALSE, 0);
+    g_signal_connect(G_OBJECT(accountMoveDownButton), "clicked", G_CALLBACK(account_move_down_cb), treeView);
+    
+    addButton = gtk_button_new_from_stock (GTK_STOCK_ADD);
+    g_signal_connect_swapped(G_OBJECT(addButton), "clicked",
+            G_CALLBACK(add_account_cb), NULL);
+    gtk_box_pack_start(GTK_BOX(buttonBox), addButton, FALSE, FALSE, 0);
+
+    editButton = gtk_button_new_from_stock (GTK_STOCK_EDIT);
+    gtk_widget_set_sensitive(GTK_WIDGET(editButton), FALSE);    
+    g_signal_connect_swapped(G_OBJECT(editButton), "clicked",
+            G_CALLBACK(edit_account_cb), NULL);
+    gtk_box_pack_start(GTK_BOX(buttonBox), editButton, FALSE, FALSE, 0);
+
+    deleteButton = gtk_button_new_from_stock (GTK_STOCK_REMOVE);
+    gtk_widget_set_sensitive(GTK_WIDGET(deleteButton), FALSE);    
+    g_signal_connect_swapped(G_OBJECT(deleteButton), "clicked",
+            G_CALLBACK(delete_account_cb), NULL);
+    gtk_box_pack_start(GTK_BOX(buttonBox), deleteButton, FALSE, FALSE, 0);
+
+    /* help and close buttons */    
+    GtkWidget * buttonHbox = gtk_hbutton_box_new();
+    gtk_table_attach(GTK_TABLE(table), buttonHbox, 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 10);
+    
+    GtkWidget * helpButton = gtk_button_new_from_stock (GTK_STOCK_HELP);
+    g_signal_connect_swapped(G_OBJECT(helpButton), "clicked",
+             G_CALLBACK(help_contents_cb), NULL);
+    gtk_box_pack_start(GTK_BOX(buttonHbox), helpButton, FALSE, FALSE, 0);
+        
+    GtkWidget * closeButton = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
+    g_signal_connect_swapped(G_OBJECT(closeButton), "clicked",  G_CALLBACK(close_dialog_cb), NULL);
+    gtk_box_pack_start(GTK_BOX(buttonHbox), closeButton, FALSE, FALSE, 0);
+   
+    gtk_widget_show_all(table);
+    account_list_config_dialog_fill();
+
+    /* Resize the scrolledWindow for a better view */
+    gtk_widget_size_request(GTK_WIDGET(treeView), &requisition);
+    gtk_widget_set_size_request(GTK_WIDGET(scrolledWindow), requisition.width + 20, requisition.height);
+    GtkRequisition requisitionButton;
+    gtk_widget_size_request(GTK_WIDGET(deleteButton), &requisitionButton);
+    gtk_widget_set_size_request(GTK_WIDGET(closeButton), requisitionButton.width, -1);
+    gtk_widget_set_size_request(GTK_WIDGET(helpButton), requisitionButton.width, -1);    
+            
+    gtk_widget_show_all(table);
+    
+    return table;
+}
+
+    void
+show_account_list_config_dialog(void)
+{
+    GtkWidget * accountFrame;
+    GtkWidget * tab;
+
+    accountListDialog = GTK_DIALOG(gtk_dialog_new_with_buttons (_("Accounts"),
+                GTK_WINDOW(get_main_window()),
+                GTK_DIALOG_DESTROY_WITH_PARENT,
+                NULL));
+
+    /* Set window properties */
+    gtk_dialog_set_has_separator(accountListDialog, FALSE);
+    gtk_container_set_border_width(GTK_CONTAINER(accountListDialog), 0);
+
+    gnome_main_section_new (_("Configured Accounts"), &accountFrame);
+    gtk_box_pack_start( GTK_BOX(accountListDialog->vbox ), accountFrame , TRUE, TRUE, 0);
+    gtk_widget_show(accountFrame);
+
+    /* Accounts tab */
+    tab = create_account_list(accountListDialog);
+    gtk_widget_show(tab);    
+    gtk_container_add(GTK_CONTAINER(accountFrame), tab);
+ 
+    /* Status bar for the account list */
+    status_bar = gtk_statusbar_new();
+    gtk_widget_show(status_bar);    
+    gtk_box_pack_start(GTK_BOX(accountListDialog->vbox ), status_bar, TRUE, TRUE, 0);
+   
+    gtk_dialog_run(accountListDialog);
+    
+    status_bar_display_account ();
+
+    gtk_widget_destroy(GTK_WIDGET(accountListDialog));
+
+    accountListDialog = NULL;
+    
+    toolbar_update_buttons();
+}
diff --git a/sflphone-client-gnome/src/config/accountlistconfigdialog.h b/sflphone-client-gnome/src/config/accountlistconfigdialog.h
new file mode 100644
index 0000000000000000000000000000000000000000..43e1ab228b634299b4534517b2443f61c32b85e5
--- /dev/null
+++ b/sflphone-client-gnome/src/config/accountlistconfigdialog.h
@@ -0,0 +1,27 @@
+/*
+ *  Copyright (C) 2007 Savoir-Faire Linux inc.
+ *  Author: Pierre-Luc Bacon <pierre-luc.bacon@savoirfairelinux.com>
+ *                                                                              
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *                                                                                
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *                                                                              
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#ifndef __SFL_ACCOUNTLISTDIALOG_H__
+#define __SFL_ACCOUNTLISTDIALOG_H__
+
+void show_account_list_config_dialog(void);
+void account_list_config_dialog_fill(void);
+
+#endif
diff --git a/sflphone-client-gnome/src/config/configwindow.c b/sflphone-client-gnome/src/config/preferencesdialog.c
similarity index 59%
rename from sflphone-client-gnome/src/config/configwindow.c
rename to sflphone-client-gnome/src/config/preferencesdialog.c
index 697dc3eaf61f3ab367acf62c56574d49663d1963..400a7c499f5815feef83112f7445c18cb7353e87 100644
--- a/sflphone-client-gnome/src/config/configwindow.c
+++ b/sflphone-client-gnome/src/config/preferencesdialog.c
@@ -45,16 +45,6 @@ gboolean accDialogOpen = FALSE;
 gboolean dialogOpen = FALSE;
 gboolean ringtoneEnabled = TRUE;
 
-GtkListStore *accountStore;
-
-// instead of keeping selected codec as a variable
-GtkWidget *addButton;
-GtkWidget *editButton;
-GtkWidget *deleteButton;
-GtkWidget *restoreButton;
-GtkWidget *accountMoveDownButton;
-GtkWidget *accountMoveUpButton;
-
 /* STUN configuration part */
 GtkWidget * stunEnable;
 GtkWidget * stunFrame;
@@ -67,95 +57,16 @@ GtkWidget * status;
 static int history_limit;
 static gboolean history_enabled = TRUE;
 
-account_t * selectedAccount = NULL;
-
-GHashTable * directIpCallsProperties = NULL;
-
-GtkDialog * accountListDialog;
-      
-// Account properties
-enum {
-    COLUMN_ACCOUNT_ALIAS,
-    COLUMN_ACCOUNT_TYPE,
-    COLUMN_ACCOUNT_STATUS,
-    COLUMN_ACCOUNT_ACTIVE,
-    COLUMN_ACCOUNT_DATA,
-    COLUMN_ACCOUNT_COUNT
-};
-
 // Mail notification
 GtkWidget * widg;
 
+GHashTable * directIpCallsProperties = NULL;
 
-
-/**
- * Fills the treelist with accounts
- */
-    void
-config_window_fill_account_list()
-{
-    
-    if(accDialogOpen) {
-        GtkTreeIter iter;
-
-        gtk_list_store_clear(accountStore);
-        
-        unsigned int i;
-        for(i = 0; i < account_list_get_size(); i++) {
-            account_t * a = account_list_get_nth (i);
-	    
-            if (a) {
-                gtk_list_store_append (accountStore, &iter);
-
-                DEBUG("Filling accounts: Account is enabled :%s", g_hash_table_lookup(a->properties, ACCOUNT_ENABLED));
-                
-                gtk_list_store_set(accountStore, &iter,
-                        COLUMN_ACCOUNT_ALIAS, g_hash_table_lookup(a->properties, ACCOUNT_ALIAS),  // Name
-                        COLUMN_ACCOUNT_TYPE, g_hash_table_lookup(a->properties, ACCOUNT_TYPE),   // Protocol
-                        COLUMN_ACCOUNT_STATUS, account_state_name(a->state),      // Status
-                        COLUMN_ACCOUNT_ACTIVE, (g_strcasecmp(g_hash_table_lookup(a->properties, ACCOUNT_ENABLED),"true") == 0)? TRUE:FALSE,  // Enable/Disable
-                        COLUMN_ACCOUNT_DATA, a,   // Pointer
-                        -1);
-            }
-        }
-    }
-}
-
-/**
- * Delete an account
- */
-    static void
-delete_account(GtkWidget *widget UNUSED, gpointer data UNUSED)
-{
-    if(selectedAccount != NULL)
-    {
-        dbus_remove_account(selectedAccount->accountID);
-        if(account_list_get_sip_account_number() == 1 &&
-                strcmp(g_hash_table_lookup(selectedAccount->properties, ACCOUNT_TYPE), "SIP")==0 )
-            gtk_widget_set_sensitive(GTK_WIDGET(stunFrame), FALSE);
-    }
-}
-
-/**
- * Edit an account
- */
-    static void
-edit_account(GtkWidget *widget UNUSED, gpointer data UNUSED)
+static void update_port_cb ( GtkSpinButton *button UNUSED, void *ptr )
 {
-    if(selectedAccount != NULL)
-    {
-        show_account_window(selectedAccount);
-    } 
+    dbus_set_sip_port(gtk_spin_button_get_value_as_int((GtkSpinButton *)(ptr)));
 }
 
-/**
- * Add an account
- */
-static void
-add_account(GtkWidget *widget UNUSED, gpointer data UNUSED)
-{
-    show_account_window(NULL);
-}
 
 static void
 set_md5_hash_cb(GtkWidget *widget UNUSED, gpointer data UNUSED)
@@ -218,324 +129,6 @@ clean_history( void )
     calllist_clean_history();
 }
 
-/**
- * Call back when the user click on an account in the list
- */
-    static void
-select_account(GtkTreeSelection *selection, GtkTreeModel *model)
-{
-    GtkTreeIter iter;
-    GValue val;
-
-    memset (&val, 0, sizeof(val));
-    if (!gtk_tree_selection_get_selected(selection, &model, &iter))
-    {
-        selectedAccount = NULL;
-        gtk_widget_set_sensitive(GTK_WIDGET(accountMoveUpButton), FALSE);
-        gtk_widget_set_sensitive(GTK_WIDGET(accountMoveDownButton), FALSE);
-        gtk_widget_set_sensitive(GTK_WIDGET(editButton), FALSE);
-        gtk_widget_set_sensitive(GTK_WIDGET(deleteButton), FALSE);                
-        return;
-    }
-
-    // The Gvalue will be initialized in the following function
-    gtk_tree_model_get_value(model, &iter, COLUMN_ACCOUNT_DATA, &val);
-
-    selectedAccount = (account_t*)g_value_get_pointer(&val);
-    g_value_unset(&val);
-
-    if(selectedAccount != NULL)
-    {
-        gtk_widget_set_sensitive(GTK_WIDGET(accountMoveUpButton), TRUE);
-        gtk_widget_set_sensitive(GTK_WIDGET(accountMoveDownButton), TRUE);
-        gtk_widget_set_sensitive(GTK_WIDGET(editButton), TRUE);
-        gtk_widget_set_sensitive(GTK_WIDGET(deleteButton), TRUE);            
-    }
-    
-    DEBUG("Selecting account in account window");
-}
-
-    static void
-enable_account(GtkCellRendererToggle *rend UNUSED, gchar* path,  gpointer data )
-{
-    GtkTreeIter iter;
-    GtkTreePath *treePath;    
-    GtkTreeModel *model;
-    gboolean enable;
-    account_t* acc ;
-
-    // Get pointer on object
-    treePath = gtk_tree_path_new_from_string(path);
-    model = gtk_tree_view_get_model(GTK_TREE_VIEW(data));
-    gtk_tree_model_get_iter(model, &iter, treePath);
-    gtk_tree_model_get(model, &iter,
-            COLUMN_ACCOUNT_ACTIVE, &enable,
-            COLUMN_ACCOUNT_DATA, &acc,
-            -1);
-    enable = !enable;
-
-    DEBUG("Account is %d enabled", enable);
-    // Store value
-    gtk_list_store_set(GTK_LIST_STORE(model), &iter,
-            COLUMN_ACCOUNT_ACTIVE, enable,
-            -1);
-
-    // Modify account state
-    gchar * registrationState;
-    if (enable == TRUE) {
-        registrationState = g_strdup("true");
-    } else {
-        registrationState = g_strdup("false");
-    }
-    DEBUG("Replacing with %s\n", registrationState);
-    g_hash_table_replace( acc->properties , g_strdup(ACCOUNT_ENABLED), registrationState);
-
-    dbus_send_register(acc->accountID, enable);
-
-}
-
-/**
- * Move account in list depending on direction and selected account
- */
-    static void
-account_move(gboolean moveUp, gpointer data)
-{
-    GtkTreeIter iter;
-    GtkTreeIter *iter2;
-    GtkTreeView *treeView;
-    GtkTreeModel *model;
-    GtkTreeSelection *selection;
-    GtkTreePath *treePath;
-    gchar *path;
-
-    // Get view, model and selection of codec store
-    treeView = GTK_TREE_VIEW(data);
-    model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeView));
-    selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeView));
-
-    // Find selected iteration and create a copy
-    gtk_tree_selection_get_selected(GTK_TREE_SELECTION(selection), &model, &iter);
-    iter2 = gtk_tree_iter_copy(&iter);
-
-    // Find path of iteration
-    path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(model), &iter);
-    treePath = gtk_tree_path_new_from_string(path);
-    gint *indices = gtk_tree_path_get_indices(treePath);
-    gint indice = indices[0];
-
-    // Depending on button direction get new path
-    if(moveUp)
-        gtk_tree_path_prev(treePath);
-    else
-        gtk_tree_path_next(treePath);
-    gtk_tree_model_get_iter(model, &iter, treePath);
-
-    // Swap iterations if valid
-    if(gtk_list_store_iter_is_valid(GTK_LIST_STORE(model), &iter))
-        gtk_list_store_swap(GTK_LIST_STORE(model), &iter, iter2);
-
-    // Scroll to new position
-    gtk_tree_view_scroll_to_cell(treeView, treePath, NULL, FALSE, 0, 0);
-
-    // Free resources
-    gtk_tree_path_free(treePath);
-    gtk_tree_iter_free(iter2);
-    g_free(path);
-
-    // Perpetuate changes in account queue
-    if(moveUp)
-        account_list_move_up(indice);
-    else
-        account_list_move_down(indice);
-
-
-    // Set the order in the configuration file
-    dbus_set_accounts_order (account_list_get_ordered_list ());
-}
-
-/**
- * Called from move up account button signal
- */
-    static void
-account_move_up(GtkButton *button UNUSED, gpointer data)
-{
-    // Change tree view ordering and get indice changed
-    account_move(TRUE, data);
-}
-
-/**
- * Called from move down account button signal
- */
-    static void
-account_move_down(GtkButton *button UNUSED, gpointer data)
-{
-    // Change tree view ordering and get indice changed
-    account_move(FALSE, data);
-}
-
-static void update_port_cb ( GtkSpinButton *button UNUSED, void *ptr )
-{
-    dbus_set_sip_port(gtk_spin_button_get_value_as_int((GtkSpinButton *)(ptr)));
-}
-
-static void 
-help_contents_cb (GtkWidget * widget,
-                  gpointer data UNUSED)
-{
-    GError *error = NULL;
-    
-    gboolean success = gtk_show_uri (NULL, "ghelp: sflphone.xml", GDK_CURRENT_TIME, &error);
-
-    if (error != NULL)
-    {    
-            g_warning ("%s", error->message);
-
-            g_error_free (error);
-    }    
-}
-
-static void
-close_dialog_cb (GtkWidget * widget,
-                  gpointer data UNUSED)
-{
-    gtk_dialog_response(GTK_DIALOG(accountListDialog), GTK_RESPONSE_ACCEPT);
-
-}
-
-/**
- * Account settings tab
- */
-    GtkWidget *
-create_accounts_tab(GtkDialog * dialog)
-{
-    GtkWidget *table;
-    GtkWidget *scrolledWindow;
-    GtkWidget *buttonBox;
-    GtkCellRenderer *renderer;
-    GtkTreeView * treeView;
-    GtkTreeViewColumn *treeViewColumn;
-    GtkTreeSelection *treeSelection;
-    GtkRequisition requisition;
-
-    selectedAccount = NULL;
-
-    table = gtk_table_new (1, 2, FALSE/* homogeneous */);
-    gtk_table_set_col_spacings(GTK_TABLE(table), 10); 
-    gtk_container_set_border_width(GTK_TABLE(table), 10);    
-    
-    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);
-
-    accountStore = gtk_list_store_new(COLUMN_ACCOUNT_COUNT,
-            G_TYPE_STRING,  // Name
-            G_TYPE_STRING,  // Protocol
-            G_TYPE_STRING,  // Status
-            G_TYPE_BOOLEAN, // Enabled / Disabled
-            G_TYPE_POINTER  // Pointer to the Object
-            );
-
-    treeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(accountStore));
-    treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW (treeView));
-    g_signal_connect(G_OBJECT (treeSelection), "changed",
-            G_CALLBACK (select_account),
-            accountStore);
-
-    renderer = gtk_cell_renderer_toggle_new();
-    treeViewColumn = gtk_tree_view_column_new_with_attributes("Enabled", renderer, "active", COLUMN_ACCOUNT_ACTIVE , NULL);
-    gtk_tree_view_append_column(GTK_TREE_VIEW(treeView), treeViewColumn);
-    g_signal_connect( G_OBJECT(renderer) , "toggled" , G_CALLBACK(enable_account), (gpointer)treeView );
-
-    renderer = gtk_cell_renderer_text_new();
-    treeViewColumn = gtk_tree_view_column_new_with_attributes ("Alias",
-            renderer,
-            "markup", COLUMN_ACCOUNT_ALIAS,
-            NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
-
-    // A double click on the account line opens the window to edit the account
-    g_signal_connect( G_OBJECT( treeView ) , "row-activated" , G_CALLBACK( edit_account ) , NULL );
-
-    renderer = gtk_cell_renderer_text_new();
-    treeViewColumn = gtk_tree_view_column_new_with_attributes (_("Protocol"),
-            renderer,
-            "markup", COLUMN_ACCOUNT_TYPE,
-            NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
-
-    renderer = gtk_cell_renderer_text_new();
-    treeViewColumn = gtk_tree_view_column_new_with_attributes (_("Status"),
-            renderer,
-            "markup", COLUMN_ACCOUNT_STATUS,
-            NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW(treeView), treeViewColumn);
-
-    g_object_unref(G_OBJECT(accountStore));
-    
-    gtk_container_add(GTK_CONTAINER(scrolledWindow), treeView);
-    
-    /* The buttons to press! */    
-    buttonBox = gtk_vbutton_box_new();
-    gtk_box_set_spacing(GTK_BOX(buttonBox), 10);
-    gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonBox), GTK_BUTTONBOX_START);
-    gtk_table_attach (GTK_TABLE(table), buttonBox, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-
-    accountMoveUpButton = gtk_button_new_from_stock(GTK_STOCK_GO_UP);
-    gtk_widget_set_sensitive(GTK_WIDGET(accountMoveUpButton), FALSE);
-    gtk_box_pack_start(GTK_BOX(buttonBox), accountMoveUpButton, FALSE, FALSE, 0);
-    g_signal_connect(G_OBJECT(accountMoveUpButton), "clicked", G_CALLBACK(account_move_up), treeView);
-
-    accountMoveDownButton = gtk_button_new_from_stock(GTK_STOCK_GO_DOWN);
-    gtk_widget_set_sensitive(GTK_WIDGET(accountMoveDownButton), FALSE);
-    gtk_box_pack_start(GTK_BOX(buttonBox), accountMoveDownButton, FALSE, FALSE, 0);
-    g_signal_connect(G_OBJECT(accountMoveDownButton), "clicked", G_CALLBACK(account_move_down), treeView);
-    
-    addButton = gtk_button_new_from_stock (GTK_STOCK_ADD);
-    g_signal_connect_swapped(G_OBJECT(addButton), "clicked",
-            G_CALLBACK(add_account), NULL);
-    gtk_box_pack_start(GTK_BOX(buttonBox), addButton, FALSE, FALSE, 0);
-
-    editButton = gtk_button_new_from_stock (GTK_STOCK_EDIT);
-    gtk_widget_set_sensitive(GTK_WIDGET(editButton), FALSE);    
-    g_signal_connect_swapped(G_OBJECT(editButton), "clicked",
-            G_CALLBACK(edit_account), NULL);
-    gtk_box_pack_start(GTK_BOX(buttonBox), editButton, FALSE, FALSE, 0);
-
-    deleteButton = gtk_button_new_from_stock (GTK_STOCK_REMOVE);
-    gtk_widget_set_sensitive(GTK_WIDGET(deleteButton), FALSE);    
-    g_signal_connect_swapped(G_OBJECT(deleteButton), "clicked",
-            G_CALLBACK(delete_account), stunFrame);
-    gtk_box_pack_start(GTK_BOX(buttonBox), deleteButton, FALSE, FALSE, 0);
-
-    /* help and close buttons */    
-    GtkWidget * buttonHbox = gtk_hbutton_box_new();
-    gtk_table_attach(GTK_TABLE(table), buttonHbox, 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 10);
-    
-    GtkWidget * helpButton = gtk_button_new_from_stock (GTK_STOCK_HELP);
-    g_signal_connect_swapped(G_OBJECT(helpButton), "clicked",
-             G_CALLBACK(help_contents_cb), NULL);
-    gtk_box_pack_start(GTK_BOX(buttonHbox), helpButton, FALSE, FALSE, 0);
-        
-    GtkWidget * closeButton = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
-    g_signal_connect_swapped(G_OBJECT(closeButton), "clicked",  G_CALLBACK(close_dialog_cb), NULL);
-    gtk_box_pack_start(GTK_BOX(buttonHbox), closeButton, FALSE, FALSE, 0);
-   
-    gtk_widget_show_all(table);
-    config_window_fill_account_list();
-
-    /* Resize the scrolledWindow for a better view */
-    gtk_widget_size_request(GTK_WIDGET(treeView), &requisition);
-    gtk_widget_set_size_request(GTK_WIDGET(scrolledWindow), requisition.width + 20, requisition.height);
-    GtkRequisition requisitionButton;
-    gtk_widget_size_request(GTK_WIDGET(deleteButton), &requisitionButton);
-    gtk_widget_set_size_request(GTK_WIDGET(closeButton), requisitionButton.width, -1);
-    gtk_widget_set_size_request(GTK_WIDGET(helpButton), requisitionButton.width, -1);    
-            
-    gtk_widget_show_all(table);
-    
-    return table;
-}
 
 void stun_state( void )
 {
@@ -881,11 +474,24 @@ void save_configuration_parameters (void) {
     dbus_set_ip2ip_details(directIpCallsProperties);
 }
 
+void history_load_configuration ()
+{
+    history_limit = dbus_get_history_limit ();
+    history_enabled = TRUE;
+    if (dbus_get_history_enabled () == 0)
+        history_enabled = FALSE;
+}
+
+void preferences_dialog_set_stun_visible()
+{
+    gtk_widget_set_sensitive( GTK_WIDGET(stunFrame), TRUE );
+}
+
 /**
  * Show configuration window with tabs
  */
     void
-show_config_window ()
+show_preferences_dialog ()
 {
     GtkDialog * dialog;
     GtkWidget * notebook;
@@ -954,55 +560,3 @@ show_config_window ()
     gtk_widget_destroy(GTK_WIDGET(dialog));
 }
 
-/*
- * Show accounts tab in a different window
- */
-    void
-show_accounts_window( void )
-{
-    GtkWidget * accountFrame;
-    GtkWidget * tab;
-
-    accDialogOpen = TRUE;
-
-    accountListDialog = GTK_DIALOG(gtk_dialog_new_with_buttons (_("Accounts"),
-                GTK_WINDOW(get_main_window()),
-                GTK_DIALOG_DESTROY_WITH_PARENT,
-                NULL));
-
-    // Set window properties
-    gtk_dialog_set_has_separator(accountListDialog, FALSE);
-    gtk_container_set_border_width(GTK_CONTAINER(accountListDialog), 0);
-
-    gnome_main_section_new (_("Configured Accounts"), &accountFrame);
-    gtk_box_pack_start( GTK_BOX( accountListDialog->vbox ), accountFrame , TRUE, TRUE, 0);
-    gtk_widget_show(accountFrame);
-
-    // Accounts tab
-    tab = create_accounts_tab(accountListDialog);
-    gtk_widget_show(tab);    
-    gtk_container_add(GTK_CONTAINER(accountFrame), tab);
-    
-    gtk_dialog_run(accountListDialog);
-
-    status_bar_display_account ();
-
-    accDialogOpen=FALSE;
-
-    gtk_widget_destroy(GTK_WIDGET(accountListDialog));
-    toolbar_update_buttons();
-}
-
-void history_load_configuration ()
-{
-    history_limit = dbus_get_history_limit ();
-    history_enabled = TRUE;
-    if (dbus_get_history_enabled () == 0)
-        history_enabled = FALSE;
-}
-
-void config_window_set_stun_visible()
-{
-    gtk_widget_set_sensitive( GTK_WIDGET(stunFrame), TRUE );
-}
-
diff --git a/sflphone-client-gnome/src/config/configwindow.h b/sflphone-client-gnome/src/config/preferencesdialog.h
similarity index 84%
rename from sflphone-client-gnome/src/config/configwindow.h
rename to sflphone-client-gnome/src/config/preferencesdialog.h
index ddf58ba4534d898cf24c9e12ad9704d1570b8f08..b9f3271457bc761840791c3a194610e955a56f8b 100644
--- a/sflphone-client-gnome/src/config/configwindow.h
+++ b/sflphone-client-gnome/src/config/preferencesdialog.h
@@ -23,35 +23,30 @@
 #include <calllist.h>
 
 /**
- * @file configwindow.h
+ * @file preferencesdialog.h
  * @brief The Preferences window.
  */
 
-/**
- * Fill the account list widget with the data the server send
- */
-void config_window_fill_account_list();
-
 /**
  * Fill the codec list widget with the data the server send
  */
-void config_window_fill_codec_list();
+void preferences_dialog_fill_codec_list();
 
 /**
  * Fill the input audio plugin list widget with the data the server send
  * Currently not used
  */
-void config_window_fill_input_audio_plugin_list();
+void preferences_dialog_fill_input_audio_plugin_list();
 
 /**
  * Fill the output audio plugin list widget with the data the server send
  */
-void config_window_fill_output_audio_plugin_list();
+void preferences_dialog_fill_output_audio_plugin_list();
 
 /**
  * Fill the output audio device list widget with the data the server send
  */
-void config_window_fill_output_audio_device_list();
+void preferences_dialog_fill_output_audio_device_list();
 
 /**
  * Select an output audio device
@@ -61,7 +56,7 @@ void select_active_output_audio_device();
 /**
  * Fill the input audio device list widget with the data the server send
  */
-void config_window_fill_input_audio_device_list();
+void preferences_dialog_fill_input_audio_device_list();
 
 /**
  * Select an input audio device
@@ -107,14 +102,9 @@ GtkWidget * create_recording_settings();
 /**
  * Display the main configuration window
  */
-void show_config_window();
-
-/**
- * Display the main account window
- */
-void show_accounts_window();
+void show_preferences_dialog();
 
-void config_window_set_stun_visible();
+void preferences_dialog_set_stun_visible();
 
 void save_configuration_parameters (void);