diff --git a/sflphone-client-kde/src/AccountWizard.cpp b/sflphone-client-kde/src/AccountWizard.cpp
index b3a88891674dbae27468602d73aa4feccffd33b3..97c4e5db2bfd30504406f48c5a74a34c9552c515 100644
--- a/sflphone-client-kde/src/AccountWizard.cpp
+++ b/sflphone-client-kde/src/AccountWizard.cpp
@@ -171,6 +171,7 @@ AccountWizard::AccountWizard(QWidget * parent)
 	setWindowTitle(i18n("Account creation wizard"));
 	setWindowIcon(QIcon(ICON_SFLPHONE));
 	setMinimumHeight(350);
+        setMinimumWidth(500);
 	setPixmap(QWizard::WatermarkPixmap, QPixmap(ICON_SFLPHONE));
 }
 
@@ -644,6 +645,7 @@ WizardAccountStunPage::WizardAccountStunPage(QWidget *parent)
 	checkBox_enableStun = new QCheckBox(i18n("Enable STUN"));
 	label_StunServer = new QLabel(i18n("Stun Server"));
 	lineEdit_StunServer = new QLineEdit();
+        lineEdit_StunServer->setDisabled(true);
 	
 	registerField(FIELD_SIP_ENABLE_STUN, checkBox_enableStun);
 	registerField(FIELD_SIP_STUN_SERVER, lineEdit_StunServer);
@@ -653,6 +655,8 @@ WizardAccountStunPage::WizardAccountStunPage(QWidget *parent)
 	layout->addWidget(label_StunServer);
 	layout->addWidget(lineEdit_StunServer);
 	setLayout(layout);
+        
+        connect(checkBox_enableStun, SIGNAL(toggled(bool)), lineEdit_StunServer, SLOT(setEnabled(bool)));
 }
 
 
diff --git a/sflphone-client-kde/src/CMakeLists.txt b/sflphone-client-kde/src/CMakeLists.txt
index f2a721f3a845d23e840112dafe6b286267eac3f6..52c679452b42168636b09edb886e8b70c5490c40 100644
--- a/sflphone-client-kde/src/CMakeLists.txt
+++ b/sflphone-client-kde/src/CMakeLists.txt
@@ -43,14 +43,14 @@ SET(	sflphone_client_kde_SRCS
 	conf/dlgdisplay.cpp
 	conf/dlgaccounts.cpp
 	conf/dlgaudio.cpp
-	conf/dlgrecord.cpp
+	#conf/dlgrecord.cpp
 	conf/dlgaddressbook.cpp
 	conf/dlghooks.cpp
 	conf/ConfigurationSkeleton.cpp
 	Dialpad.cpp
 	Codec.cpp
-	CodecListModel.cpp
-	SortableCodecListWidget.cpp
+	#CodecListModel.cpp
+	#SortableCodecListWidget.cpp
 	Item.cpp
 	AccountListModel.cpp
 )
diff --git a/sflphone-client-kde/src/conf/ConfigurationDialog.cpp b/sflphone-client-kde/src/conf/ConfigurationDialog.cpp
index 8ea4179b2282099204b70da206f942967994a166..08873dc4aadb10984b14d25c2acb7b34bd5852a2 100644
--- a/sflphone-client-kde/src/conf/ConfigurationDialog.cpp
+++ b/sflphone-client-kde/src/conf/ConfigurationDialog.cpp
@@ -42,7 +42,7 @@ ConfigurationDialog::ConfigurationDialog(SFLPhoneView *parent)
 	dlgAccounts    = new DlgAccounts(this);
 	dlgAudio       = new DlgAudio(this);
 	dlgAddressBook = new DlgAddressBook(this);
-	dlgRecord      = new DlgRecord(this);
+	//dlgRecord      = new DlgRecord(this);
 	dlgHooks       = new DlgHooks(this);
 	
 	addPage( dlgGeneral      , i18n("General")      , "sflphone-client-kde" ); 
@@ -50,7 +50,7 @@ ConfigurationDialog::ConfigurationDialog(SFLPhoneView *parent)
 	addPage( dlgAccounts     , i18n("Accounts")     , "personal" ); 
 	addPage( dlgAudio        , i18n("Audio")        , "voicecall" ); 
 	addPage( dlgAddressBook  , i18n("Address Book") , "x-office-address-book" ); 
-	addPage( dlgRecord       , i18n("Recordings")   , "media-record" ); 
+	//addPage( dlgRecord       , i18n("Recordings")   , "media-record" ); 
 	addPage( dlgHooks        , i18n("Hooks")        , "insert-link" );
 	
 	connect(this, SIGNAL(applyClicked()), this,     SLOT(applyCustomSettings()));
diff --git a/sflphone-client-kde/src/conf/ConfigurationDialog.h b/sflphone-client-kde/src/conf/ConfigurationDialog.h
index b59f2a14a9495089bfc28ee2b48d72f7e0425c7e..80fdd4f7709b7c27f3a8c6a31b080c19c3e750b0 100644
--- a/sflphone-client-kde/src/conf/ConfigurationDialog.h
+++ b/sflphone-client-kde/src/conf/ConfigurationDialog.h
@@ -62,7 +62,7 @@ private:
 	DlgAccounts    * dlgAccounts;
 	DlgAudio       * dlgAudio;
 	DlgAddressBook * dlgAddressBook;
-	DlgRecord      * dlgRecord;
+	//DlgRecord      * dlgRecord;
 	DlgHooks       * dlgHooks;
 
 public:
diff --git a/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp b/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp
index 92c072d68f91c6b6f20b402125343c96bc62632f..92732eb4209536f7bcce33dd71aa2e273b74072b 100644
--- a/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp
+++ b/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp
@@ -27,7 +27,7 @@ ConfigurationSkeleton::ConfigurationSkeleton()
  : ConfigurationSkeletonBase()
 {
 	qDebug() << "Building ConfigurationSkeleton";
-	codecListModel = new CodecListModel();
+	//codecListModel = new CodecListModel();
 	readConfig();
 }
 
@@ -45,10 +45,10 @@ ConfigurationSkeleton::~ConfigurationSkeleton()
 {
 }
 
-CodecListModel * ConfigurationSkeleton::getCodecListModel()
-{
-	return codecListModel;
-}
+// CodecListModel * ConfigurationSkeleton::getCodecListModel()
+// {
+// 	return codecListModel;
+// }
 
 void ConfigurationSkeleton::readConfig()
 {
@@ -105,7 +105,7 @@ void ConfigurationSkeleton::readConfig()
 	}
 
 	//codecs settings
-	setActiveCodecList(configurationManager.getActiveCodecList());
+	//setActiveCodecList(configurationManager.getActiveCodecList()); //Outdated
 
 	qDebug() << "configurationManager.getCurrentAudioOutputPlugin() = " << configurationManager.getCurrentAudioOutputPlugin();
 	setAlsaPlugin(configurationManager.getCurrentAudioOutputPlugin());
@@ -231,8 +231,8 @@ void ConfigurationSkeleton::writeConfig()
 	configurationManager.setRingtoneChoice(ringtone());
 
 	//codecs settings
-	qDebug() << "activeCodecList = " << activeCodecList();
-	configurationManager.setActiveCodecList(activeCodecList());
+	//qDebug() << "activeCodecList = " << activeCodecList();
+	//configurationManager.setActiveCodecList(activeCodecList());
 	
 
 	//alsa settings
@@ -290,12 +290,12 @@ void ConfigurationSkeleton::writeConfig()
 	readConfig();
 }
 
-QStringList ConfigurationSkeleton::activeCodecList() const
-{
-	return codecListModel->getActiveCodecList();
-}
-
-void ConfigurationSkeleton::setActiveCodecList(const QStringList & v)
-{
-	codecListModel->setActiveCodecList(v);
-}
+// QStringList ConfigurationSkeleton::activeCodecList() const
+// {
+// 	return codecListModel->getActiveCodecList();
+// }
+// 
+// void ConfigurationSkeleton::setActiveCodecList(const QStringList & v)
+// {
+// 	codecListModel->setActiveCodecList(v);
+// }
diff --git a/sflphone-client-kde/src/conf/ConfigurationSkeleton.h b/sflphone-client-kde/src/conf/ConfigurationSkeleton.h
index 666173a93d3fb492b737976eaa77c8883ee2cb7e..ed5d309784548cd24e82e88b930be4ed959a5de6 100644
--- a/sflphone-client-kde/src/conf/ConfigurationSkeleton.h
+++ b/sflphone-client-kde/src/conf/ConfigurationSkeleton.h
@@ -24,7 +24,7 @@
 #include <QWidget>
 
 #include "kcfg_settings.h"
-#include "CodecListModel.h"
+//#include "CodecListModel.h"
 #include "AccountListModel.h"
 
 /**
@@ -45,7 +45,7 @@ Q_OBJECT
 private:
 	static ConfigurationSkeleton * instance;
 	
-	CodecListModel * codecListModel;
+	//CodecListModel * codecListModel;
 
 public:
 	ConfigurationSkeleton();
@@ -65,10 +65,10 @@ public:
 	
 	static ConfigurationSkeleton * self();
 	
-	QStringList activeCodecList() const;
-	void setActiveCodecList(const QStringList & v);
+	//QStringList activeCodecList() const;
+	//void setActiveCodecList(const QStringList & v);
 	
-	CodecListModel * getCodecListModel();
+	//CodecListModel * getCodecListModel();
 
 };
 
diff --git a/sflphone-client-kde/src/conf/dlgaccounts.cpp b/sflphone-client-kde/src/conf/dlgaccounts.cpp
index 711e3ef407ffef33dd9c0950b3681ff9561f882f..9f270d89ffe0f6b652bd4db9e0a1e8bbf0321e98 100644
--- a/sflphone-client-kde/src/conf/dlgaccounts.cpp
+++ b/sflphone-client-kde/src/conf/dlgaccounts.cpp
@@ -2,6 +2,7 @@
  *   Copyright (C) 2009 by Savoir-Faire Linux                              *
  *   Author : Jérémy Quentin                                               *
  *   jeremy.quentin@savoirfairelinux.com                                   *
+ *   emmanuel.lepage@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  *
@@ -26,6 +27,8 @@
 #include "SFLPhoneView.h"
 #include "sflphone_const.h"
 #include "conf/ConfigurationDialog.h"
+#include <vector>
+#include <string>
 
 DlgAccounts::DlgAccounts(KConfigDialog *parent)
  : QWidget(parent)
@@ -39,6 +42,7 @@ DlgAccounts::DlgAccounts(KConfigDialog *parent)
 	button_accountRemove->setIcon(KIcon("list-remove"));
 	accountList = new AccountList(false);
 	loadAccountList();
+        loadCodecList();
 	accountListHasChanged = false;
 	//toolButton_accountsApply->setEnabled(false);
 	
@@ -100,9 +104,19 @@ DlgAccounts::DlgAccounts(KConfigDialog *parent)
                 
         connect(edit_tls_private_key_password,  SIGNAL(textEdited(const QString &)),
                 this,                  SLOT(changedAccountList()));
-	        
-	
+
+
 	connect(this,     SIGNAL(updateButtons()), parent, SLOT(updateButtons()));
+        
+
+        connect(keditlistbox_codec->listView(), SIGNAL(clicked(QModelIndex)),
+                this,                  SLOT(codecClicked(QModelIndex)));
+                
+        connect(keditlistbox_codec->addButton(), SIGNAL(clicked()),
+                this,                  SLOT(addCodec()));
+                
+        connect(keditlistbox_codec, SIGNAL(changed()),
+                this,                  SLOT(codecChanged()));
 }
 
 void DlgAccounts::saveAccountList()
@@ -218,6 +232,21 @@ void DlgAccounts::saveAccount(QListWidgetItem * item)
         account->setAccountDetail(TLS_REQUIRE_CLIENT_CERTIFICATE,check_tls_requier_cert->isChecked()?"true":"false");
         account->setAccountDetail(TLS_ENABLE,group_security_tls->isChecked()?"true":"false");
         account->setAccountDetail(TLS_METHOD, QString::number(combo_security_STRP->currentIndex()));
+        
+        QStringList test;
+        //QString test2;
+        foreach (QString aCodec, keditlistbox_codec->items()) {
+          foreach (StringHash _aCodec, codecList) {
+            if (_aCodec["alias"] == aCodec) {
+              test << _aCodec["id"];
+              //test2 += _aCodec["id"] + "/";
+            }
+          }
+        }
+        
+        ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
+        configurationManager.setActiveCodecList(test, account->getAccountDetail(ACCOUNT_ID));
+        qDebug() << "Account codec have been saved" << test << account->getAccountDetail(ACCOUNT_ID);
 }
 
 void DlgAccounts::loadAccount(QListWidgetItem * item)
@@ -244,24 +273,6 @@ void DlgAccounts::loadAccount(QListWidgetItem * item)
 	edit4_user->setText( account->getAccountDetail(ACCOUNT_USERNAME));
 	edit5_password->setText( account->getAccountDetail(ACCOUNT_PASSWORD));
 	edit6_mailbox->setText( account->getAccountDetail(ACCOUNT_MAILBOX));
-// <<<<<<< HEAD
-// 	
-//         //Security
-//         edit_tls_private_key_password_2->setText( account->getAccountDetail(TLS_PASSWORD ));
-//         spinbox_tls_listener_2->setValue( account->getAccountDetail(TLS_LISTENER_PORT ).toInt());
-//         file_tls_authority_2->setText( account->getAccountDetail(TLS_CA_LIST_FILE ));
-//         file_tls_endpoint_2->setText( account->getAccountDetail(TLS_CERTIFICATE_FILE ));
-//         file_tls_private_key_2->setText( account->getAccountDetail(TLS_PRIVATE_KEY_FILE ));
-//         qDebug() << "\n\n\n\nTHIS: " << account->getAccountDetail(TLS_METHOD ) << "\n\n\n";
-//         combo_tls_method_2->setCurrentIndex( combo_tls_method_2->findText(account->getAccountDetail(TLS_METHOD )));
-//         edit_tls_cipher_2->setText( account->getAccountDetail(TLS_CIPHERS ));
-//         edit_tls_outgoing_2->setText( account->getAccountDetail(TLS_SERVER_NAME ));
-//         spinbox_tls_timeout_sec_2->setValue( account->getAccountDetail(TLS_NEGOTIATION_TIMEOUT_SEC ).toInt());
-//         spinbox_tls_timeout_msec_2->setValue( account->getAccountDetail(TLS_NEGOTIATION_TIMEOUT_MSEC ).toInt());
-//         check_tls_incoming_2->setChecked( (account->getAccountDetail(TLS_VERIFY_SERVER ) == "true")?1:0);
-//         check_tls_answer_2->setChecked( (account->getAccountDetail(TLS_VERIFY_CLIENT ) == "true")?1:0);
-//         check_tls_requier_cert_2->setChecked( (account->getAccountDetail(TLS_REQUIRE_CLIENT_CERTIFICATE ) == "true")?1:0);
-// =======
 	checkBox_conformRFC->setChecked( account->getAccountDetail(ACCOUNT_RESOLVE_ONCE) != "TRUE" );
 	bool ok;
 	int val = account->getAccountDetail(ACCOUNT_EXPIRE).toInt(&ok);
@@ -282,33 +293,41 @@ void DlgAccounts::loadAccount(QListWidgetItem * item)
         check_tls_incoming->setChecked( (account->getAccountDetail(TLS_VERIFY_SERVER ) == "true")?1:0);
         check_tls_answer->setChecked( (account->getAccountDetail(TLS_VERIFY_CLIENT ) == "true")?1:0);
         check_tls_requier_cert->setChecked( (account->getAccountDetail(TLS_REQUIRE_CLIENT_CERTIFICATE ) == "true")?1:0);
-// >>>>>>> master
+
         group_security_tls->setChecked( (account->getAccountDetail(TLS_ENABLE ) == "true")?1:0);
         
         combo_security_STRP->setCurrentIndex(account->getAccountDetail(TLS_METHOD ).toInt());
         
+        keditlistbox_codec->clear();
+        ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
+        QStringList activeCodecList = configurationManager.getActiveCodecList(account->getAccountDetail(ACCOUNT_ID));
+        foreach (QString aCodec, activeCodecList) {
+          foreach (StringHash _aCodec, codecList) {
+            if (_aCodec["id"] == aCodec)
+              keditlistbox_codec->insertItem(_aCodec["alias"]);
+          }
+        }
         
-// <<<<<<< HEAD
-//	if(protocolIndex == 0) // if sip selected
-//	{
-//		checkbox_stun->setChecked(account->getAccountDetail(ACCOUNT_SIP_STUN_ENABLED) == ACCOUNT_ENABLED_TRUE);
-//		edit_stunServer->setText( account->getAccountDetail(ACCOUNT_SIP_STUN_SERVER) );
-//		checkbox_zrtp->setChecked(account->getAccountDetail(ACCOUNT_SRTP_ENABLED) == ACCOUNT_ENABLED_TRUE);
-//
-//		tab_advanced->setEnabled(true);
-//		edit_stunServer->setEnabled(checkbox_stun->isChecked());
-//	}
-//	else
-//	{
-//		checkbox_stun->setChecked(false);
-//		edit_stunServer->setText( account->getAccountDetail(ACCOUNT_SIP_STUN_SERVER) );
-//		checkbox_zrtp->setChecked(false);
-//
-//		tab_advanced->setEnabled(false);
-//	}
+        
+
+	if(protocolIndex == 0) // if sip selected
+	{
+		checkbox_stun->setChecked(account->getAccountDetail(ACCOUNT_SIP_STUN_ENABLED) == ACCOUNT_ENABLED_TRUE);
+		line_stun->setText( account->getAccountDetail(ACCOUNT_SIP_STUN_SERVER) );
+		//checkbox_zrtp->setChecked(account->getAccountDetail(ACCOUNT_SRTP_ENABLED) == ACCOUNT_ENABLED_TRUE);
+
+		tab_advanced->setEnabled(true);
+		line_stun->setEnabled(checkbox_stun->isChecked());
+	}
+	else
+	{
+		checkbox_stun->setChecked(false);
+		line_stun->setText( account->getAccountDetail(ACCOUNT_SIP_STUN_SERVER) );
+		//checkbox_zrtp->setChecked(false);
+
+		tab_advanced->setEnabled(false);
+	}
 
-// =======
-// >>>>>>> master
 	updateStatusLabel(account);
 	frame2_editAccounts->setEnabled(true);
 }
@@ -350,7 +369,7 @@ void DlgAccounts::changedAccountList()
 //	if(currentIndex==0)
 //	{
 //		tab_advanced->setEnabled(true);
-//		edit_stunServer->setEnabled(checkbox_stun->isChecked());
+//		line_stun->setEnabled(checkbox_stun->isChecked());
 //	}
 //	else
 //	{
@@ -524,3 +543,70 @@ void DlgAccounts::updateWidgets()
 	accountListHasChanged = false;
 }
 
+void DlgAccounts::loadCodecList() {
+  ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
+  QStringList codecIdList = configurationManager.getCodecList();
+  QStringList tmpNameList;
+  
+  foreach (QString aCodec, codecIdList) {
+    QStringList codec = configurationManager.getCodecDetails(aCodec.toInt());
+    QHash<QString, QString> _codec;
+    _codec["name"] = codec[0];
+    _codec["frequency"] = codec[1];
+    _codec["bitrate"] = codec[2];
+    _codec["bandwidth"] = codec[3];
+    _codec["id"] = aCodec;
+    
+    tmpNameList << _codec["name"];
+    
+    codecList.push_back(_codec);
+  }
+  
+  //Generate a relative alias for each codec
+  for (int i =0; i < codecList.size();i++) {
+    if (tmpNameList.indexOf(codecList[i]["name"]) == tmpNameList.lastIndexOf(codecList[i]["name"])) {
+      codecList[i]["alias"] = codecList[i]["name"];
+    }
+    else {
+      codecList[i]["alias"] = codecList[i]["name"] + " (" + codecList[i]["frequency"] + ")";
+    }
+  }
+}
+
+
+void DlgAccounts::codecClicked(const QModelIndex & model) {
+  foreach (StringHash aCodec, codecList) {
+    if (aCodec["alias"] == keditlistbox_codec->currentText()) {
+      label_bandwidth_value->setText(aCodec["bandwidth"]);
+      label_bitrate_value->setText(aCodec["bitrate"]);
+      label_frequency_value->setText(aCodec["frequency"]);
+    }
+  }
+  if (keditlistbox_codec->items().size() == codecList.size())
+    keditlistbox_codec->addButton()->setEnabled(false);
+  else
+    keditlistbox_codec->addButton()->setEnabled(true);
+}
+
+void DlgAccounts::addCodec(QString name) {
+  if (name.isEmpty()) {
+    Private_AddCodecDialog* aDialog = new Private_AddCodecDialog(codecList, keditlistbox_codec->items(), this);
+    aDialog->show();
+    connect(aDialog, SIGNAL(addCodec(QString)), this, SLOT(addCodec(QString)));
+  }
+  else {
+    keditlistbox_codec->insertItem(name);
+    accountListHasChanged = true;
+    emit updateButtons();
+  }
+}
+
+void DlgAccounts::codecChanged() {
+  if (keditlistbox_codec->items().size() == codecList.size())
+    keditlistbox_codec->addButton()->setEnabled(false);
+  else
+    keditlistbox_codec->addButton()->setEnabled(true);
+  
+  accountListHasChanged = true;
+  emit updateButtons();
+}
\ No newline at end of file
diff --git a/sflphone-client-kde/src/conf/dlgaccounts.h b/sflphone-client-kde/src/conf/dlgaccounts.h
index dcb8fb23f04c39a43668945b54f769418bc61985..b06bc622d05c108f883d79313fb89b5e85616553 100644
--- a/sflphone-client-kde/src/conf/dlgaccounts.h
+++ b/sflphone-client-kde/src/conf/dlgaccounts.h
@@ -2,6 +2,7 @@
  *   Copyright (C) 2009 by Savoir-Faire Linux                              *
  *   Author : Jérémy Quentin                                               *
  *   jeremy.quentin@savoirfairelinux.com                                   *
+ *   emmanuel.lepage@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  *
@@ -23,10 +24,54 @@
 
 #include <QWidget>
 #include <kconfigdialog.h>
+#include <QTableWidget>
 
 #include "ui_dlgaccountsbase.h"
 #include "Account.h"
 #include "AccountList.h"
+#include <QDebug>
+
+typedef QHash<QString, QString> StringHash; //Needed to fix a Qt foreach macro argument parsing bug
+
+class Private_AddCodecDialog : public KDialog {
+  Q_OBJECT
+  public:
+    Private_AddCodecDialog(QList< StringHash > itemList, QStringList currentItems ,QWidget* parent = 0) : KDialog(parent) {
+      codecTable = new QTableWidget(this);
+      codecTable->verticalHeader()->setVisible(false);
+      codecTable->setColumnCount(5);
+      codecTable->setSelectionBehavior(QAbstractItemView::SelectRows);
+      int i =0;
+      foreach (StringHash aCodec, itemList) {
+        if ( currentItems.indexOf(aCodec["alias"]) == -1) {
+          codecTable->setRowCount(i+1);
+          QTableWidgetItem* cName = new  QTableWidgetItem(aCodec["name"]);
+          codecTable->setItem(i,0,cName);
+          QTableWidgetItem* cBitrate = new  QTableWidgetItem(aCodec["bitrate"]);
+          codecTable->setItem(i,1,cBitrate);
+          QTableWidgetItem* cFrequency = new  QTableWidgetItem(aCodec["frequency"]);
+          codecTable->setItem(i,2,cFrequency);
+          QTableWidgetItem* cBandwidth = new  QTableWidgetItem(aCodec["bandwidth"]);
+          codecTable->setItem(i,3,cBandwidth);
+          QTableWidgetItem* cAlias = new  QTableWidgetItem(aCodec["alias"]);
+          codecTable->setItem(i,4,cAlias);
+          i++;
+        }
+      }
+      setMainWidget(codecTable);
+      resize(400,300);
+      
+      connect(this, SIGNAL(okClicked()), this, SLOT(emitNewCodec()));
+    }
+  private:
+    QTableWidget* codecTable;
+  private slots:
+    void emitNewCodec() {
+      emit addCodec(codecTable->item(codecTable->currentRow(),4)->text());
+    }
+  signals:
+    void addCodec(QString alias);
+};
 
 /**
 	@author Jérémy Quentin <jeremy.quentin@gmail.com>
@@ -58,7 +103,9 @@ public:
 	
 private:
 	AccountList * accountList;
+        QList< StringHash > codecList;
 	bool accountListHasChanged;
+        void loadCodecList();
 
 public slots:
 	void saveAccountList();
@@ -84,6 +131,9 @@ private slots:
 	void updateAccountListCommands();
 	void updateStatusLabel(QListWidgetItem * item);
 	void updateStatusLabel(Account * account);
+        void codecClicked(const QModelIndex & model);
+        void addCodec(QString name = "");
+        void codecChanged();
 	
 	
 signals:
diff --git a/sflphone-client-kde/src/conf/dlgaccountsbase.ui b/sflphone-client-kde/src/conf/dlgaccountsbase.ui
index a794240e5a4d840c83d7c9b795cfec75f651467a..99c7aab4d540d95771a38e3973460799b90d31d9 100644
--- a/sflphone-client-kde/src/conf/dlgaccountsbase.ui
+++ b/sflphone-client-kde/src/conf/dlgaccountsbase.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>748</width>
-    <height>447</height>
+    <width>858</width>
+    <height>550</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -415,6 +415,122 @@
           </item>
          </layout>
         </widget>
+        <widget class="QWidget" name="tab_stun">
+         <attribute name="title">
+          <string>Stun</string>
+         </attribute>
+         <layout class="QGridLayout" name="gridLayout_6">
+          <item row="0" column="0" colspan="2">
+           <widget class="QLabel" name="label_commonSettings">
+            <property name="text">
+             <string>Stun parameters will be applied on each SIP account created.</string>
+            </property>
+            <property name="wordWrap">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0">
+           <spacer name="verticalSpacer_2">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>40</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="1" column="0">
+           <widget class="QCheckBox" name="checkbox_stun">
+            <property name="text">
+             <string>Enable Stun</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="KLineEdit" name="line_stun">
+            <property name="enabled">
+             <bool>false</bool>
+            </property>
+            <property name="clickMessage">
+             <string>choose Stun server (example : stunserver.org)</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+        <widget class="QWidget" name="tab_codec">
+         <attribute name="title">
+          <string>Codecs</string>
+         </attribute>
+         <layout class="QGridLayout" name="gridLayout_7">
+          <item row="0" column="0" colspan="3">
+           <widget class="KEditListBox" name="keditlistbox_codec">
+            <property name="buttons">
+             <set>KEditListBox::All</set>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <widget class="QLabel" name="label_frequency">
+            <property name="text">
+             <string>Frequency: </string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="QLabel" name="label_frequency_value">
+            <property name="text">
+             <string>-</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2" rowspan="2">
+           <spacer name="horizontalSpacer_6">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>470</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="2" column="0">
+           <widget class="QLabel" name="label_bitrate">
+            <property name="text">
+             <string>Bitrate:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1">
+           <widget class="QLabel" name="label_bitrate_value">
+            <property name="text">
+             <string>-</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="0">
+           <widget class="QLabel" name="label_bandwidth">
+            <property name="text">
+             <string>Bandwidth: </string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1">
+           <widget class="QLabel" name="label_bandwidth_value">
+            <property name="text">
+             <string>-</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
         <widget class="QWidget" name="tab">
          <attribute name="title">
           <string>Credential</string>
@@ -423,7 +539,7 @@
           <item row="0" column="0" rowspan="2" colspan="3">
            <widget class="QListWidget" name="list_credential">
             <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
@@ -445,6 +561,12 @@
           </item>
           <item row="3" column="0" colspan="3">
            <widget class="QGroupBox" name="group_credential">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
             <property name="title">
              <string>Details</string>
             </property>
@@ -513,7 +635,7 @@
               <rect>
                <x>0</x>
                <y>0</y>
-               <width>426</width>
+               <width>386</width>
                <height>588</height>
               </rect>
              </property>
@@ -859,58 +981,6 @@
      </layout>
     </widget>
    </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox_commonSettings">
-     <property name="title">
-      <string/>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_10">
-      <item>
-       <widget class="QLabel" name="label_commonSettings">
-        <property name="text">
-         <string>Stun parameters will be applied on each SIP account created.</string>
-        </property>
-        <property name="wordWrap">
-         <bool>true</bool>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <layout class="QFormLayout" name="formLayout_commonSettings">
-        <property name="fieldGrowthPolicy">
-         <enum>QFormLayout::ExpandingFieldsGrow</enum>
-        </property>
-        <item row="0" column="0">
-         <widget class="QCheckBox" name="kcfg_enableStun">
-          <property name="text">
-           <string>Enable Stun</string>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="KLineEdit" name="kcfg_stunServer">
-          <property name="enabled">
-           <bool>false</bool>
-          </property>
-          <property name="toolTip">
-           <string>Format : name.server:port</string>
-          </property>
-          <property name="squeezedTextEnabled">
-           <bool>false</bool>
-          </property>
-          <property name="clickMessage">
-           <string>choose Stun server (example : stunserver.org)</string>
-          </property>
-          <property name="showClearButton" stdset="0">
-           <bool>false</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
   </layout>
  </widget>
  <customwidgets>
@@ -924,6 +994,11 @@
    <extends>QFrame</extends>
    <header>kurlrequester.h</header>
   </customwidget>
+  <customwidget>
+   <class>KEditListBox</class>
+   <extends>QGroupBox</extends>
+   <header>keditlistbox.h</header>
+  </customwidget>
   <customwidget>
    <class>KLineEdit</class>
    <extends>QLineEdit</extends>
@@ -935,18 +1010,18 @@
  </resources>
  <connections>
   <connection>
-   <sender>kcfg_enableStun</sender>
+   <sender>checkbox_stun</sender>
    <signal>toggled(bool)</signal>
-   <receiver>kcfg_stunServer</receiver>
+   <receiver>line_stun</receiver>
    <slot>setEnabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>71</x>
-     <y>414</y>
+     <x>324</x>
+     <y>74</y>
     </hint>
     <hint type="destinationlabel">
-     <x>167</x>
-     <y>419</y>
+     <x>429</x>
+     <y>77</y>
     </hint>
    </hints>
   </connection>
diff --git a/sflphone-client-kde/src/conf/dlgaudio.cpp b/sflphone-client-kde/src/conf/dlgaudio.cpp
index 5d15f69406127b158896edb97f8a3cca9d08a880..c2a16f93d70c486922a211afdad1eedd8cb5151d 100644
--- a/sflphone-client-kde/src/conf/dlgaudio.cpp
+++ b/sflphone-client-kde/src/conf/dlgaudio.cpp
@@ -36,12 +36,17 @@ DlgAudio::DlgAudio(KConfigDialog *parent)
 	KUrlRequester_ringtone->setMode(KFile::File | KFile::ExistingOnly);
 	KUrlRequester_ringtone->lineEdit()->setObjectName("kcfg_ringtone"); 
 	KUrlRequester_ringtone->lineEdit()->setReadOnly(true); 
+        
+        KUrlRequester_destinationFolder->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly);
+        KUrlRequester_destinationFolder->setUrl(KUrl(QDir::home().path()));
+        KUrlRequester_destinationFolder->lineEdit()->setObjectName("kcfg_destinationFolder"); 
+        KUrlRequester_destinationFolder->lineEdit()->setReadOnly(true); 
 	
-	codecTableHasChanged = false;
+	//codecTableHasChanged = false;
 	
 	ConfigurationSkeleton * skeleton = ConfigurationSkeleton::self();
-	CodecListModel * model = skeleton->getCodecListModel();
-	sortableCodecList->setModel(model);
+	//CodecListModel * model = skeleton->getCodecListModel();
+	//sortableCodecList->setModel(model);
 	
 // 	loadAlsaSettings();
 	connect(box_alsaPlugin,        SIGNAL(activated(int)),   
@@ -50,8 +55,8 @@ DlgAudio::DlgAudio(KConfigDialog *parent)
 	connect(this,                  SIGNAL(updateButtons()),
 	        parent,                SLOT(updateButtons()));
 	
-	connect(sortableCodecList,     SIGNAL(dataChanged()),
-	        this,                  SLOT(codecTableChanged()));
+	//connect(sortableCodecList,     SIGNAL(dataChanged()),
+	        //this,                  SLOT(codecTableChanged()));
 	
 }
 
@@ -64,7 +69,7 @@ void DlgAudio::updateWidgets()
 {
 	loadAlsaSettings();
 	
-	codecTableHasChanged = false;
+	//codecTableHasChanged = false;
 }
 
 
@@ -75,7 +80,7 @@ void DlgAudio::updateSettings()
 	ConfigurationSkeleton * skeleton = ConfigurationSkeleton::self();
 	skeleton->setAlsaPlugin(box_alsaPlugin->currentText());
 	
-	codecTableHasChanged = false;
+	//codecTableHasChanged = false;
 }
 
 bool DlgAudio::hasChanged()
@@ -85,7 +90,7 @@ bool DlgAudio::hasChanged()
 	bool alsaPluginHasChanged = 
 	           skeleton->interface() == ConfigurationSkeleton::EnumInterface::ALSA 
 	       &&  skeleton->alsaPlugin() != box_alsaPlugin->currentText();
-	return alsaPluginHasChanged || codecTableHasChanged;
+	return alsaPluginHasChanged ;//|| codecTableHasChanged;
 }
 
 void DlgAudio::loadAlsaSettings()
@@ -120,9 +125,9 @@ void DlgAudio::loadAlsaSettings()
 	}
 }
 
-void DlgAudio::codecTableChanged()
-{
-	qDebug() << "codecTableChanged";
-	codecTableHasChanged = true;
-	emit updateButtons();
-}
+// void DlgAudio::codecTableChanged()
+// {
+// 	qDebug() << "codecTableChanged";
+// 	codecTableHasChanged = true;
+// 	emit updateButtons();
+// }
diff --git a/sflphone-client-kde/src/conf/dlgaudio.h b/sflphone-client-kde/src/conf/dlgaudio.h
index e33dfd8d2b1fb5597d79afb2b071e72886908fd9..d89b114ead971835d752834322c1a6b986995f10 100644
--- a/sflphone-client-kde/src/conf/dlgaudio.h
+++ b/sflphone-client-kde/src/conf/dlgaudio.h
@@ -39,7 +39,7 @@ public:
     ~DlgAudio();
 
 private:
-	bool codecTableHasChanged;
+	//bool codecTableHasChanged;
 
 public slots:
 	void updateWidgets();
@@ -56,7 +56,7 @@ public slots:
 	void loadAlsaSettings();
 	
 private slots:
-	void codecTableChanged();
+	//void codecTableChanged();
 	
 signals:
 	void updateButtons();
diff --git a/sflphone-client-kde/src/conf/dlgaudiobase.ui b/sflphone-client-kde/src/conf/dlgaudiobase.ui
index 4bf98bd830afaf61c8ece5445240f0192305621e..5e7d099775d022d9ba0439f648a7fb6f3e0bb60f 100644
--- a/sflphone-client-kde/src/conf/dlgaudiobase.ui
+++ b/sflphone-client-kde/src/conf/dlgaudiobase.ui
@@ -67,39 +67,6 @@
      </layout>
     </widget>
    </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox2_codecs">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="title">
-      <string>Codecs</string>
-     </property>
-     <layout class="QHBoxLayout" name="horizontalLayout">
-      <property name="spacing">
-       <number>-1</number>
-      </property>
-      <property name="leftMargin">
-       <number>5</number>
-      </property>
-      <property name="topMargin">
-       <number>2</number>
-      </property>
-      <property name="rightMargin">
-       <number>5</number>
-      </property>
-      <property name="bottomMargin">
-       <number>2</number>
-      </property>
-      <item>
-       <widget class="SortableCodecListWidget" name="sortableCodecList" native="true"/>
-      </item>
-     </layout>
-    </widget>
-   </item>
    <item>
     <widget class="QStackedWidget" name="stackedWidget_interfaceSpecificSettings">
      <property name="sizePolicy">
@@ -218,24 +185,66 @@
      </widget>
     </widget>
    </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox1_recordGeneral">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title">
+      <string>Recording</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QLabel" name="label_destinationFolderd">
+        <property name="text">
+         <string>Destination folder</string>
+        </property>
+        <property name="buddy">
+         <cstring>KUrlRequester_destinationFolder</cstring>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="KUrlRequester" name="KUrlRequester_destinationFolder">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
   </layout>
  </widget>
  <customwidgets>
-  <customwidget>
-   <class>KComboBox</class>
-   <extends>QComboBox</extends>
-   <header>kcombobox.h</header>
-  </customwidget>
   <customwidget>
    <class>KUrlRequester</class>
    <extends>QFrame</extends>
    <header>kurlrequester.h</header>
   </customwidget>
   <customwidget>
-   <class>SortableCodecListWidget</class>
-   <extends>QWidget</extends>
-   <header>SortableCodecListWidget.h</header>
-   <container>1</container>
+   <class>KComboBox</class>
+   <extends>QComboBox</extends>
+   <header>kcombobox.h</header>
   </customwidget>
  </customwidgets>
  <resources/>
diff --git a/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml b/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml
index 8e966c933bac20ae18639f159e4942126cf8c526..c8d8710db0516f7f14d5e59677ed8d182f6b42ce 100644
--- a/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml
+++ b/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml
@@ -153,12 +153,14 @@
 		
     <method name="getActiveCodecList">
       <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+          <arg type="s" name="accountID" direction="in"/>
       <arg type="as" name="list" direction="out"/>
     </method>
 		
     <method name="setActiveCodecList">
       <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="VectorString"/>
       <arg type="as" name="list" direction="in"/>
+      <arg type="s" name="accountID" direction="in"/>
     </method>
 		
 		
diff --git a/sflphone-client-kde/src/sflphone_const.h b/sflphone-client-kde/src/sflphone_const.h
index 54b6f6e4666b58c12df9459526d244dd2184cda3..42c919cf988d527d2d664b1d0f15e8e4f89531da 100644
--- a/sflphone-client-kde/src/sflphone_const.h
+++ b/sflphone-client-kde/src/sflphone_const.h
@@ -263,6 +263,7 @@
 #define TLS_NEGOTIATION_TIMEOUT_SEC         "TLS.negotiationTimeoutSec"
 #define TLS_NEGOTIATION_TIMEOUT_MSEC        "TLS.negotiationTimemoutMsec"
 
+#define ACCOUNT_ID                         "Account.id"
 #define ACCOUNT_PASSWORD                   "password"
 #define ACCOUNT_AUTHENTICATION_USERNAME    "authenticationUsername"
 #define ACCOUNT_REALM                      "realm"