diff --git a/sflphone-gtk/src/accountlist.h b/sflphone-gtk/src/accountlist.h
index 2d1ebea9bb1095a6c39c346361dc3b5249d40e32..7269af52db8ea89943b65fb421efdce4c0cb46b0 100644
--- a/sflphone-gtk/src/accountlist.h
+++ b/sflphone-gtk/src/accountlist.h
@@ -37,6 +37,8 @@
 #define ACCOUNT_SIP_AUTH_NAME      "SIP.username"
 #define ACCOUNT_SIP_PASSWORD       "SIP.password"
 #define ACCOUNT_SIP_PROXY          "SIP.proxy"
+#define ACCOUNT_SIP_STUN_SERVER	   "STUN.server"
+#define ACCOUNT_SIP_STUN_ENABLED   "STUN.enable"
 
 #define ACCOUNT_IAX_FULL_NAME      "IAX.fullName"
 #define ACCOUNT_IAX_HOST           "IAX.host"
diff --git a/sflphone-gtk/src/accountwindow.c b/sflphone-gtk/src/accountwindow.c
index 1b83314a4417bc191cd97043c630e0601ba1c0ae..b4a573fb8799f9ab3e69335d4840966f1aca06f8 100644
--- a/sflphone-gtk/src/accountwindow.c
+++ b/sflphone-gtk/src/accountwindow.c
@@ -41,6 +41,8 @@ GtkWidget * entryUserPart;
 GtkWidget * entryHostPart;
 GtkWidget * entryUsername;
 GtkWidget * entryPassword;
+GtkWidget * stunServer;
+GtkWidget * stunEnable;
 
 
 /**
@@ -62,10 +64,14 @@ change_protocol (account_t * currentAccount)
 
   // toggle sensitivity for: entryUserPart 
   if (strcmp(proto, "SIP") == 0) {
-    gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart),   TRUE);
+    gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), TRUE);
+    gtk_widget_set_sensitive( GTK_WIDGET(stunEnable), TRUE);
+    gtk_widget_set_sensitive( GTK_WIDGET(stunServer), TRUE);
   }
   else if (strcmp(proto, "IAX") == 0) {
     gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart),   FALSE);
+    gtk_widget_set_sensitive( GTK_WIDGET(stunEnable),   FALSE);
+    gtk_widget_set_sensitive( GTK_WIDGET(stunServer),   FALSE);
   }
   else {
     // Should not get here.
@@ -83,6 +89,14 @@ is_iax_enabled(void)
     return FALSE;
 }
 
+void
+stun_state( void )
+{
+  gboolean stunActive = (gboolean)gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( stunEnable ));
+  gtk_widget_set_sensitive( GTK_WIDGET( stunServer ) , stunActive );
+}
+
+
   void
 show_account_window (account_t * a)
 {
@@ -100,6 +114,8 @@ show_account_window (account_t * a)
   gchar * curUsername = "";
   gchar * curFullName = "";
   /* TODO: add curProxy, and add boxes for Proxy support */
+  gchar * stun_enabled = "FALSE";
+  gchar * stun_server= "";
 
   // Load from SIP/IAX/Unknown ?
   if(a)
@@ -120,6 +136,8 @@ show_account_window (account_t * a)
       curUsername = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_AUTH_NAME);
       curFullName = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_FULL_NAME);
       curUserPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_USER_PART);
+      stun_enabled = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_STUN_ENABLED);
+      stun_server = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_STUN_SERVER);
     }
   }
   else
@@ -132,14 +150,16 @@ show_account_window (account_t * a)
   dialog = GTK_DIALOG(gtk_dialog_new_with_buttons (_("Account settings"),
 	GTK_WINDOW(get_main_window()),
 	GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
-	GTK_STOCK_OK,
+	GTK_STOCK_CANCEL,
+	GTK_RESPONSE_CANCEL,
+	GTK_STOCK_SAVE,
 	GTK_RESPONSE_ACCEPT,
 	NULL));
 
   gtk_dialog_set_has_separator(dialog, TRUE);
   gtk_container_set_border_width (GTK_CONTAINER(dialog), 0);
 
-  table = gtk_table_new ( 8, 2  , FALSE /* homogeneous */);
+  table = gtk_table_new ( 8, 4  ,  FALSE/* homogeneous */);
   gtk_table_set_row_spacings( GTK_TABLE(table), 10);
   gtk_table_set_col_spacings( GTK_TABLE(table), 10);
 
@@ -164,7 +184,7 @@ show_account_window (account_t * a)
   //  strcmp(g_hash_table_lookup(currentAccount->properties, ACCOUNT_REGISTER),"TRUE") == 0 ? TRUE: FALSE); 
   //gtk_table_attach ( GTK_TABLE( table ), entryRegister, 0, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-  label = gtk_label_new_with_mnemonic (_("_Alias:"));
+  label = gtk_label_new_with_mnemonic (_("_Alias"));
   gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
   entryName = gtk_entry_new();
@@ -242,13 +262,37 @@ show_account_window (account_t * a)
   gtk_entry_set_text(GTK_ENTRY(entryPassword), curPassword);
   gtk_table_attach ( GTK_TABLE( table ), entryPassword, 1, 2, 9, 10, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
+  // NAT detection code section
+  label = gtk_label_new("");
+  gtk_label_set_markup(GTK_LABEL( label ),_("<b>NAT Detection</b>"));
+  gtk_table_attach( GTK_TABLE( table ), label, 3, 4, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
+  stunEnable = gtk_check_button_new_with_mnemonic(_("E_nable STUN"));
+  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stunEnable),
+	      strcmp(stun_enabled,"TRUE") == 0 ? TRUE: FALSE);
+  g_signal_connect( G_OBJECT (GTK_TOGGLE_BUTTON(stunEnable)) , "toggled" , G_CALLBACK( stun_state ), NULL);
+
+  gtk_widget_set_tooltip_text( GTK_WIDGET( stunEnable ) , _("Enable it if you are behind a firewall, then restart SFLphone"));
+  gtk_table_attach ( GTK_TABLE( table ), stunEnable, 3, 4, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  label = gtk_label_new_with_mnemonic(_("S_TUN Server"));
+  gtk_table_attach( GTK_TABLE( table ), label, 2, 3, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5);
+  stunServer = gtk_entry_new();
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), stunServer);
+  gtk_entry_set_text(GTK_ENTRY(stunServer), stun_server);
+  gtk_widget_set_tooltip_text( GTK_WIDGET( stunServer ) , _("Format: name.server:port"));
+  gtk_table_attach ( GTK_TABLE( table ), stunServer, 3, 4, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_widget_set_sensitive( GTK_WIDGET( stunServer ), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stunEnable)));
+
 
   // Toggle enabled/disabled widgets
   if (strcmp(curAccountType, "SIP") == 0) {
-    //gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), TRUE);<    
+    //gtk_widget_set_sesitive( GTK_WIDGET(entryUserPart), TRUE);<    
   }
   else if (strcmp(curAccountType, "IAX") == 0) {
     gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), FALSE);
+    gtk_widget_set_sensitive( GTK_WIDGET(stunEnable), FALSE);
+    gtk_widget_set_sensitive( GTK_WIDGET(stunServer), FALSE);
   }
   else {
     // Disable everything ! ouch!
@@ -297,6 +341,12 @@ show_account_window (account_t * a)
       g_hash_table_replace(currentAccount->properties, 
 	  g_strdup(ACCOUNT_SIP_PASSWORD), 
 	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryPassword))));
+      g_hash_table_replace(currentAccount->properties, 
+	  g_strdup(ACCOUNT_SIP_STUN_SERVER), 
+	  g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(stunServer))));
+      g_hash_table_replace(currentAccount->properties, 
+	g_strdup(ACCOUNT_SIP_STUN_ENABLED), 
+	g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stunEnable)) ? "TRUE": "FALSE"));
     }
     else if (strcmp(proto, "IAX") == 0) { /* Protocol = IAX */
       g_hash_table_replace(currentAccount->properties, 
diff --git a/sflphone-gtk/src/calltree.c b/sflphone-gtk/src/calltree.c
index 8a49a33837e1700e45f99fb2e99452ef1999ed3c..98f7477eda4520a45ffd1fadf26a7922e5ee5cd4 100644
--- a/sflphone-gtk/src/calltree.c
+++ b/sflphone-gtk/src/calltree.c
@@ -283,7 +283,7 @@ create_toolbar (){
 	gtk_toolbar_set_style(GTK_TOOLBAR(ret), GTK_TOOLBAR_ICONS);
 
 	image = gtk_image_new_from_file( ICONS_DIR "/call.svg");
-	callButton = gtk_tool_button_new (image, _("Place a Call"));
+	callButton = gtk_tool_button_new (image, _("Place a call"));
 	gtk_widget_set_tooltip_text(GTK_WIDGET(callButton), _("Place a call"));
 	g_signal_connect (G_OBJECT (callButton), "clicked",
 			G_CALLBACK (call_button), NULL);
diff --git a/sflphone-gtk/src/configwindow.c b/sflphone-gtk/src/configwindow.c
index 1bc99e790529cb09647c7a922dcd3c6ea2759839..10148225bbf1dfb4ed8b33f7360277b6375c32c6 100644
--- a/sflphone-gtk/src/configwindow.c
+++ b/sflphone-gtk/src/configwindow.c
@@ -879,7 +879,7 @@ create_accounts_tab()
 			);
 
 	treeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(accountStore));
-
+	//gtk_widget_set_tooltip_text( GTK_WIDGET( treeView ) , _("Double-click to edit the information on this account"));
 	treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW (treeView));
 	g_signal_connect(G_OBJECT (treeSelection), "changed",
 			G_CALLBACK (select_account),
@@ -942,7 +942,8 @@ create_accounts_tab()
 	gtk_box_pack_start(GTK_BOX(buttonBox), deleteButton, FALSE, FALSE, 0);
 	gtk_widget_show(deleteButton);
 	
-	defaultButton = gtk_button_new_with_mnemonic(_("Set as Default"));
+	defaultButton = gtk_button_new_with_mnemonic(_("Default"));
+	gtk_widget_set_tooltip_text( GTK_WIDGET( defaultButton ) , _("Set the selected account as the default one to make calls"));
 	g_signal_connect_swapped(G_OBJECT(defaultButton), "clicked", 
 			G_CALLBACK(default_account), NULL);
 	gtk_box_pack_start(GTK_BOX(buttonBox), defaultButton, FALSE, FALSE, 0);
diff --git a/sflphone-gtk/src/menus.c b/sflphone-gtk/src/menus.c
index f0ac6db6fc0dab2830b3767fbc0ad18df2e11502..8ba7dfc8c7005db73a1ccf3f8836142a9150cb1b 100644
--- a/sflphone-gtk/src/menus.c
+++ b/sflphone-gtk/src/menus.c
@@ -106,6 +106,7 @@ help_about ( void * foo)
     "Julien Plissonneau Duquene <julien.plissonneau.duquene@savoirfairelinux.com>",
     "Alexandre Bourget <alexandre.bourget@savoirfairelinux.com>",
     "Pierre-Luc Beaudoin <pierre-luc@squidy.info>", 
+    "Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>"
     "Jean-Philippe Barrette-LaPierre",
     "Laurielle Lea",
     NULL};
@@ -440,10 +441,14 @@ create_view_menu()
   GtkWidget * menu;
   GtkWidget * root_menu;
   GtkWidget * menu_items;
-  
+  GtkWidget * submenu;
+  GtkWidget * submenu_items;
+
   menu      = gtk_menu_new ();
 
   menu_items = gtk_check_menu_item_new_with_mnemonic (_("_Dialpad"));
+  gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM ( menu_items ), TRUE);
+  main_window_dialpad(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu_items)));
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
   g_signal_connect(G_OBJECT (menu_items), "toggled",
                   G_CALLBACK (view_dial_pad), 
@@ -458,14 +463,19 @@ create_view_menu()
                   NULL);
   gtk_widget_show (menu_items);
   
-  menu_items = gtk_check_menu_item_new_with_mnemonic (_("_Toolbar"));
+  menu_items = gtk_menu_item_new_with_mnemonic(_("_Toolbar"));
+
+  // ICON / TEXT / BOTH
+  submenu_items = gtk_check_menu_item_new_with_mnemonic(_("Only Icons"));
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (submenu_items), menu_items);
+  submenu_items = gtk_check_menu_item_new_with_mnemonic(_("Only Text"));
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (submenu_items), menu_items);
+  submenu_items = gtk_check_menu_item_new_with_mnemonic(_("Icons & Text"));
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (submenu_items), menu_items);
+
+  gtk_widget_show( menu_items );
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
-  gtk_widget_set_sensitive( GTK_WIDGET(menu_items),   FALSE);
-  g_signal_connect(G_OBJECT (menu_items), "toggled",
-                  G_CALLBACK (view_dial_pad), 
-                  NULL);
-  gtk_widget_show (menu_items);
-  
+
   root_menu = gtk_menu_item_new_with_mnemonic (_("_View"));
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu);
 
diff --git a/sflphone-gtk/src/po/fr.po b/sflphone-gtk/src/po/fr.po
index 9dd7c52cf8f61eacd1c491548bfe6b270c4f1bda..1432650df1cc5c3ad13c688887e63e8abb0e12f8 100644
--- a/sflphone-gtk/src/po/fr.po
+++ b/sflphone-gtk/src/po/fr.po
@@ -21,7 +21,7 @@ msgid "Pick up"
 msgstr "Décrocher"
 
 msgid "Place a call"
-msgstr "Nouvel Appel"
+msgstr "Appeler"
 
 msgid "On _Hold" 
 msgstr "_Mettre en attente"
@@ -32,14 +32,14 @@ msgstr "Mettre en attente"
 msgid "Off Hold"
 msgstr "Reprendre"
 
-msgid "Tranfer"
+msgid "Transfer"
 msgstr "Transférer"
 
 msgid "_New call"
 msgstr "_Nouvel appel"
 
 msgid "_Call"
-msgstr "_Appeler"
+msgstr "_Actions"
 
 msgid "_Edit"
 msgstr "_Options"
@@ -70,8 +70,8 @@ msgstr "_Protocole"
 msgid "Status"
 msgstr "Statut"
 
-msgid "Set as Default"
-msgstr "Choisir par Défaut"
+msgid "Default"
+msgstr "Défaut"
 
 msgid "Account settings"
 msgstr "Configuration des comptes"
@@ -79,6 +79,10 @@ msgstr "Configuration des comptes"
 msgid "_Enabled"
 msgstr "_Activé"
 
+msgid "_Alias"
+msgstr "A_lias"
+
+
 msgid "Unknown"
 msgstr "Inconnu"
 
@@ -92,11 +96,29 @@ msgid "_Host part"
 msgstr "_Serveur"
 
 msgid "U_sername"
-msgstr "U_sager"
+msgstr "Usa_ger"
 
 msgid "_Password"
 msgstr "_Mot de passe"
 
+msgid "<b>NAT Detection</b>"
+msgstr "<b>Détection NAT</b>"
+
+msgid "E_nable STUN"
+msgstr "A_ctiver STUN"
+
+msgid "S_TUN Server"
+msgstr "S_erveur STUN"
+
+msgid "Format: name.server:port"
+msgstr "Format: nom.serveur:port"
+
+msgid "Enable it if you are behind a firewall, then restart SFLphone"
+msgstr "À activer si vous êtes derrière un pare-feu, puis redémarrez SFLphone"
+
+msgid "Set the selected account as the default one to make calls"
+msgstr "Utiliser le compte sélectionné pour passer des appels par défaut"
+
 # audio settings
 msgid "Output peripheral"
 msgstr "Périphérique de sortie"
@@ -161,3 +183,10 @@ msgstr "En cours..."
 
 msgid "Invalid"
 msgstr "Non valide"
+
+# Sliders
+msgid "Speakers volume"
+msgstr "Volume des hauts-parleurs"
+
+msgid "Mic volume"
+msgstr "Volume du micro"
diff --git a/src/account.h b/src/account.h
index ddf77750881632eade847d8239ed329dbfb69a14..2f2c5123268e2e35ae0b8422dba592871dba2019 100644
--- a/src/account.h
+++ b/src/account.h
@@ -45,8 +45,9 @@ typedef std::string AccountID;
 #define SIP_PASSWORD          "SIP.password"
 #define SIP_HOST_PART         "SIP.hostPart"
 #define SIP_PROXY             "SIP.proxy"
-#define SIP_STUN_SERVER       "STUN.STUNserver"
-#define SIP_USE_STUN          "STUN.useStun"
+#define SIP_STUN_SERVER       "STUN.server"
+#define SIP_USE_STUN          "STUN.enable"
+#define SIP_STUN_PORT         "STUN.port"
 
 /**
  * Class account is an interface to protocol account (SIPAccount, IAXAccount)
diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp
index 735268b923298adab86b3c25c510fb6d4f32bcaa..9d0c97d45ddba71041f440bc37f838c051386896 100644
--- a/src/managerimpl.cpp
+++ b/src/managerimpl.cpp
@@ -2010,9 +2010,9 @@ ManagerImpl::setAccountDetails( const ::DBus::String& accountID,
     setConfig(accountID, SIP_PASSWORD,  (*details.find(SIP_PASSWORD)).second);
     setConfig(accountID, SIP_HOST_PART, (*details.find(SIP_HOST_PART)).second);
     //setConfig(accountID, SIP_PROXY,     (*details.find(SIP_PROXY)).second);
-    //setConfig(accountID, SIP_STUN_SERVER,(*details.find(SIP_STUN_SERVER)).second);
-    //setConfig(accountID, SIP_USE_STUN,
-    //    (*details.find(SIP_USE_STUN)).second == "TRUE" ? "1" : "0");
+    setConfig(accountID, SIP_STUN_SERVER,(*details.find(SIP_STUN_SERVER)).second);
+    setConfig(accountID, SIP_USE_STUN,
+        (*details.find(SIP_USE_STUN)).second == "TRUE" ? "1" : "0");
   }
   else if (accountType == "IAX") {
     setConfig(accountID, IAX_FULL_NAME, (*details.find(IAX_FULL_NAME)).second);
diff --git a/src/sipaccount.cpp b/src/sipaccount.cpp
index 561964b724766ab728cb17d1e037162d2cfab014..19076f5386dded38bd4f26849243257aa6748697 100644
--- a/src/sipaccount.cpp
+++ b/src/sipaccount.cpp
@@ -43,7 +43,7 @@ SIPAccount::registerVoIPLink()
   int useStun = Manager::instance().getConfigInt(_accountID,SIP_USE_STUN);
   
   SIPVoIPLink* thislink = dynamic_cast<SIPVoIPLink*> (_link);
-  thislink->setStunServer(Manager::instance().getConfigString(_accountID,DFT_STUN_SERVER));
+  thislink->setStunServer(Manager::instance().getConfigString(_accountID,SIP_STUN_SERVER));
   thislink->setUseStun( useStun!=0 ? true : false);
 
   _link->init();
diff --git a/src/user_cfg.h b/src/user_cfg.h
index 908ce5ba6b764842b2b9d6ac49578e983fd27651..d55f124dd068d848574a60f7a2c125caadef77f1 100644
--- a/src/user_cfg.h
+++ b/src/user_cfg.h
@@ -48,8 +48,6 @@
 #define PLAY_TONES		"DTMF.playTones" 
 #define PULSE_LENGTH		"DTMF.pulseLength"
 #define SEND_DTMF_AS		"DTMF.sendDTMFas"
-#define STUN_SERVER		"STUN.STUNserver"
-#define USE_STUN		"STUN.useStun"
 #define ALSA_CARD_ID_IN		"Alsa.cardID_In"
 #define ALSA_CARD_ID_OUT	"Alsa.cardID_Out"
 #define ALSA_SAMPLE_RATE	"Alsa.sampleRate"