diff --git a/sflphone-client-kde/src/AccountWizard.cpp b/sflphone-client-kde/src/AccountWizard.cpp
index 1fdeb85b3a749820e9850ddd100b2980b15a9d16..83afe4bdadbe73ddfe748e15b8170aff4799ef82 100644
--- a/sflphone-client-kde/src/AccountWizard.cpp
+++ b/sflphone-client-kde/src/AccountWizard.cpp
@@ -34,13 +34,17 @@
 #define FIELD_SIP_ACCOUNT        "SIP"
 #define FIELD_IAX_ACCOUNT        "IAX"
 #define FIELD_EMAIL_ADDRESS      "EMAIL_ADDRESS"
-#define FIELD_ENABLE_STUN        "ENABLE_STUN"
-#define FIELD_STUN_SERVER        "STUN_SERVER"
+
 #define FIELD_SIP_ALIAS          "SIP_ALIAS"
 #define FIELD_SIP_SERVER         "SIP_SERVER"
 #define FIELD_SIP_USER           "SIP_USER"
 #define FIELD_SIP_PASSWORD       "SIP_PASSWORD"
 #define FIELD_SIP_VOICEMAIL      "SIP_VOICEMAIL"
+#define FIELD_SIP_ENABLE_STUN    "SIP_ENABLE_STUN"
+#define FIELD_SIP_STUN_SERVER    "SIP_STUN_SERVER"
+
+#define FIELD_ZRTP_ENABLED       "ZRTP_ENABLED"
+
 #define FIELD_IAX_ALIAS          "IAX_ALIAS"
 #define FIELD_IAX_SERVER         "IAX_SERVER"
 #define FIELD_IAX_USER           "IAX_USER"
@@ -157,8 +161,8 @@ AccountWizard::AccountWizard(QWidget * parent)
 	setPage(Page_AutoMan, new WizardAccountAutoManualPage);
 	setPage(Page_Type, new WizardAccountTypePage);
 	setPage(Page_Email, new WizardAccountEmailAddressPage);
-	setPage(Page_SIPForm, new WizardAccountFormPage(SIP));
-	setPage(Page_IAXForm, new WizardAccountFormPage(IAX));
+	setPage(Page_SIPForm, new WizardAccountSIPFormPage);
+	setPage(Page_IAXForm, new WizardAccountIAXFormPage);
 	setPage(Page_Stun, new WizardAccountStunPage);
 	setPage(Page_Conclusion, new WizardAccountConclusionPage);
 	
@@ -176,88 +180,133 @@ AccountWizard::~AccountWizard()
 
 void AccountWizard::accept()
 {
+	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
+
 	QString ret;
 	MapStringString accountDetails;
 	
 	QString & alias = accountDetails[QString(ACCOUNT_ALIAS)];
-	QString & server = accountDetails[QString(ACCOUNT_HOSTNAME)];
-	QString & user = accountDetails[QString(ACCOUNT_USERNAME)];
-	QString & password = accountDetails[QString(ACCOUNT_PASSWORD)];
-	QString & protocol = accountDetails[QString(ACCOUNT_TYPE)];
-	QString & mailbox = accountDetails[QString(ACCOUNT_MAILBOX)];
 	QString & enabled = accountDetails[QString(ACCOUNT_ENABLED)];
-	QString & resolveOnce = accountDetails[QString(ACCOUNT_RESOLVE_ONCE)];
-	QString & regExpire = accountDetails[QString(ACCOUNT_EXPIRE)];
-	
-	bool createAccount = false;
-	bool sip = false;
-	bool SFL = field(FIELD_SFL_ACCOUNT).toBool();
-	if(SFL)
+	QString & mailbox = accountDetails[QString(ACCOUNT_MAILBOX)];
+	QString & protocol = accountDetails[QString(ACCOUNT_TYPE)];
+	QString & server = accountDetails[QString(ACCOUNT_HOSTNAME)];	
+	QString & user = accountDetails[QString(ACCOUNT_USERNAME)];
+	QString & password = accountDetails[QString(ACCOUNT_PASSWORD)];	
+
+	// sip only parameters
+	QString & stun_enabled = accountDetails[QString(ACCOUNT_SIP_STUN_ENABLED)];
+	QString & stun_server = accountDetails[QString(ACCOUNT_SIP_STUN_SERVER)];
+
+	// zrtp only parameters
+	QString & srtp_enabled = accountDetails[QString(ACCOUNT_SRTP_ENABLED)];
+	QString & key_exchange = accountDetails[QString(ACCOUNT_KEY_EXCHANGE)];
+	QString & zrtp_display_sas = accountDetails[QString(ACCOUNT_ZRTP_DISPLAY_SAS)];
+	QString & zrtp_not_supp_warning = accountDetails[QString(ACCOUNT_ZRTP_NOT_SUPP_WARNING)];
+	QString & zrtp_hello_hash = accountDetails[QString(ACCOUNT_ZRTP_HELLO_HASH)];
+	QString & display_sas_once = accountDetails[QString(ACCOUNT_DISPLAY_SAS_ONCE)];
+
+	//  interface paramters 
+	QString & locale_interface = accountDetails[QString(LOCAL_INTERFACE)];
+	QString & published_address = accountDetails[QString(PUBLISHED_ADDRESS)];
+
+	bool is_using_sflphone_org = field(FIELD_SFL_ACCOUNT).toBool();
+	bool is_using_sip = false;
+	bool is_create_account = false;
+
+	// sflphone.org
+	if(is_using_sflphone_org)
 	{
 		QString emailAddress = field(FIELD_EMAIL_ADDRESS).toString();
 		char charEmailAddress[1024];
 		strncpy(charEmailAddress, emailAddress.toLatin1(), sizeof(charEmailAddress) - 1);
-
 		rest_account acc = get_rest_account(SFL_ACCOUNT_HOST, charEmailAddress);
+
 		if(acc.success)
 		{
 			ret += i18n("This assistant is now finished.") + "\n";
-			alias = QString(acc.user) + "@" + SFL_ACCOUNT_HOST;
+			field(FIELD_SIP_ALIAS) = QString(acc.user) + "@" + SFL_ACCOUNT_HOST;
+			field(FIELD_SIP_VOICEMAIL) = QString();
+			field(FIELD_SIP_SERVER) = QString(SFL_ACCOUNT_HOST);
+			field(FIELD_SIP_PASSWORD) = QString(acc.passwd);
+			field(FIELD_SIP_USER) = QString(acc.user);
+
+			protocol = QString(ACCOUNT_TYPE_SIP);
 			server = QString(SFL_ACCOUNT_HOST);
-			user = QString(acc.user);
 			password = QString(acc.passwd);
-			mailbox = QString();
-			protocol = QString(ACCOUNT_TYPE_SIP);
-			createAccount = true;
-			sip = true;
+			user = QString(acc.user);
+			enabled = QString(ACCOUNT_ENABLED_TRUE);
+
+			is_create_account = true;
+			is_using_sip = true;
 		}
 		else
 		{
 			ret += i18n("Creation of account has failed for the reason") + " :\n";
 			ret += acc.reason;
 		}
+	}	
+	else if(field(FIELD_SIP_ACCOUNT).toBool()) //sip
+	{
+		ret += i18n("This assistant is now finished.") + "\n";			       
+		
+		alias = field(FIELD_SIP_ALIAS).toString();
+		enabled = QString(ACCOUNT_ENABLED_TRUE);
+		mailbox = field(FIELD_SIP_VOICEMAIL).toString();
+		protocol = QString(ACCOUNT_TYPE_SIP);	      
+		server = field(FIELD_SIP_SERVER).toString();
+		password = field(FIELD_SIP_PASSWORD).toString();
+		user = field(FIELD_SIP_USER).toString();
+
+		is_create_account = true;
+		is_using_sip = true;
+
 	}
-	else
+	else // iax
 	{
 		ret += i18n("This assistant is now finished.") + "\n";
-		bool SIPAccount = field(FIELD_SIP_ACCOUNT).toBool();
-		if(SIPAccount)
+
+		alias = field(FIELD_IAX_ALIAS).toString();
+		enabled = QString(ACCOUNT_ENABLED_TRUE);
+		mailbox = field(FIELD_IAX_VOICEMAIL).toString();
+		protocol = QString(ACCOUNT_TYPE_IAX);
+		server = field(FIELD_IAX_SERVER).toString();
+		password = field(FIELD_IAX_PASSWORD).toString();
+		user = field(FIELD_IAX_USER).toString();
+
+		is_create_account = true;
+		is_using_sip = false;
+	}
+
+
+	// common sip paramaters
+	if(is_using_sip)
+	{
+		if(field(FIELD_SIP_ENABLE_STUN).toBool())
 		{
-			alias = field(FIELD_SIP_ALIAS).toString();
-			server = field(FIELD_SIP_SERVER).toString();
-			user = field(FIELD_SIP_USER).toString();
-			password = field(FIELD_SIP_PASSWORD).toString();
-			mailbox = field(FIELD_SIP_VOICEMAIL).toString();
-			protocol = QString(ACCOUNT_TYPE_SIP);
-			sip = true;
-			
+			stun_enabled = QString(ACCOUNT_ENABLED_TRUE);
+			stun_server = field(FIELD_SIP_STUN_SERVER).toString();
 		}
 		else
 		{
-			alias = field(FIELD_IAX_ALIAS).toString();
-			server = field(FIELD_IAX_SERVER).toString();
-			user = field(FIELD_IAX_USER).toString();
-			password = field(FIELD_IAX_PASSWORD).toString();
-			mailbox = field(FIELD_IAX_VOICEMAIL).toString();
-			protocol = QString(ACCOUNT_TYPE_IAX);
+			stun_enabled = QString(ACCOUNT_ENABLED_FALSE);
+			stun_server = QString();
 		}
-		createAccount = true;
-	}
-	if(createAccount)
-	{
-		enabled = ACCOUNT_ENABLED_TRUE;
-		resolveOnce = "FALSE";
-		regExpire = QString::number(ACCOUNT_EXPIRE_DEFAULT);
-		ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
-		QString accountId = configurationManager.addAccount(accountDetails);
-		//configurationManager.sendRegister(accountId, 1);
-		if(sip)
+		
+		if(field(FIELD_ZRTP_ENABLED).toBool())
 		{
-			bool enableStun = field(FIELD_ENABLE_STUN).toBool();
-			QString stunServer = field(FIELD_STUN_SERVER).toString();
-			if(enableStun != configurationManager.isStunEnabled()) configurationManager.enableStun();
-			if(enableStun) configurationManager.setStunServer(stunServer);
+			srtp_enabled = QString(ACCOUNT_ENABLED_TRUE);
+			key_exchange = QString(ZRTP);
+			zrtp_display_sas = QString(ACCOUNT_ENABLED_TRUE);
+			zrtp_not_supp_warning = QString(ACCOUNT_ENABLED_TRUE);
+			zrtp_hello_hash = QString(ACCOUNT_ENABLED_TRUE);
+			display_sas_once = QString(ACCOUNT_ENABLED_FALSE);
 		}
+
+		QStringList ifaceList = configurationManager.getAllIpInterface();
+
+		locale_interface = ifaceList.at(0);
+		published_address = ifaceList.at(0);		       
+
 		ret += i18n("Alias") + " : " + alias + "\n";
 		ret += i18n("Server") + " : " + server + "\n";
 		ret += i18n("Username") + " : " + user + "\n";
@@ -265,6 +314,11 @@ void AccountWizard::accept()
 		ret += i18n("Protocol") + " : " + protocol + "\n";
 		ret += i18n("Voicemail number") + " : " + mailbox + "\n";
 	}
+	
+	if(is_create_account)
+	{
+		QString accountId = configurationManager.addAccount(accountDetails);
+	}
 	qDebug() << ret;
 	QDialog::accept();
 	restart();
@@ -403,12 +457,19 @@ WizardAccountEmailAddressPage::WizardAccountEmailAddressPage(QWidget *parent)
 
 	label_emailAddress = new QLabel(i18n("Email address"));
 	lineEdit_emailAddress = new QLineEdit();
+	label_enableZrtp = new QLabel(i18n("Secure with ZRTP"));
+	checkBox_enableZrtp = new QCheckBox();
 	
 	registerField(FIELD_EMAIL_ADDRESS, lineEdit_emailAddress);
+	registerField(FIELD_ZRTP_ENABLED, checkBox_enableZrtp);
 
 	QFormLayout *layout = new QFormLayout;
+
 	layout->setWidget(0, QFormLayout::LabelRole, label_emailAddress);
 	layout->setWidget(0, QFormLayout::FieldRole, lineEdit_emailAddress);
+	layout->setWidget(1, QFormLayout::LabelRole, label_enableZrtp);
+	layout->setWidget(1, QFormLayout::FieldRole, checkBox_enableZrtp);
+
 	setLayout(layout);
 }
  
@@ -417,6 +478,8 @@ WizardAccountEmailAddressPage::~WizardAccountEmailAddressPage()
 {
 	delete label_emailAddress;
 	delete lineEdit_emailAddress;
+	delete label_enableZrtp;
+	delete checkBox_enableZrtp;
 }
 
 int WizardAccountEmailAddressPage::nextId() const
@@ -429,18 +492,10 @@ int WizardAccountEmailAddressPage::nextId() const
  *   Page of account settings.                                             *
  ***************************************************************************/
 
-WizardAccountFormPage::WizardAccountFormPage(int type, QWidget *parent)
+WizardAccountSIPFormPage::WizardAccountSIPFormPage(QWidget *parent)
      : QWizardPage(parent)
 {
-	this->type = type;
-	if(type == SIP)
-	{
-		setTitle(i18n("SIP account settings"));
-	}
-	else
-	{
-		setTitle(i18n("IAX2 account settings"));
-	}
+	setTitle(i18n("SIP account settings"));
 	setSubTitle(i18n("Please fill the following information"));
 
 	label_alias = new QLabel(i18n("Alias") + " *");
@@ -448,74 +503,130 @@ WizardAccountFormPage::WizardAccountFormPage(int type, QWidget *parent)
 	label_user = new QLabel(i18n("Username") + " *");
 	label_password = new QLabel(i18n("Password") + " *");
 	label_voicemail = new QLabel(i18n("Voicemail number"));
-	
+	label_enableZrtp = new QLabel(i18n("Secure with ZRTP"));
+
 	lineEdit_alias = new QLineEdit;
 	lineEdit_server = new QLineEdit;
 	lineEdit_user = new QLineEdit;
 	lineEdit_password = new QLineEdit;
 	lineEdit_voicemail = new QLineEdit;
+	checkBox_enableZrtp = new QCheckBox;
 
 	lineEdit_password->setEchoMode(QLineEdit::Password);
 	
-	if(type == SIP)
-	{
-		registerField(QString(FIELD_SIP_ALIAS) + "*", lineEdit_alias);
-		registerField(QString(FIELD_SIP_SERVER) + "*", lineEdit_server);
-		registerField(QString(FIELD_SIP_USER) + "*", lineEdit_user);
-		registerField(QString(FIELD_SIP_PASSWORD) + "*", lineEdit_password);
-		registerField(QString(FIELD_SIP_VOICEMAIL), lineEdit_voicemail);
-	}
-	else
-	{
-		registerField(QString(FIELD_IAX_ALIAS) + "*", lineEdit_alias);
-		registerField(QString(FIELD_IAX_SERVER) + "*", lineEdit_server);
-		registerField(QString(FIELD_IAX_USER) + "*", lineEdit_user);
-		registerField(QString(FIELD_IAX_PASSWORD) + "*", lineEdit_password);
-		registerField(QString(FIELD_IAX_VOICEMAIL), lineEdit_voicemail);
-	}
+	registerField(QString(FIELD_SIP_ALIAS) + "*", lineEdit_alias);
+	registerField(QString(FIELD_SIP_SERVER) + "*", lineEdit_server);
+	registerField(QString(FIELD_SIP_USER) + "*", lineEdit_user);
+	registerField(QString(FIELD_SIP_PASSWORD) + "*", lineEdit_password);
+	registerField(QString(FIELD_SIP_VOICEMAIL), lineEdit_voicemail);
+	registerField(QString(FIELD_ZRTP_ENABLED), checkBox_enableZrtp);
 	
 	QFormLayout *layout = new QFormLayout;
 	
 	
 	layout->setWidget(0, QFormLayout::LabelRole, label_alias);
 	layout->setWidget(0, QFormLayout::FieldRole, lineEdit_alias);
-   layout->setWidget(1, QFormLayout::LabelRole, label_server);
+	layout->setWidget(1, QFormLayout::LabelRole, label_server);
 	layout->setWidget(1, QFormLayout::FieldRole, lineEdit_server);
-   layout->setWidget(2, QFormLayout::LabelRole, label_user);
+	layout->setWidget(2, QFormLayout::LabelRole, label_user);
 	layout->setWidget(2, QFormLayout::FieldRole, lineEdit_user);
-   layout->setWidget(3, QFormLayout::LabelRole, label_password);
+	layout->setWidget(3, QFormLayout::LabelRole, label_password);
 	layout->setWidget(3, QFormLayout::FieldRole, lineEdit_password);
-   layout->setWidget(4, QFormLayout::LabelRole, label_voicemail);
+	layout->setWidget(4, QFormLayout::LabelRole, label_voicemail);
 	layout->setWidget(4, QFormLayout::FieldRole, lineEdit_voicemail);
+	layout->setWidget(5, QFormLayout::LabelRole, label_enableZrtp);
+	layout->setWidget(5, QFormLayout::FieldRole, checkBox_enableZrtp);
 	
 	setLayout(layout);
 }
  
  
-WizardAccountFormPage::~WizardAccountFormPage()
+WizardAccountSIPFormPage::~WizardAccountSIPFormPage()
 {
 	delete label_alias;
 	delete label_server;
 	delete label_user;
 	delete label_password;
 	delete label_voicemail;
+	delete label_enableZrtp;
 	delete lineEdit_alias;
 	delete lineEdit_server;
 	delete lineEdit_user;
 	delete lineEdit_password;
 	delete lineEdit_voicemail;
+	delete checkBox_enableZrtp;
 }
 
-int WizardAccountFormPage::nextId() const
+int WizardAccountSIPFormPage::nextId() const
 {
-	if(type == SIP)
-	{
-		return AccountWizard::Page_Stun;
-	}
-	else
-	{
-		return AccountWizard::Page_Conclusion;
-	}
+	return AccountWizard::Page_Stun;
+}
+
+/***************************************************************************
+ *   Class WizardAccountFormPage                                           *
+ *   Page of account settings.                                             *
+ ***************************************************************************/
+
+WizardAccountIAXFormPage::WizardAccountIAXFormPage(QWidget *parent)
+     : QWizardPage(parent)
+{
+	setTitle(i18n("IAX2 account settings"));
+	setSubTitle(i18n("Please fill the following information"));
+
+	label_alias = new QLabel(i18n("Alias") + " *");
+	label_server = new QLabel(i18n("Server") + " *");
+	label_user = new QLabel(i18n("Username") + " *");
+	label_password = new QLabel(i18n("Password") + " *");
+	label_voicemail = new QLabel(i18n("Voicemail number"));
+	
+	lineEdit_alias = new QLineEdit;
+	lineEdit_server = new QLineEdit;
+	lineEdit_user = new QLineEdit;
+	lineEdit_password = new QLineEdit;
+	lineEdit_voicemail = new QLineEdit;
+
+	lineEdit_password->setEchoMode(QLineEdit::Password);
+	
+	registerField(QString(FIELD_IAX_ALIAS) + "*", lineEdit_alias);
+	registerField(QString(FIELD_IAX_SERVER) + "*", lineEdit_server);
+	registerField(QString(FIELD_IAX_USER) + "*", lineEdit_user);
+	registerField(QString(FIELD_IAX_PASSWORD) + "*", lineEdit_password);
+	registerField(QString(FIELD_IAX_VOICEMAIL), lineEdit_voicemail);
+	
+	QFormLayout *layout = new QFormLayout;
+	
+	layout->setWidget(0, QFormLayout::LabelRole, label_alias);
+	layout->setWidget(0, QFormLayout::FieldRole, lineEdit_alias);
+	layout->setWidget(1, QFormLayout::LabelRole, label_server);
+	layout->setWidget(1, QFormLayout::FieldRole, lineEdit_server);
+	layout->setWidget(2, QFormLayout::LabelRole, label_user);
+	layout->setWidget(2, QFormLayout::FieldRole, lineEdit_user);
+	layout->setWidget(3, QFormLayout::LabelRole, label_password);
+	layout->setWidget(3, QFormLayout::FieldRole, lineEdit_password);
+	layout->setWidget(4, QFormLayout::LabelRole, label_voicemail);
+	layout->setWidget(4, QFormLayout::FieldRole, lineEdit_voicemail);
+	
+	setLayout(layout);
+}
+ 
+ 
+WizardAccountIAXFormPage::~WizardAccountIAXFormPage()
+{
+	delete label_alias;
+	delete label_server;
+	delete label_user;
+	delete label_password;
+	delete label_voicemail;
+	delete lineEdit_alias;
+	delete lineEdit_server;
+	delete lineEdit_user;
+	delete lineEdit_password;
+	delete lineEdit_voicemail;
+}
+
+int WizardAccountIAXFormPage::nextId() const
+{
+	return AccountWizard::Page_Conclusion;
 }
 
 /***************************************************************************
@@ -533,8 +644,8 @@ WizardAccountStunPage::WizardAccountStunPage(QWidget *parent)
 	label_StunServer = new QLabel(i18n("Stun Server"));
 	lineEdit_StunServer = new QLineEdit();
 	
-	registerField(FIELD_ENABLE_STUN, checkBox_enableStun);
-	registerField(FIELD_STUN_SERVER, lineEdit_StunServer);
+	registerField(FIELD_SIP_ENABLE_STUN, checkBox_enableStun);
+	registerField(FIELD_SIP_STUN_SERVER, lineEdit_StunServer);
 
 	QFormLayout *layout = new QFormLayout;
 	layout->addWidget(checkBox_enableStun);
diff --git a/sflphone-client-kde/src/AccountWizard.h b/sflphone-client-kde/src/AccountWizard.h
index e0791ada5ce78cd677793f16ab6f285ce136b068..f01c5170ccf0590190a540b2ea4ca7d53558ba9f 100644
--- a/sflphone-client-kde/src/AccountWizard.h
+++ b/sflphone-client-kde/src/AccountWizard.h
@@ -119,21 +119,23 @@ public:
 private:
 	QLabel * label_emailAddress;
 	QLineEdit * lineEdit_emailAddress;
+	QLabel * label_enableZrtp;
+	QCheckBox * checkBox_enableZrtp;
 };
 
 /***************************************************************************
- *   Class WizardAccountFormPage                                           *
+ *   Class WizardAccountSIPFormPage                                        *
  *   Page of account settings.                                             *
  ***************************************************************************/
 
-class WizardAccountFormPage : public QWizardPage
+class WizardAccountSIPFormPage : public QWizardPage
 {
 	Q_OBJECT
 
 public:
 	
-	WizardAccountFormPage(int type, QWidget *parent = 0);
-	~WizardAccountFormPage();
+	WizardAccountSIPFormPage(QWidget *parent = 0);
+	~WizardAccountSIPFormPage();
 	int nextId() const;
 
 private:
@@ -144,7 +146,40 @@ private:
 	QLabel * label_user;
 	QLabel * label_password;
 	QLabel * label_voicemail;
+	QLabel * label_enableZrtp;
+
+	QLineEdit * lineEdit_alias;
+	QLineEdit * lineEdit_server;
+	QLineEdit * lineEdit_user;
+	QLineEdit * lineEdit_password;
+	QLineEdit * lineEdit_voicemail;
+	QCheckBox * checkBox_enableZrtp;
+};
+
+/***************************************************************************
+ *   Class WizardAccountIAXFormPage                                        *
+ *   Page of account settings.                                             *
+ ***************************************************************************/
+
+class WizardAccountIAXFormPage : public QWizardPage
+{
+	Q_OBJECT
+
+public:
 	
+	WizardAccountIAXFormPage(QWidget *parent = 0);
+	~WizardAccountIAXFormPage();
+	int nextId() const;
+
+private:
+	int type;
+
+	QLabel * label_alias;
+	QLabel * label_server;
+	QLabel * label_user;
+	QLabel * label_password;
+	QLabel * label_voicemail;
+
 	QLineEdit * lineEdit_alias;
 	QLineEdit * lineEdit_server;
 	QLineEdit * lineEdit_user;
diff --git a/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp b/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp
index d6e8fe9b505f762fdf0e812506e3fac3cfc00e03..c1c983d72ca381b37c0fe2badcd4f355109fe2b8 100644
--- a/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp
+++ b/sflphone-client-kde/src/conf/ConfigurationSkeleton.cpp
@@ -63,9 +63,6 @@ void ConfigurationSkeleton::readConfig()
 	//Call history settings
         setEnableHistory(QVariant(configurationManager.getHistoryEnabled()).toBool());
 	setHistoryMax(configurationManager.getHistoryLimit());
-
-	//SIP port settings
-	setSIPPort(configurationManager.getSipPort());
  	
 	////////////////////////
 	////Display settings////
@@ -85,11 +82,6 @@ void ConfigurationSkeleton::readConfig()
 	
 // 	loadAccountList();
 
-
-	//Stun settings
-	setEnableStun(configurationManager.isStunEnabled());
-	setStunServer(configurationManager.getStunServer());
-
 	
 	//////////////////////
 	////Audio settings////
@@ -127,11 +119,7 @@ void ConfigurationSkeleton::readConfig()
 	qDebug() << "outputDevice = " << devices[0];
 	int outputDevice = devices[0].toInt(& ok);
 	if(!ok) qDebug() << "outputDevice is not a number";
-	setAlsaOutputDevice(outputDevice);
-	
-	
-	//pulseaudio settings
-	setPulseAudioVolumeAlter(configurationManager.getPulseAppVolumeControl());
+	setAlsaOutputDevice(outputDevice);	       
 	
 	///////////////////////
 	////Record settings////
@@ -195,8 +183,6 @@ void ConfigurationSkeleton::writeConfig()
             configurationManager.setHistoryEnabled();
         }
 	configurationManager.setHistoryLimit(historyMax());
-	//SIP port settings
-	configurationManager.setSipPort(sIPPort());
 
 
 	////////////////////////
@@ -222,11 +208,6 @@ void ConfigurationSkeleton::writeConfig()
 	
 // 	saveAccountList();
 
-
-	//Stun settings
-	if(enableStun() != configurationManager.isStunEnabled()) configurationManager.enableStun();
-	configurationManager.setStunServer(stunServer());
-
 	//////////////////////
 	////Audio settings////
 	//////////////////////
@@ -258,12 +239,6 @@ void ConfigurationSkeleton::writeConfig()
 		configurationManager.setAudioInputDevice(alsaInputDevice());
 		configurationManager.setAudioOutputDevice(alsaOutputDevice());
 	}
-	//pulseaudio settings
-	if(newManager == EnumInterface::PulseAudio)
-	{
-		qDebug() << "setting pulseaudio settings";
-		if(pulseAudioVolumeAlter() != configurationManager.getPulseAppVolumeControl()) configurationManager.setPulseAppVolumeControl();
-	}
 	
 	
 	///////////////////////
diff --git a/sflphone-client-kde/src/dbus/callmanager-introspec.xml b/sflphone-client-kde/src/dbus/callmanager-introspec.xml
index e9130e9a91a8d7bf17f3dc43180f33d1e11438e4..e4dcb0bdf4a0c8e28782da651451c4160c678fcc 100644
--- a/sflphone-client-kde/src/dbus/callmanager-introspec.xml
+++ b/sflphone-client-kde/src/dbus/callmanager-introspec.xml
@@ -1,129 +1,243 @@
 <?xml version="1.0" ?>
 <node name="/org/sflphone/SFLphone">
-	<interface name="org.sflphone.SFLphone.CallManager">
-		
-		<method name="placeCall">
-			<arg type="s" name="accountID" direction="in"/>
-			<arg type="s" name="callID" direction="in"/>
-			<arg type="s" name="to" direction="in"/>
-		</method>
-		
-		<method name="refuse">
-			<arg type="s" name="callID" direction="in"/>
-		</method>
-		
-		<method name="accept">
-			<arg type="s" name="callID" direction="in"/>
-		</method>
-		
-		<method name="hangUp">
-			<arg type="s" name="callID" direction="in"/>
-		</method>
-		
-		<method name="hold">
-			<arg type="s" name="callID" direction="in"/>
-		</method>
-		
-		<method name="unhold">
-			<arg type="s" name="callID" direction="in"/>
-		</method>
-		
-		<method name="transfert">
-			<arg type="s" name="callID" direction="in"/>
-			<arg type="s" name="to" direction="in"/>
-		</method>
-		
-		<method name="playDTMF">
-			<arg type="s" name="key" direction="in"/>
-		</method>
-		
-		<method name="startTone">
-			<arg type="i" name="start" direction="in"/>
-			<arg type="i" name="type" direction="in"/>
-		</method>
-		
-		<method name="setVolume">
-			<arg type="s" name="device" direction="in"/>
-			<arg type="d" name="value" direction="in"/>
-		</method>
-		
-		<method name="getVolume">
-			<arg type="s" name="device" direction="in"/>
-			<arg type="d" name="value" direction="out"/>
-		</method>
-		
-		<method name="setRecording">
-			<arg type="s" name="callID" direction="in"/>
-		</method>
-		
-		<method name="getIsRecording">
-			<arg type="s" name="callID" direction="in"/>
-			<arg type="b" name="isRecording" direction="out"/>
-		</method>
-		
-		<method name="getCallDetails">
-			<arg type="s" name="callID" direction="in"/>
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
-			<arg type="a{ss}" name="infos" direction="out"/>
-		</method>
-		
-		<method name="getCallList">
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="getCurrentCallID">
-			<arg type="s" name="callID" direction="out"/>
-		</method>
-		
-		<method name="getCurrentCodecName">
-			<arg type="s" name="callID" direction="in"/>
-			<arg type="s" name="codecName" direction="out"/>
-		</method>
-		
-		<signal name="currentSelectedCodec">
-			<arg type="s" name="callID"  direction="out" />
-			<arg type="s" name="codecName"  direction="out"/>
-		</signal>
-		
-		<signal name="incomingCall">
-			<arg type="s" name="accountID" />
-			<arg type="s" name="callID" />
-			<arg type="s" name="from" />
-		</signal>
-		
-		<signal name="incomingMessage">
-			<arg type="s" name="accountID"  direction="out" />
-			<arg type="s" name="message"  direction="out"/>
-		</signal>
-		
-		<signal name="callStateChanged">
-			<arg type="s" name="callID"  direction="out"/>
-			<arg type="s" name="state"  direction="out"/>
-		</signal>
-		
-		<signal name="voiceMailNotify">
-			<arg type="s" name="accountID"  direction="out"/>
-			<arg type="i" name="count"  direction="out"/>
-		</signal>
-		
-		<signal name="volumeChanged">
-			<arg type="s" name="device"  direction="out"/>
-			<arg type="d" name="value"  direction="out"/>
-		</signal>
-		
-		<signal name="transferSucceded">
-		</signal>
-		
-		<signal name="transferFailed">
-		</signal>
-		
-		<!--
-			 <signal name="error">
-				 <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
-				 <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
-				 <arg type="a{ss}" name="details"  direction="out"/>
-			 </signal>
-			 -->
-			 
-		 </interface>
-	 </node>
+  <interface name="org.sflphone.SFLphone.CallManager">
+    
+    <method name="placeCall">
+      <arg type="s" name="accountID" direction="in"/>
+      <arg type="s" name="callID" direction="in"/>
+      <arg type="s" name="to" direction="in"/>
+    </method>
+		
+    <method name="refuse">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+		
+    <method name="accept">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+		
+    <method name="hangUp">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+
+    <method name="hangUpConference">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+		
+    <method name="hold">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+		
+    <method name="unhold">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+		
+    <method name="transfert">
+      <arg type="s" name="callID" direction="in"/>
+      <arg type="s" name="to" direction="in"/>
+    </method>
+		
+    <method name="playDTMF">
+      <arg type="s" name="key" direction="in"/>
+    </method>
+		
+    <method name="startTone">
+      <arg type="i" name="start" direction="in"/>
+      <arg type="i" name="type" direction="in"/>
+    </method>
+		
+    <method name="setVolume">
+      <arg type="s" name="device" direction="in"/>
+      <arg type="d" name="value" direction="in"/>
+    </method>
+		
+    <method name="getVolume">
+      <arg type="s" name="device" direction="in"/>
+      <arg type="d" name="value" direction="out"/>
+    </method>
+
+        <method name="joinParticipant">
+      <arg type="s" name="sel_callID" direction="in"/>
+      <arg type="s" name="drag_callID" direction="in"/>
+    </method>
+
+    <method name="addParticipant">
+      <arg type="s" name="callID" direction="in"/>
+      <arg type="s" name="confID" direction="in"/>
+    </method>
+
+    <method name="addMainParticipant">
+      <arg type="s" name="confID" direction="in"/>
+    </method>
+
+    <method name="detachParticipant">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+
+    <method name="joinConference">
+      <arg type="s" name="sel_confID" direction="in"/>
+      <arg type="s" name="drag_confID" direction="in"/>
+    </method>
+
+    <method name="getConferenceDetails">
+      <arg type="s" name="callID" direction="in"/>
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="a{ss}" name="infos" direction="out"/>
+    </method>
+    
+    <method name="getConferenceList">
+        <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="setRecording">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+		
+    <method name="getIsRecording">
+      <arg type="s" name="callID" direction="in"/>
+      <arg type="b" name="isRecording" direction="out"/>
+    </method>
+    		
+    <method name="getCallDetails">
+      <arg type="s" name="callID" direction="in"/>
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="a{ss}" name="infos" direction="out"/>
+    </method>
+		
+    <method name="getCallList">
+      <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="getCurrentCallID">
+      <arg type="s" name="callID" direction="out"/>
+    </method>
+		
+    <method name="getCurrentCodecName">
+      <arg type="s" name="callID" direction="in"/>
+      <arg type="s" name="codecName" direction="out"/>
+    </method>
+		
+    <signal name="currentSelectedCodec">
+      <arg type="s" name="callID"  direction="out" />
+      <arg type="s" name="codecName"  direction="out"/>
+    </signal>
+    
+    <signal name="incomingCall">
+      <arg type="s" name="accountID" />
+      <arg type="s" name="callID" />
+      <arg type="s" name="from" />
+    </signal>
+		
+    <signal name="incomingMessage">
+      <arg type="s" name="accountID"  direction="out" />
+      <arg type="s" name="message"  direction="out"/>
+    </signal>
+		
+    <signal name="callStateChanged">
+      <arg type="s" name="callID"  direction="out"/>
+      <arg type="s" name="state"  direction="out"/>
+    </signal>
+		
+        <signal name="conferenceChanged">
+      <arg type="s" name="confID"  direction="out"/>
+      <arg type="s" name="state"  direction="out"/>
+    </signal>
+
+    <method name="getParticipantList">
+      <arg type="s" name="confID" direction="in"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+
+    <signal name="conferenceCreated">
+      <arg type="s" name="confID"  direction="out"/>
+    </signal>
+
+    <signal name="conferenceRemoved">
+      <arg type="s" name="confID"  direction="out"/>
+    </signal>
+
+    <method name="holdConference">
+      <arg type="s" name="confID" direction="in"/>
+    </method>
+
+    <method name="unholdConference">
+      <arg type="s" name="confID" direction="in"/>
+    </method>
+
+    <signal name="sipCallStateChanged">
+      <arg type="s" name="callID"  direction="out"/>
+      <arg type="s" name="state"  direction="out"/>
+      <arg type="i" name="code"  direction="out"/>            
+    </signal>
+
+    <signal name="voiceMailNotify">
+      <arg type="s" name="accountID"  direction="out"/>
+      <arg type="i" name="count"  direction="out"/>
+    </signal>
+		
+    <signal name="volumeChanged">
+      <arg type="s" name="device"  direction="out"/>
+      <arg type="d" name="value"  direction="out"/>
+    </signal>
+		
+    <signal name="transferSucceded">
+    </signal>
+		
+    <signal name="transferFailed">
+    </signal>
+
+        <!-- SRTP related methods and signals -->
+    <method name="setSASVerified">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+    
+    <method name="resetSASVerified">
+      <arg type="s" name="callID" direction="in"/>
+    </method>
+        
+    <method name="setConfirmGoClear">
+        <arg type="s" name="callID" direction="in"/>
+    </method>
+    
+    <method name="requestGoClear">
+        <arg type="s" name="callID" direction="in"/>
+    </method>
+    
+    <signal name="secureOn">
+      <arg type="s" name="callID"  direction="out" />
+      <arg type="s" name="cipher"  direction="out" />
+    </signal>
+    
+    <signal name="secureOff">
+      <arg type="s" name="callID"  direction="out" />
+    </signal>
+    
+    <signal name="showSAS">
+      <arg type="s" name="callID"  direction="out" />
+      <arg type="s" name="sas"  direction="out" />
+      <arg type="b" name="verified"  direction="out" />
+    </signal>
+    
+    <signal name="zrtpNotSuppOther">
+      <arg type="s" name="callID"  direction="out" />
+    </signal>
+
+    <signal name="zrtpNegotiationFailed">
+      <arg type="s" name="callID"  direction="out" />
+      <arg type="s" name="reason"  direction="out" />
+      <arg type="s" name="severity"  direction="out" />
+    </signal>
+     
+     <signal name="confirmGoClear">
+      <arg type="s" name="callID"  direction="out" />
+    </signal>
+
+<!--
+    <signal name="error">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="a{ss}" name="details"  direction="out"/>
+    </signal>
+    
+  </interface>
+</node>
diff --git a/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml b/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml
index d0bd440ab3a8b67cb94cfbadc0fd6a2c4305de6a..8e966c933bac20ae18639f159e4942126cf8c526 100644
--- a/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml
+++ b/sflphone-client-kde/src/dbus/configurationmanager-introspec.xml
@@ -1,336 +1,390 @@
 <?xml version="1.0" ?>
 <node name="/org/sflphone/SFLphone">
-	<interface name="org.sflphone.SFLphone.ConfigurationManager">
-		
-		<!-- Accounts-related methods -->  
-		<method name="getAccountDetails">
-			<arg type="s" name="accountID" direction="in"/>
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
-			<arg type="a{ss}" name="details" direction="out"/>
-		</method>
-		
-		<method name="setAccountDetails">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.In1" value="MapStringString"/>
-			<arg type="s" name="accountID" direction="in"/>
-			<arg type="a{ss}" name="details" direction="in"/>
-		</method>
-		
-		<method name="addAccount">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
-			<arg type="a{ss}" name="details" direction="in"/>
-			<arg type="s" name="createdAccountId" direction="out"/>
-		</method>
-		
-		<method name="setAccountsOrder">
-			<arg type="s" name="order" direction="in"/>
-		</method>
-		
-		<method name="removeAccount">
-			<arg type="s" name="accoundID" direction="in"/>
-		</method>
-		
-		<method name="getAccountList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="sendRegister">
-			<arg type="s" name="accountID" direction="in"/>
-			<arg type="i" name="expire" direction="in"/>
-		</method>
-		
-		<!--      ///////////////////////               -->
-		
-		<!-- Various audio-related methods   -->
-		
-		<method name="getToneLocaleList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="getVersion">
-			<arg type="s" name="version" direction="out"/>
-		</method>
-		
-		<method name="getRingtoneList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="getPlaybackDeviceList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="getRecordDeviceList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="isRingtoneEnabled">
-			<arg type="i" name="bool" direction="out"/>
-		</method>
-		
-		<method name="ringtoneEnabled">
-		</method>
-		
-		<method name="getRingtoneChoice">
-			<arg type="s" name="tone" direction="out"/>
-		</method>
-		
-		<method name="setRingtoneChoice">
-			<arg type="s" name="tone" direction="in"/>
-		</method>
-		
-		<method name="getAudioManager">
-			<arg type="i" name="api" direction="out"/>
-		</method>
-		
-		<method name="setAudioManager">
-			<arg type="i" name="api" direction="in"/>
-		</method>
-		
-		<method name="getRecordPath">
-			<arg type="s" name="rec" direction="out"/>
-		</method>
-		
-		<method name="setRecordPath">
-			<arg type="s" name="rec" direction="in"/>
-		</method>
-		
-		<!--      ///////////////////////               -->
-		
-		<!-- Codecs-related methods -->
-		
-		<method name="getCodecList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="getCodecDetails">
-			<arg type="i" name="payload" direction="in"/>
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="details" direction="out"/>
-		</method>
-		
-		<method name="getActiveCodecList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<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"/>
-		</method>
-		
-		
-		<!-- Audio devices methods -->
-		
-		<method name="getInputAudioPluginList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="getOutputAudioPluginList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="setInputAudioPlugin">
-			<arg type="s" name="audioPlugin" direction="in"/>
-		</method>
-		
-		<method name="setOutputAudioPlugin">
-			<arg type="s" name="audioPlugin" direction="in"/>
-		</method>
-		
-		<method name="getAudioOutputDeviceList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="setAudioOutputDevice">
-			<arg type="i" name="index" direction="in"/>
-		</method>
-		
-		<method name="getAudioInputDeviceList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="setAudioInputDevice">
-			<arg type="i" name="index" direction="in"/>
-		</method>
-		
-		<method name="getCurrentAudioDevicesIndex">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="list" direction="out"/>
-		</method>
-		
-		<method name="getAudioDeviceIndex">
-			<arg type="s" name="name" direction="in"/>
-			<arg type="i" name="index" direction="out"/>
-		</method>
-		
-		<method name="getCurrentAudioOutputPlugin">
-			<arg type="s" name="plugin" direction="out"/>
-		</method>
-		
-		<!--    General Settings Panel         -->
-		
-		<method name="isIax2Enabled">
-			<arg type="i" name="res" direction="out"/>
-		</method>
-		
-		<method name="setNotify">
-		</method>
-		
-		<method name="getNotify">
-			<arg type="i" name="level" direction="out"/>
-		</method>
-		
-		<method name="setMailNotify">
-		</method>
-		
-		<method name="getMailNotify">
-			<arg type="i" name="level" direction="out"/>
-		</method>
-		
-		<method name="getDialpad">
-			<arg type="i" name="state" direction="out"/>
-		</method>
-		
-		<method name="setDialpad">
-		  <arg type="b" name="display" direction="in"/>
-		</method>
-		
-		<method name="getSearchbar">
-			<arg type="i" name="state" direction="out"/>
-		</method>
-		
-		<method name="setSearchbar">
-		</method>
-		
-		<method name="setHistoryEnabled">
-		</method>
-		
-		<method name="getHistoryEnabled">
-                        <arg type="s" name="state" direction="out"/>
-		</method>
-		
-		<method name="getVolumeControls">
-			<arg type="i" name="state" direction="out"/>
-		</method>
-		
-		<method name="setVolumeControls">
-		  <arg type="b" name="display" direction="in"/>
-		</method>
-		
-		<method name="getHistoryLimit">
-			<arg type="i" name="days" direction="out"/>
-		</method>
-		
-		<method name="setHistoryLimit">
-			<arg type="i" name="days" direction="in"/>
-		</method>
-		
-		<method name="startHidden">
-		</method>
-		
-		<method name="isStartHidden">
-			<arg type="i" name="state" direction="out"/>
-		</method>
-		
-		<method name="popupMode">
-			<arg type="i" name="state" direction="out"/>
-		</method>
-		
-		<method name="switchPopupMode">
-		</method>
-		
-		<method name="setPulseAppVolumeControl">
-		</method>
-		
-		<method name="getPulseAppVolumeControl">
-			<arg type="i" name="state" direction="out"/>
-		</method>
-		
-		<method name="setSipPort">
-			<arg type="i" name="port" direction="in"/>
-		</method>
-		
-		<method name="getSipPort">
-			<arg type="i" name="port" direction="out"/>
-		</method>
-		
-		<method name="setStunServer">
-			<arg type="s" name="server" direction="in"/>
-		</method>
-		
-		<method name="getStunServer">
-			<arg type="s" name="server" direction="out"/>
-		</method>
-		
-		<method name="enableStun">
-		</method>
-		
-		<method name="isStunEnabled">
-			<arg type="i" name="state" direction="out"/>
-		</method>
-		
-		<!-- Addressbook configuration -->
-		<method name="getAddressbookSettings">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringInt"/>
-			<arg type="a{si}" name="settings" direction="out"/>
-		</method>
-		
-		<method name="setAddressbookSettings">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringInt"/>
-			<arg type="a{si}" name="settings" direction="in"/>
-		</method>
-		
-		<!-- Addressbook list -->
-		<method name="getAddressbookList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
-			<arg type="as" name="settings" direction="out"/>
-		</method>
-		
-		<method name="setAddressbookList">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="VectorString"/>
-			<arg type="as" name="settings" direction="in"/>
-		</method>
-		
-		<!-- Hook configuration -->
-		<method name="getHookSettings">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
-			<arg type="a{ss}" name="settings" direction="out"/>
-		</method>
-		
-		<method name="setHookSettings">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
-			<arg type="a{ss}" name="settings" direction="in"/>
-		</method>
-		
-		<method name="getHistory">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
-			<arg type="a{ss}" name="entries" direction="out"/>
-		</method>
-		
-		<method name="setHistory">
-			<annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
-			<arg type="a{ss}" name="entries" direction="in"/>
-		</method>
-		
-		
-		<signal name="accountsChanged">
-		</signal>
+  <interface name="org.sflphone.SFLphone.ConfigurationManager">
+    
+    <!-- Accounts-related methods -->  
+    <method name="getAccountDetails">
+      <arg type="s" name="accountID" direction="in"/>
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="a{ss}" name="details" direction="out"/>
+    </method>
+		
+    <method name="setAccountDetails">
+      <arg type="s" name="accountID" direction="in"/>
+      <annotation name="com.trolltech.QtDBus.QtTypeName.In1" value="MapStringString"/>
+      <arg type="a{ss}" name="details" direction="in"/>
+    </method>
+
+    <method name="setCredential">
+      <arg type="s" name="accountID" direction="in"/>
+      <arg type="i" name="index" direction="in"/>
+      <annotation name="com.trolltech.QtDBus.QtTypeName.In2" value="MapStringString"/>
+      <arg type="a{ss}" name="credentialInformation" direction="in"/>
+    </method>
+
+    <method name="setNumberOfCredential">
+      <arg type="s" name="accountID" direction="in"/>
+      <arg type="i" name="number" direction="in"/>
+    </method>
+       
+     <method name="deleteAllCredential">
+      <arg type="s" name="accountID" direction="in"/>
+    </method>
+  
+    <method name="getIp2IpDetails">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="a{ss}" name="details" direction="out"/>
+    </method>
+    
+    <method name="setIp2IpDetails">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
+      <arg type="a{ss}" name="details" direction="in"/>
+    </method>
+      
+    <method name="getCredential">
+      <arg type="s" name="accountID" direction="in"/>
+      <arg type="i" name="index" direction="in"/>
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="a{ss}" name="credentialInformation" direction="out"/>
+    </method>
+    
+    <method name="getNumberOfCredential">
+      <arg type="s" name="accountID" direction="in"/>
+      <arg type="i" name="numberOfCredential" direction="out"/>
+    </method>
+		
+    <method name="addAccount">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
+      <arg type="a{ss}" name="details" direction="in"/>
+      <arg type="s" name="createdAccountId" direction="out"/>
+    </method>
+		
+    <method name="setAccountsOrder">
+      <arg type="s" name="order" direction="in"/>
+    </method>
+    
+    <method name="removeAccount">
+      <arg type="s" name="accoundID" direction="in"/>
+    </method>
+    
+    <method name="getAccountList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="sendRegister">
+      <arg type="s" name="accountID" direction="in"/>
+      <arg type="i" name="expire" direction="in"/>
+    </method>
+		
+    <!--      ///////////////////////               -->
+    
+    <!-- Various audio-related methods   -->
+		
+    <method name="getToneLocaleList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+    
+    <method name="getVersion">
+      <arg type="s" name="version" direction="out"/>
+    </method>
+		
+    <method name="getRingtoneList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="getPlaybackDeviceList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="getRecordDeviceList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="isRingtoneEnabled">
+      <arg type="i" name="bool" direction="out"/>
+    </method>
+		
+    <method name="ringtoneEnabled">
+    </method>
+		
+    <method name="getRingtoneChoice">
+      <arg type="s" name="tone" direction="out"/>
+    </method>
+		
+    <method name="setRingtoneChoice">
+      <arg type="s" name="tone" direction="in"/>
+    </method>
+		
+    <method name="getAudioManager">
+      <arg type="i" name="api" direction="out"/>
+    </method>
+		
+    <method name="setAudioManager">
+      <arg type="i" name="api" direction="in"/>
+    </method>
+		
+    <method name="getRecordPath">
+      <arg type="s" name="rec" direction="out"/>
+    </method>
+		
+    <method name="setRecordPath">
+      <arg type="s" name="rec" direction="in"/>
+    </method>
+		
+    <!--      ///////////////////////               -->
+    
+    <!-- Codecs-related methods -->
+		
+    <method name="getCodecList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="getCodecDetails">
+      <arg type="i" name="payload" direction="in"/>
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="details" direction="out"/>
+    </method>
+		
+    <method name="getActiveCodecList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <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"/>
+    </method>
+		
+		
+    <!-- Audio devices methods -->
+		
+    <method name="getInputAudioPluginList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="getOutputAudioPluginList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="setInputAudioPlugin">
+      <arg type="s" name="audioPlugin" direction="in"/>
+    </method>
+    
+    <method name="setOutputAudioPlugin">
+      <arg type="s" name="audioPlugin" direction="in"/>
+    </method>
+    
+    <method name="getAudioOutputDeviceList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+    
+    <method name="setAudioOutputDevice">
+      <arg type="i" name="index" direction="in"/>
+    </method>
+    
+    <method name="getAudioInputDeviceList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+    
+    <method name="setAudioInputDevice">
+      <arg type="i" name="index" direction="in"/>
+    </method>
+    
+    <method name="getCurrentAudioDevicesIndex">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+		
+    <method name="getAudioDeviceIndex">
+      <arg type="s" name="name" direction="in"/>
+      <arg type="i" name="index" direction="out"/>
+    </method>
+		
+    <method name="getCurrentAudioOutputPlugin">
+      <arg type="s" name="plugin" direction="out"/>
+    </method>
+		
+    <!--    General Settings Panel         -->
+    
+    <method name="isMd5CredentialHashing">
+      <arg type="b" name="res" direction="out"/>
+    </method>
+
+    <method name="setMd5CredentialHashing">
+      <arg type="b" name="enabled" direction="in"/>
+    </method>
+
+    <method name="isIax2Enabled">
+      <arg type="i" name="res" direction="out"/>
+    </method>
+		
+    <method name="setNotify">
+    </method>
+    
+    <method name="getNotify">
+      <arg type="i" name="level" direction="out"/>
+    </method>
+		
+    <method name="setMailNotify">
+    </method>
+		
+    <method name="getMailNotify">
+      <arg type="i" name="level" direction="out"/>
+    </method>
+		
+    <method name="getDialpad">
+      <arg type="i" name="state" direction="out"/>
+    </method>
+		
+    <method name="setDialpad">
+      <arg type="b" name="display" direction="in"/>
+    </method>
+		
+    <method name="getSearchbar">
+      <arg type="i" name="state" direction="out"/>
+    </method>
+		
+    <method name="setSearchbar">
+    </method>
+		
+    <method name="setHistoryEnabled">
+    </method>
+		
+    <method name="getHistoryEnabled">
+      <arg type="s" name="state" direction="out"/>
+    </method>
+		
+    <method name="getVolumeControls">
+      <arg type="i" name="state" direction="out"/>
+    </method>
+    
+    <method name="setVolumeControls">
+      <arg type="b" name="display" direction="in"/>
+    </method>
+		
+    <method name="getHistoryLimit">
+      <arg type="i" name="days" direction="out"/>
+    </method>
+		
+    <method name="setHistoryLimit">
+      <arg type="i" name="days" direction="in"/>
+    </method>
+		
+    <method name="startHidden">
+    </method>
+    
+    <method name="isStartHidden">
+      <arg type="i" name="state" direction="out"/>
+    </method>
+		
+    <method name="popupMode">
+      <arg type="i" name="state" direction="out"/>
+    </method>
+		
+    <method name="switchPopupMode">
+    </method>
+	
+    <!-- Addressbook configuration -->
+    <method name="getAddressbookSettings">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringInt"/>
+      <arg type="a{si}" name="settings" direction="out"/>
+    </method>
+
+    <method name="setAddressbookSettings">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringInt"/>
+      <arg type="a{si}" name="settings" direction="in"/>
+    </method>
+
+    <!-- Addressbook list -->
+    <method name="getAddressbookList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="settings" direction="out"/>
+    </method>
+
+    <method name="setAddressbookList">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="VectorString"/>
+      <arg type="as" name="settings" direction="in"/>
+    </method>
+
+
+    <!-- Hook configuration -->
+    <method name="getHookSettings">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="a{ss}" name="settings" direction="out"/>
+    </method>
+
+    <method name="setHookSettings">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
+      <arg type="a{ss}" name="settings" direction="in"/>
+    </method>
+
+    <method name="getHistory">
+        <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+        <arg type="a{ss}" name="entries" direction="out"/>
+    </method>
+
+    <method name="setHistory">
+        <annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="MapStringString"/>
+        <arg type="a{ss}" name="entries" direction="in"/>
+    </method>
+      
+    <signal name="accountsChanged">
+    </signal>
+    
+    <signal name="audioManagerChanged">
+    </signal>
+		
+    <signal name="errorAlert">
+      <arg type="i" name="code" direction="out"/>
+    </signal>
+
+    <!-- TLS Methods -->
+    <method name="getSupportedTlsMethod">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+
+    <method name="getTlsSettingsDefault">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="a{ss}" name="details" direction="out"/>
+    </method>
+
+    <method name="getTlsSettings">
+      <arg type="s" name="accountID" direction="in"/>
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="a{ss}" name="details" direction="out"/>
+    </method>
+    
+    <method name="setTlsSettings">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.In1" value="MapStringString"/>
+      <arg type="s" name="accountID" direction="in"/>
+      <arg type="a{ss}" name="details" direction="in"/>
+    </method>
+
+    <method name="getAddrFromInterfaceName">
+      <arg type="s" name="interface" direction="in"/>
+      <arg type="s" name="address" direction="out"/>
+    </method>
+
+    <method name="getAllIpInterface">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
 
-		<signal name="audioManagerChanged">
-		</signal>
-		
-		<signal name="errorAlert">
-		  <arg type="i" name="code" direction="out"/>
-		</signal>
-			 
-	       </interface>
-	 </node>
+    <method name="getAllIpInterfaceByName">
+      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
+      <arg type="as" name="list" direction="out"/>
+    </method>
+    
+  </interface>
+</node>
diff --git a/sflphone-client-kde/src/sflphone_const.h b/sflphone-client-kde/src/sflphone_const.h
index 454f0da177989cc14cde791410948c9f77b6f218..c6ccd80411639818a5500d4fe87c49c8ab8b86e8 100644
--- a/sflphone-client-kde/src/sflphone_const.h
+++ b/sflphone-client-kde/src/sflphone_const.h
@@ -109,26 +109,65 @@
 
 
 /** Account details */
-#define ACCOUNT_TYPE                      "Account.type"
-#define ACCOUNT_ALIAS		          "Account.alias"
-#define ACCOUNT_ENABLED		          "Account.enable"
-#define ACCOUNT_MAILBOX		          "Account.mailbox"
-#define ACCOUNT_HOSTNAME                  "hostname"
-#define ACCOUNT_RESOLVE_ONCE              "Account.resolveOnce"
-#define ACCOUNT_EXPIRE                    "Account.expire"
-#define ACCOUNT_USERNAME                  "username"
-#define ACCOUNT_PASSWORD                  "password"
-#define ACCOUNT_STATUS                    "Status"
+#define ACCOUNT_TYPE                     "Account.type"
+#define ACCOUNT_ALIAS		         "Account.alias"
+#define ACCOUNT_ENABLED		         "Account.enable"
+#define ACCOUNT_MAILBOX		         "Account.mailbox"
+#define ACCOUNT_RESOLVE_ONCE             "Account.resolveOnce"
+#define ACCOUNT_REGISTRATION_EXPIRE      "Account.expire"
 #define ACCOUNT_SIP_STUN_SERVER	         "STUN.server"
-#define ACCOUNT_SIP_STUN_ENABLED          "STUN.enable"
+#define ACCOUNT_SIP_STUN_ENABLED         "STUN.enable"
+#define ACCOUNT_HOSTNAME                 "hostname"
+#define ACCOUNT_USERNAME                 "username"
+#define ACCOUNT_PASSWORD                 "password"
+#define ACCOUNT_AUTHENTICATION_USERNAME  "authenticationUsername"
+#define ACCOUNT_REALM                    "realm"
+#define ACCOUNT_KEY_EXCHANGE             "SRTP.keyExchange"
+#define ACCOUNT_SRTP_ENABLED             "SRTP.enable"
+#define ACCOUNT_ZRTP_DISPLAY_SAS         "ZRTP.displaySAS"
+#define ACCOUNT_ZRTP_NOT_SUPP_WARNING    "ZRTP.notSuppWarning"
+#define ACCOUNT_ZRTP_HELLO_HASH          "ZRTP.helloHashEnable"
+#define ACCOUNT_DISPLAY_SAS_ONCE         "ZRTP.displaySasOnce"
+#define KEY_EXCHANGE_NONE                "0"
+#define ZRTP                             "1"
+#define SDES                             "2"
+
+#define TLS_ENABLE                       "TLS.enable"
+#define TLS_PORT                         "TLS.port"
+#define TLS_CA_LIST_FILE                 "TLS.certificateListFile"
+#define TLS_CERTIFICATE_FILE             "TLS.certificateFile"
+#define TLS_PRIVATE_KEY_FILE             "TLS.privateKeyFile"
+#define TLS_PASSWORD                     "TLS.password"
+#define TLS_METHOD                       "TLS.method"
+#define TLS_CIPHERS                      "TLS.ciphers"
+#define TLS_SERVER_NAME                  "TLS.serverName"
+#define TLS_VERIFY_SERVER                "TLS.verifyServer"
+#define TLS_VERIFY_CLIENT                "TLS.verifyClient"
+#define TLS_REQUIRE_CLIENT_CERTIFICATE   "TLS.requireClientCertificate"  
+#define TLS_NEGOTIATION_TIMEOUT_SEC      "TLS.negotiationTimeoutSec"
+#define TLS_NEGOTIATION_TIMEOUT_MSEC     "TLS.negotiationTimemoutMsec"
+
+#define LOCAL_INTERFACE                  "Account.localInterface"
+#define PUBLISHED_SAMEAS_LOCAL           "Account.publishedSameAsLocal"
+#define LOCAL_PORT                       "Account.localPort"
+#define PUBLISHED_PORT                   "Account.publishedPort"
+#define PUBLISHED_ADDRESS                "Account.publishedAddress"
+
+#define REGISTRATION_STATUS              "Status"
+#define REGISTRATION_STATE_CODE          "Registration.code" 
+#define REGISTRATION_STATE_DESCRIPTION   "Registration.description"
+
+
+/** Maybe to remove **/
+#define ACCOUNT_EXPIRE                   "Account.expire"
+#define ACCOUNT_STATUS                   "Status"
 #define ACCOUNT_EXPIRE_DEFAULT            600
-
 #define ACCOUNT_ENABLED_TRUE              "true"
 #define ACCOUNT_ENABLED_FALSE             "false"
-
 #define ACCOUNT_TYPE_SIP                  "SIP"
 #define ACCOUNT_TYPE_IAX                  "IAX"
 #define ACCOUNT_TYPES_TAB                 {QString(ACCOUNT_TYPE_SIP), QString(ACCOUNT_TYPE_IAX)}
+/*********************/
 
 /** Constant variables */
 #define ACCOUNT_MAILBOX_DEFAULT_VALUE     "888"