diff --git a/sflphone-common/src/dbus/callmanager-introspec.xml b/sflphone-common/src/dbus/callmanager-introspec.xml
index 0558a20e8896c7703f6cb716fbeabe3224f82948..dbc84d3542c77ceba6beb6f07f3904aa2e4d8ce8 100644
--- a/sflphone-common/src/dbus/callmanager-introspec.xml
+++ b/sflphone-common/src/dbus/callmanager-introspec.xml
@@ -63,6 +63,7 @@
     
     <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>
     
@@ -107,9 +108,13 @@
       <arg type="d" name="value"  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-common/src/dbus/configurationmanager-introspec.xml b/sflphone-common/src/dbus/configurationmanager-introspec.xml
index 8e9c4583d77243a7bad6d294eb59edd47ba540c3..9a4375bb0cfce1a67ff8790ae119202015d0ce16 100644
--- a/sflphone-common/src/dbus/configurationmanager-introspec.xml
+++ b/sflphone-common/src/dbus/configurationmanager-introspec.xml
@@ -89,6 +89,14 @@
     <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>
 
    <!--      ///////////////////////               -->
    
@@ -263,38 +271,47 @@
 
     <!-- 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>
 
   <!--        /////////////////////////////       -->
+
+<!--
     <signal name="parametersChanged">
       <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>
-    
+-->    
+
     <signal name="accountsChanged">
     </signal>
 
diff --git a/sflphone_kde/CMakeLists.txt b/sflphone_kde/CMakeLists.txt
index 1b07cebc255ca88a003c7469571580955e307277..786ab55e8843e84879f94f1bb91ee9e41510d4d7 100644
--- a/sflphone_kde/CMakeLists.txt
+++ b/sflphone_kde/CMakeLists.txt
@@ -1,12 +1,30 @@
 project(sflphone_kde)
+
 find_package(KDE4 REQUIRED)
+
 include (KDE4Defaults)
+
+# --- custom targets: ---
+INCLUDE( TargetDistclean.cmake OPTIONAL)
+
+
 include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} )
+
 INCLUDE (  ${CMAKE_ROOT}/Modules/FindQt4.cmake  )
+INCLUDE (  ${CMAKE_ROOT}/Modules/FindKDE4.cmake  )
+INCLUDE (  ${CMAKE_ROOT}/Modules/FindPkgConfig.cmake  )
+
 INCLUDE(   ${QT_USE_FILE}   )
 
 ADD_DEFINITIONS(${KDE4_DEFINITIONS} ${QT_DEFINITIONS} -fexceptions -DDATA_INSTALL_DIR="\\\"${DATA_INSTALL_DIR}\\\"")
 
+#AC_CHECK_HEADERS(log4c.h)
+
+#pkg_check_modules(LIBSEXY libsexy>=0.1)
+#pkg_check_modules(KDEPIM kdepimlibs5-dev REQUIRED)
+
+
+
 SET(
 	sflphone_kde_SRCS
 	sflphone_kdeview.cpp
@@ -29,6 +47,7 @@ SET(
 	ActionSetAccountFirst.cpp
 	Contact.cpp
 	ContactItemWidget.cpp
+	metatypes.h
 )
  
 SET(QtApp_RCCS resources.qrc)
@@ -42,13 +61,28 @@ QT4_ADD_RESOURCES(QtApp_RCC_SRCS ${QtApp_RCCS})
 
 kde4_add_ui_files(sflphone_kde_SRCS sflphone_kdeview_base.ui ConfigDialog.ui)
 
+# set(configurationmanager_xml ${CMAKE_CURRENT_SOURCE_DIR}/../sflphone-common/src/dbus/configurationmanager-introspec.xml)
+# 
+# set_source_files_properties(
+#    ${configurationmanager_xml}
+#    PROPERTIES 
+#    COMPILE_FLAGS "-i metatypes.h"
+#    CLASSNAME ConfigurationManagerInterface
+#    INCLUDE "../metatypes.h") 
+# 
+# qt4_add_dbus_interface(
+#    sflphone_kde_SRCS 
+#    ${configurationmanager_xml}
+#    configurationmanager_interface)
+
+
 #kde4_add_kcfg_files(sflphone_kde_SRCS settings.kcfgc )
 
-kde4_add_executable(sflphone_kde ${sflphone_kde_SRCS} ${QtApp_RCC_SRCS})
+kde4_add_executable(sflphone-client-kde ${sflphone_kde_SRCS} ${QtApp_RCC_SRCS})
 
-target_link_libraries(sflphone_kde ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} -lkabc)
+target_link_libraries(sflphone-client-kde ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} -lkabc)
 
-install(TARGETS sflphone_kde DESTINATION ${BIN_INSTALL_DIR})
+install(TARGETS sflphone-client-kde DESTINATION ${BIN_INSTALL_DIR})
 
 
 ########### install files ###############
diff --git a/sflphone_kde/ConfigDialog.ui b/sflphone_kde/ConfigDialog.ui
index 4c84ebd8b6c8917b75b8dab19aca17737862d836..8d86245aa387bfb27f5fa2b6780c8c0ca9befd40 100644
--- a/sflphone_kde/ConfigDialog.ui
+++ b/sflphone_kde/ConfigDialog.ui
@@ -596,7 +596,7 @@
                      <string>Remove this account</string>
                     </property>
                     <property name="icon">
-                     <iconset resource="resources.qrc">
+                     <iconset>
                       <normaloff>:/images/icons/remove.png</normaloff>:/images/icons/remove.png</iconset>
                     </property>
                     <property name="shortcut">
@@ -622,7 +622,7 @@
                      <string>Add a new account</string>
                     </property>
                     <property name="icon">
-                     <iconset resource="resources.qrc">
+                     <iconset>
                       <normaloff>:/images/icons/add.png</normaloff>:/images/icons/add.png</iconset>
                     </property>
                    </widget>
diff --git a/sflphone_kde/TargetDistclean.cmake b/sflphone_kde/TargetDistclean.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..55f631a22328d167899912e244b51192d4a0fe87
--- /dev/null
+++ b/sflphone_kde/TargetDistclean.cmake
@@ -0,0 +1,40 @@
+ 
+# add custom target distclean
+# cleans and removes cmake generated files etc.
+# Jan Woetzel 04/2003
+#
+
+IF (UNIX)
+  ADD_CUSTOM_TARGET (distclean @echo cleaning for source distribution)
+  SET(DISTCLEANED
+   cmake.depends
+   cmake.check_depends
+   CMakeCache.txt
+   cmake.check_cache
+   *.cmake
+   Makefile
+   core core.*
+   gmon.out
+   *~
+   *_automoc.cpp.files
+   *_automoc.cpp
+   moc_*.cpp
+   ui_*.h
+   *.moc
+   qrc_resources.cxx
+   *introspecinterface.cpp
+   *introspecinterface.h
+   sflphone-client-kde
+   sflphone-client-kde.shell
+  )
+  
+  ADD_CUSTOM_COMMAND(
+    DEPENDS clean
+    COMMENT "distribution clean"
+    COMMAND rm
+    ARGS    -Rf CMakeTmp CMakeFiles ${DISTCLEANED}
+    TARGET  distclean
+  )
+ENDIF(UNIX)
+
+
diff --git a/sflphone_kde/callmanager_interface.cpp b/sflphone_kde/callmanager_interface.cpp
index 6b0c1178863927e615364c2f3c3b8309f198bf87..99c0e5f99c0e822d1f119f8f8f291d69dac5b1f9 100644
--- a/sflphone_kde/callmanager_interface.cpp
+++ b/sflphone_kde/callmanager_interface.cpp
@@ -1,8 +1,8 @@
 /*
- * This file was generated by dbusxml2cpp version 0.6
- * Command line was: dbusxml2cpp -c CallManagerInterface -p callmanager_interface_p.h:callmanager_interface.cpp -i metatypes.h callmanager-introspec.xml
+ * This file was generated by qdbusxml2cpp version 0.7
+ * Command line was: qdbusxml2cpp -c CallManagerInterface -p callmanager_interface_p.h:callmanager_interface.cpp -i metatypes.h ../sflphone-common/src/dbus/callmanager-introspec.xml
  *
- * dbusxml2cpp is Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
  *
  * This is an auto-generated file.
  * This file may have been hand-edited. Look for HAND-EDIT comments
diff --git a/sflphone_kde/callmanager_interface_p.h b/sflphone_kde/callmanager_interface_p.h
index d0d6aa68e68cf0ec25dcd45fab41786c407ff2f8..b2de98d54f7a4e712975184ab3fc08faf86e11fb 100644
--- a/sflphone_kde/callmanager_interface_p.h
+++ b/sflphone_kde/callmanager_interface_p.h
@@ -1,15 +1,15 @@
 /*
- * This file was generated by dbusxml2cpp version 0.6
- * Command line was: dbusxml2cpp -c CallManagerInterface -p callmanager_interface_p.h:callmanager_interface.cpp -i metatypes.h callmanager-introspec.xml
+ * This file was generated by qdbusxml2cpp version 0.7
+ * Command line was: qdbusxml2cpp -c CallManagerInterface -p callmanager_interface_p.h:callmanager_interface.cpp -i metatypes.h ../sflphone-common/src/dbus/callmanager-introspec.xml
  *
- * dbusxml2cpp is Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
  *
  * This is an auto-generated file.
  * Do not edit! All changes made to it will be lost.
  */
 
-#ifndef CALLMANAGER_INTERFACE_P_H_1237301614
-#define CALLMANAGER_INTERFACE_P_H_1237301614
+#ifndef CALLMANAGER_INTERFACE_P_H_1241041431
+#define CALLMANAGER_INTERFACE_P_H_1241041431
 
 #include <QtCore/QObject>
 #include <QtCore/QByteArray>
@@ -37,113 +37,120 @@ public:
     ~CallManagerInterface();
 
 public Q_SLOTS: // METHODS
-    inline QDBusReply<void> accept(const QString &callID)
+    inline QDBusPendingReply<> accept(const QString &callID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(callID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("accept"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("accept"), argumentList);
     }
 
-    inline QDBusReply<MapStringString> getCallDetails(const QString &callID)
+    inline QDBusPendingReply<MapStringString> getCallDetails(const QString &callID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(callID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("getCallDetails"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getCallDetails"), argumentList);
     }
 
-    inline QDBusReply<QString> getCurrentCallID()
+    inline QDBusPendingReply<QString> getCurrentCallID()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getCurrentCallID"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getCurrentCallID"), argumentList);
     }
 
-    inline QDBusReply<bool> getIsRecording(const QString &callID)
+    inline QDBusPendingReply<QString> getCurrentCodecName(const QString &callID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(callID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("getIsRecording"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getCurrentCodecName"), argumentList);
     }
 
-    inline QDBusReply<double> getVolume(const QString &device)
+    inline QDBusPendingReply<bool> getIsRecording(const QString &callID)
+    {
+        QList<QVariant> argumentList;
+        argumentList << qVariantFromValue(callID);
+        return asyncCallWithArgumentList(QLatin1String("getIsRecording"), argumentList);
+    }
+
+    inline QDBusPendingReply<double> getVolume(const QString &device)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(device);
-        return callWithArgumentList(QDBus::Block, QLatin1String("getVolume"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getVolume"), argumentList);
     }
 
-    inline QDBusReply<void> hangUp(const QString &callID)
+    inline QDBusPendingReply<> hangUp(const QString &callID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(callID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("hangUp"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("hangUp"), argumentList);
     }
 
-    inline QDBusReply<void> hold(const QString &callID)
+    inline QDBusPendingReply<> hold(const QString &callID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(callID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("hold"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("hold"), argumentList);
     }
 
-    inline QDBusReply<void> placeCall(const QString &accountID, const QString &callID, const QString &to)
+    inline QDBusPendingReply<> placeCall(const QString &accountID, const QString &callID, const QString &to)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(accountID) << qVariantFromValue(callID) << qVariantFromValue(to);
-        return callWithArgumentList(QDBus::Block, QLatin1String("placeCall"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("placeCall"), argumentList);
     }
 
-    inline QDBusReply<void> playDTMF(const QString &key)
+    inline QDBusPendingReply<> playDTMF(const QString &key)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(key);
-        return callWithArgumentList(QDBus::Block, QLatin1String("playDTMF"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("playDTMF"), argumentList);
     }
 
-    inline QDBusReply<void> refuse(const QString &callID)
+    inline QDBusPendingReply<> refuse(const QString &callID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(callID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("refuse"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("refuse"), argumentList);
     }
 
-    inline QDBusReply<void> setRecording(const QString &callID)
+    inline QDBusPendingReply<> setRecording(const QString &callID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(callID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setRecording"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setRecording"), argumentList);
     }
 
-    inline QDBusReply<void> setVolume(const QString &device, double value)
+    inline QDBusPendingReply<> setVolume(const QString &device, double value)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(device) << qVariantFromValue(value);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setVolume"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setVolume"), argumentList);
     }
 
-    inline QDBusReply<void> startTone(int start, int type)
+    inline QDBusPendingReply<> startTone(int start, int type)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(start) << qVariantFromValue(type);
-        return callWithArgumentList(QDBus::Block, QLatin1String("startTone"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("startTone"), argumentList);
     }
 
-    inline QDBusReply<void> transfert(const QString &callID, const QString &to)
+    inline QDBusPendingReply<> transfert(const QString &callID, const QString &to)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(callID) << qVariantFromValue(to);
-        return callWithArgumentList(QDBus::Block, QLatin1String("transfert"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("transfert"), argumentList);
     }
 
-    inline QDBusReply<void> unhold(const QString &callID)
+    inline QDBusPendingReply<> unhold(const QString &callID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(callID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("unhold"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("unhold"), argumentList);
     }
 
 Q_SIGNALS: // SIGNALS
     void callStateChanged(const QString &callID, const QString &state);
-    void error(MapStringString details);
+    void currentSelectedCodec(const QString &callID, const QString &codecName);
     void incomingCall(const QString &accountID, const QString &callID, const QString &from);
     void incomingMessage(const QString &accountID, const QString &message);
     void voiceMailNotify(const QString &accountID, int count);
diff --git a/sflphone_kde/configurationmanager-introspec.xml b/sflphone_kde/configurationmanager-introspec.xml
index f51979e239a1039b2fa61b9b6a77be59b2589f99..778ac9a4fd13177731f7b38b79085377f875ed57 100644
--- a/sflphone_kde/configurationmanager-introspec.xml
+++ b/sflphone_kde/configurationmanager-introspec.xml
@@ -3,9 +3,9 @@
   <interface name="org.sflphone.SFLphone.ConfigurationManager">
     
   <!-- Accounts-related methods -->  
-    <method name="getAccountDetails">
-      <arg type="s" name="accountID" direction="in"/>
+  <method name="getAccountDetails">
       <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+      <arg type="s" name="accountID" direction="in"/>
       <arg type="a{ss}" name="details" direction="out"/>
     </method>
     
@@ -26,7 +26,6 @@
     </method>
     
     <method name="getAccountList">
-      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
       <arg type="as" name="list" direction="out"/>
     </method>
    
@@ -40,7 +39,6 @@
   <!-- Various audio-related methods   -->
  
     <method name="getToneLocaleList">
-      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
       <arg type="as" name="list" direction="out"/>
     </method>
   
@@ -49,17 +47,14 @@
     </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>
     
@@ -101,23 +96,19 @@
    <!-- 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>
 
@@ -125,12 +116,10 @@
 	<!-- 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>
     
@@ -143,7 +132,6 @@
     </method>
     
     <method name="getAudioOutputDeviceList">
-      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
       <arg type="as" name="list" direction="out"/>
     </method>
     
@@ -152,7 +140,6 @@
     </method>
     
     <method name="getAudioInputDeviceList">
-      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
       <arg type="as" name="list" direction="out"/>
     </method>
     
@@ -161,7 +148,6 @@
     </method>
     
     <method name="getCurrentAudioDevicesIndex">
-      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="VectorString"/>
       <arg type="as" name="list" direction="out"/>
     </method>
 
@@ -290,11 +276,6 @@
     </method>
 
   <!--        /////////////////////////////       -->
-    <signal name="parametersChanged">
-      <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>
     
     <signal name="accountsChanged">
     </signal>
diff --git a/sflphone_kde/configurationmanager_interface.cpp b/sflphone_kde/configurationmanager_interface.cpp
index dd264ef315a61f5855766d15d0a04eb79eaf55af..bbef8fc49bee7a9ca3ab58233be2a80408dae298 100644
--- a/sflphone_kde/configurationmanager_interface.cpp
+++ b/sflphone_kde/configurationmanager_interface.cpp
@@ -1,8 +1,8 @@
 /*
- * This file was generated by dbusxml2cpp version 0.6
- * Command line was: dbusxml2cpp -c ConfigurationManagerInterface -p configurationmanager_interface_p.h:configurationmanager_interface.cpp -i metatypes.h configurationmanager-introspec.xml
+ * This file was generated by qdbusxml2cpp version 0.7
+ * Command line was: qdbusxml2cpp -c ConfigurationManagerInterface -p configurationmanager_interface_p.h:configurationmanager_interface.cpp -i metatypes.h ../sflphone-common/src/dbus/configurationmanager-introspec.xml
  *
- * dbusxml2cpp is Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
  *
  * This is an auto-generated file.
  * This file may have been hand-edited. Look for HAND-EDIT comments
diff --git a/sflphone_kde/configurationmanager_interface_p.h b/sflphone_kde/configurationmanager_interface_p.h
index ec638d23fb3913129549c53e49a52b4abefa4d03..e05c27ad5590dda74bebfb252239722daa43a8b7 100644
--- a/sflphone_kde/configurationmanager_interface_p.h
+++ b/sflphone_kde/configurationmanager_interface_p.h
@@ -1,15 +1,15 @@
 /*
- * This file was generated by dbusxml2cpp version 0.6
- * Command line was: dbusxml2cpp -c ConfigurationManagerInterface -p configurationmanager_interface_p.h:configurationmanager_interface.cpp -i metatypes.h configurationmanager-introspec.xml
+ * This file was generated by qdbusxml2cpp version 0.7
+ * Command line was: qdbusxml2cpp -c ConfigurationManagerInterface -p configurationmanager_interface_p.h:configurationmanager_interface.cpp -i metatypes.h ../sflphone-common/src/dbus/configurationmanager-introspec.xml
  *
- * dbusxml2cpp is Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
  *
  * This is an auto-generated file.
  * Do not edit! All changes made to it will be lost.
  */
 
-#ifndef CONFIGURATIONMANAGER_INTERFACE_P_H_1238787208
-#define CONFIGURATIONMANAGER_INTERFACE_P_H_1238787208
+#ifndef CONFIGURATIONMANAGER_INTERFACE_P_H_1241041401
+#define CONFIGURATIONMANAGER_INTERFACE_P_H_1241041401
 
 #include <QtCore/QObject>
 #include <QtCore/QByteArray>
@@ -37,408 +37,427 @@ public:
     ~ConfigurationManagerInterface();
 
 public Q_SLOTS: // METHODS
-    inline QDBusReply<QString> addAccount(MapStringString details)
+    inline QDBusPendingReply<QString> addAccount(MapStringString details)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(details);
-        return callWithArgumentList(QDBus::Block, QLatin1String("addAccount"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("addAccount"), argumentList);
     }
 
-    inline QDBusReply<void> enableStun()
+    inline QDBusPendingReply<> enableStun()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("enableStun"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("enableStun"), argumentList);
     }
 
-    inline QDBusReply<MapStringString> getAccountDetails(const QString &accountID)
+    inline QDBusPendingReply<MapStringString> getAccountDetails(const QString &accountID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(accountID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("getAccountDetails"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getAccountDetails"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getAccountList()
+    inline QDBusPendingReply<QStringList> getAccountList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getAccountList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getAccountList"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getActiveCodecList()
+    inline QDBusPendingReply<QStringList> getActiveCodecList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getActiveCodecList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getActiveCodecList"), argumentList);
     }
 
-    inline QDBusReply<MapStringInt> getAddressbookSettings()
+    inline QDBusPendingReply<QStringList> getAddressbookList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getAddressbookSettings"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getAddressbookList"), argumentList);
     }
 
-    inline QDBusReply<int> getAudioDeviceIndex(const QString &name)
+    inline QDBusPendingReply<MapStringInt> getAddressbookSettings()
+    {
+        QList<QVariant> argumentList;
+        return asyncCallWithArgumentList(QLatin1String("getAddressbookSettings"), argumentList);
+    }
+
+    inline QDBusPendingReply<int> getAudioDeviceIndex(const QString &name)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(name);
-        return callWithArgumentList(QDBus::Block, QLatin1String("getAudioDeviceIndex"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getAudioDeviceIndex"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getAudioInputDeviceList()
+    inline QDBusPendingReply<QStringList> getAudioInputDeviceList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getAudioInputDeviceList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getAudioInputDeviceList"), argumentList);
     }
 
-    inline QDBusReply<int> getAudioManager()
+    inline QDBusPendingReply<int> getAudioManager()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getAudioManager"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getAudioManager"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getAudioOutputDeviceList()
+    inline QDBusPendingReply<QStringList> getAudioOutputDeviceList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getAudioOutputDeviceList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getAudioOutputDeviceList"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getCodecDetails(int payload)
+    inline QDBusPendingReply<QStringList> getCodecDetails(int payload)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(payload);
-        return callWithArgumentList(QDBus::Block, QLatin1String("getCodecDetails"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getCodecDetails"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getCodecList()
+    inline QDBusPendingReply<QStringList> getCodecList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getCodecList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getCodecList"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getCurrentAudioDevicesIndex()
+    inline QDBusPendingReply<QStringList> getCurrentAudioDevicesIndex()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getCurrentAudioDevicesIndex"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getCurrentAudioDevicesIndex"), argumentList);
     }
 
-    inline QDBusReply<QString> getCurrentAudioOutputPlugin()
+    inline QDBusPendingReply<QString> getCurrentAudioOutputPlugin()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getCurrentAudioOutputPlugin"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getCurrentAudioOutputPlugin"), argumentList);
     }
 
-    inline QDBusReply<int> getDialpad()
+    inline QDBusPendingReply<int> getDialpad()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getDialpad"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getDialpad"), argumentList);
     }
 
-    inline QDBusReply<MapStringString> getHookSettings()
+    inline QDBusPendingReply<MapStringString> getHookSettings()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getHookSettings"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getHookSettings"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getInputAudioPluginList()
+    inline QDBusPendingReply<QStringList> getInputAudioPluginList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getInputAudioPluginList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getInputAudioPluginList"), argumentList);
     }
 
-    inline QDBusReply<int> getMailNotify()
+    inline QDBusPendingReply<int> getMailNotify()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getMailNotify"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getMailNotify"), argumentList);
     }
 
-    inline QDBusReply<int> getMaxCalls()
+    inline QDBusPendingReply<int> getMaxCalls()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getMaxCalls"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getMaxCalls"), argumentList);
     }
 
-    inline QDBusReply<int> getNotify()
+    inline QDBusPendingReply<int> getNotify()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getNotify"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getNotify"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getOutputAudioPluginList()
+    inline QDBusPendingReply<QStringList> getOutputAudioPluginList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getOutputAudioPluginList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getOutputAudioPluginList"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getPlaybackDeviceList()
+    inline QDBusPendingReply<QStringList> getPlaybackDeviceList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getPlaybackDeviceList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getPlaybackDeviceList"), argumentList);
     }
 
-    inline QDBusReply<int> getPulseAppVolumeControl()
+    inline QDBusPendingReply<int> getPulseAppVolumeControl()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getPulseAppVolumeControl"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getPulseAppVolumeControl"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getRecordDeviceList()
+    inline QDBusPendingReply<QStringList> getRecordDeviceList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getRecordDeviceList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getRecordDeviceList"), argumentList);
     }
 
-    inline QDBusReply<QString> getRecordPath()
+    inline QDBusPendingReply<QString> getRecordPath()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getRecordPath"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getRecordPath"), argumentList);
     }
 
-    inline QDBusReply<QString> getRingtoneChoice()
+    inline QDBusPendingReply<QString> getRingtoneChoice()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getRingtoneChoice"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getRingtoneChoice"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getRingtoneList()
+    inline QDBusPendingReply<QStringList> getRingtoneList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getRingtoneList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getRingtoneList"), argumentList);
     }
 
-    inline QDBusReply<int> getSearchbar()
+    inline QDBusPendingReply<int> getSearchbar()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getSearchbar"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getSearchbar"), argumentList);
     }
 
-    inline QDBusReply<int> getSipPort()
+    inline QDBusPendingReply<int> getSipPort()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getSipPort"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getSipPort"), argumentList);
     }
 
-    inline QDBusReply<QString> getStunServer()
+    inline QDBusPendingReply<QString> getStunServer()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getStunServer"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getStunServer"), argumentList);
     }
 
-    inline QDBusReply<QStringList> getToneLocaleList()
+    inline QDBusPendingReply<QStringList> getToneLocaleList()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getToneLocaleList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getToneLocaleList"), argumentList);
     }
 
-    inline QDBusReply<QString> getVersion()
+    inline QDBusPendingReply<QString> getVersion()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getVersion"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getVersion"), argumentList);
     }
 
-    inline QDBusReply<int> getVolumeControls()
+    inline QDBusPendingReply<int> getVolumeControls()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getVolumeControls"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getVolumeControls"), argumentList);
     }
 
-    inline QDBusReply<int> isIax2Enabled()
+    inline QDBusPendingReply<int> isIax2Enabled()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("isIax2Enabled"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("isIax2Enabled"), argumentList);
     }
 
-    inline QDBusReply<int> isRingtoneEnabled()
+    inline QDBusPendingReply<int> isRingtoneEnabled()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("isRingtoneEnabled"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("isRingtoneEnabled"), argumentList);
     }
 
-    inline QDBusReply<int> isStartHidden()
+    inline QDBusPendingReply<int> isStartHidden()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("isStartHidden"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("isStartHidden"), argumentList);
     }
 
-    inline QDBusReply<int> isStunEnabled()
+    inline QDBusPendingReply<int> isStunEnabled()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("isStunEnabled"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("isStunEnabled"), argumentList);
     }
 
-    inline QDBusReply<int> popupMode()
+    inline QDBusPendingReply<int> popupMode()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("popupMode"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("popupMode"), argumentList);
     }
 
-    inline QDBusReply<void> removeAccount(const QString &accoundID)
+    inline QDBusPendingReply<> removeAccount(const QString &accoundID)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(accoundID);
-        return callWithArgumentList(QDBus::Block, QLatin1String("removeAccount"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("removeAccount"), argumentList);
     }
 
-    inline QDBusReply<void> ringtoneEnabled()
+    inline QDBusPendingReply<> ringtoneEnabled()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("ringtoneEnabled"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("ringtoneEnabled"), argumentList);
     }
 
-    inline QDBusReply<void> sendRegister(const QString &accountID, int expire)
+    inline QDBusPendingReply<> sendRegister(const QString &accountID, int expire)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(accountID) << qVariantFromValue(expire);
-        return callWithArgumentList(QDBus::Block, QLatin1String("sendRegister"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("sendRegister"), argumentList);
     }
 
-    inline QDBusReply<void> setAccountDetails(const QString &accountID, MapStringString details)
+    inline QDBusPendingReply<> setAccountDetails(const QString &accountID, MapStringString details)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(accountID) << qVariantFromValue(details);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setAccountDetails"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setAccountDetails"), argumentList);
     }
 
-    inline QDBusReply<void> setActiveCodecList(const QStringList &list)
+    inline QDBusPendingReply<> setAccountsOrder(const QString &order)
+    {
+        QList<QVariant> argumentList;
+        argumentList << qVariantFromValue(order);
+        return asyncCallWithArgumentList(QLatin1String("setAccountsOrder"), argumentList);
+    }
+
+    inline QDBusPendingReply<> setActiveCodecList(const QStringList &list)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(list);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setActiveCodecList"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setActiveCodecList"), argumentList);
+    }
+
+    inline QDBusPendingReply<> setAddressbookList(const QStringList &settings)
+    {
+        QList<QVariant> argumentList;
+        argumentList << qVariantFromValue(settings);
+        return asyncCallWithArgumentList(QLatin1String("setAddressbookList"), argumentList);
     }
 
-    inline QDBusReply<void> setAddressbookSettings(MapStringInt settings)
+    inline QDBusPendingReply<> setAddressbookSettings(MapStringInt settings)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(settings);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setAddressbookSettings"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setAddressbookSettings"), argumentList);
     }
 
-    inline QDBusReply<void> setAudioInputDevice(int index)
+    inline QDBusPendingReply<> setAudioInputDevice(int index)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(index);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setAudioInputDevice"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setAudioInputDevice"), argumentList);
     }
 
-    inline QDBusReply<void> setAudioManager(int api)
+    inline QDBusPendingReply<> setAudioManager(int api)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(api);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setAudioManager"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setAudioManager"), argumentList);
     }
 
-    inline QDBusReply<void> setAudioOutputDevice(int index)
+    inline QDBusPendingReply<> setAudioOutputDevice(int index)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(index);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setAudioOutputDevice"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setAudioOutputDevice"), argumentList);
     }
 
-    inline QDBusReply<void> setDialpad()
+    inline QDBusPendingReply<> setDialpad()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("setDialpad"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setDialpad"), argumentList);
     }
 
-    inline QDBusReply<void> setHookSettings(MapStringString settings)
+    inline QDBusPendingReply<> setHookSettings(MapStringString settings)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(settings);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setHookSettings"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setHookSettings"), argumentList);
     }
 
-    inline QDBusReply<void> setInputAudioPlugin(const QString &audioPlugin)
+    inline QDBusPendingReply<> setInputAudioPlugin(const QString &audioPlugin)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(audioPlugin);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setInputAudioPlugin"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setInputAudioPlugin"), argumentList);
     }
 
-    inline QDBusReply<void> setMailNotify()
+    inline QDBusPendingReply<> setMailNotify()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("setMailNotify"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setMailNotify"), argumentList);
     }
 
-    inline QDBusReply<void> setMaxCalls(int calls)
+    inline QDBusPendingReply<> setMaxCalls(int calls)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(calls);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setMaxCalls"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setMaxCalls"), argumentList);
     }
 
-    inline QDBusReply<void> setNotify()
+    inline QDBusPendingReply<> setNotify()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("setNotify"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setNotify"), argumentList);
     }
 
-    inline QDBusReply<void> setOutputAudioPlugin(const QString &audioPlugin)
+    inline QDBusPendingReply<> setOutputAudioPlugin(const QString &audioPlugin)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(audioPlugin);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setOutputAudioPlugin"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setOutputAudioPlugin"), argumentList);
     }
 
-    inline QDBusReply<void> setPulseAppVolumeControl()
+    inline QDBusPendingReply<> setPulseAppVolumeControl()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("setPulseAppVolumeControl"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setPulseAppVolumeControl"), argumentList);
     }
 
-    inline QDBusReply<void> setRecordPath(const QString &rec)
+    inline QDBusPendingReply<> setRecordPath(const QString &rec)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(rec);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setRecordPath"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setRecordPath"), argumentList);
     }
 
-    inline QDBusReply<void> setRingtoneChoice(const QString &tone)
+    inline QDBusPendingReply<> setRingtoneChoice(const QString &tone)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(tone);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setRingtoneChoice"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setRingtoneChoice"), argumentList);
     }
 
-    inline QDBusReply<void> setSearchbar()
+    inline QDBusPendingReply<> setSearchbar()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("setSearchbar"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setSearchbar"), argumentList);
     }
 
-    inline QDBusReply<void> setSipPort(int port)
+    inline QDBusPendingReply<> setSipPort(int port)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(port);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setSipPort"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setSipPort"), argumentList);
     }
 
-    inline QDBusReply<void> setStunServer(const QString &server)
+    inline QDBusPendingReply<> setStunServer(const QString &server)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(server);
-        return callWithArgumentList(QDBus::Block, QLatin1String("setStunServer"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setStunServer"), argumentList);
     }
 
-    inline QDBusReply<void> setVolumeControls()
+    inline QDBusPendingReply<> setVolumeControls()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("setVolumeControls"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("setVolumeControls"), argumentList);
     }
 
-    inline QDBusReply<void> startHidden()
+    inline QDBusPendingReply<> startHidden()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("startHidden"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("startHidden"), argumentList);
     }
 
-    inline QDBusReply<void> switchPopupMode()
+    inline QDBusPendingReply<> switchPopupMode()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("switchPopupMode"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("switchPopupMode"), argumentList);
     }
 
 Q_SIGNALS: // SIGNALS
     void accountsChanged();
     void errorAlert(int code);
-    void parametersChanged(MapStringString details);
 };
 
 namespace org {
diff --git a/sflphone_kde/install.sh b/sflphone_kde/install.sh
old mode 100644
new mode 100755
index a8f5a01dc3ccc5de85d9c0dc7ffad21046a6e6c0..651e29b308a721984267bd55efa20f9ad7b63695
--- a/sflphone_kde/install.sh
+++ b/sflphone_kde/install.sh
@@ -6,8 +6,6 @@ mkdir build
 cd build
 echo "Executing cmake command"
 cmake ../
-echo "Changing cmake settings to enable exceptions"
-sed -i s/-fno-exceptions/-fexceptions/ ./CMakeFiles/sflphone_kde.dir/flags.make
 echo "Executing makefile"
 make
 echo "Compile done. You may now execute build/sflphone_kde ."
\ No newline at end of file
diff --git a/sflphone_kde/instance_interface.cpp b/sflphone_kde/instance_interface.cpp
index 9cf8039aecbe025dc2b2d1fe9d304b0f491cd88c..8b846a443c33b388fa52445fe2c18485b844a305 100644
--- a/sflphone_kde/instance_interface.cpp
+++ b/sflphone_kde/instance_interface.cpp
@@ -1,8 +1,8 @@
 /*
- * This file was generated by dbusxml2cpp version 0.6
- * Command line was: dbusxml2cpp -c InstanceInterface -p instance_interface_p.h:instance_interface.cpp -i metatypes.h instance-introspec.xml
+ * This file was generated by qdbusxml2cpp version 0.7
+ * Command line was: qdbusxml2cpp -c InstanceInterface -p instance_interface_p.h:instance_interface.cpp -i metatypes.h ../sflphone-common/src/dbus/instance-introspec.xml
  *
- * dbusxml2cpp is Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
  *
  * This is an auto-generated file.
  * This file may have been hand-edited. Look for HAND-EDIT comments
diff --git a/sflphone_kde/instance_interface_p.h b/sflphone_kde/instance_interface_p.h
index fa118d834749f016a78937c8e21b02125b6db1fc..4bd1dc9839f0b45d755df49e6220553e377c164d 100644
--- a/sflphone_kde/instance_interface_p.h
+++ b/sflphone_kde/instance_interface_p.h
@@ -1,15 +1,15 @@
 /*
- * This file was generated by dbusxml2cpp version 0.6
- * Command line was: dbusxml2cpp -c InstanceInterface -p instance_interface_p.h:instance_interface.cpp -i metatypes.h instance-introspec.xml
+ * This file was generated by qdbusxml2cpp version 0.7
+ * Command line was: qdbusxml2cpp -c InstanceInterface -p instance_interface_p.h:instance_interface.cpp -i metatypes.h ../sflphone-common/src/dbus/instance-introspec.xml
  *
- * dbusxml2cpp is Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * qdbusxml2cpp is Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
  *
  * This is an auto-generated file.
  * Do not edit! All changes made to it will be lost.
  */
 
-#ifndef INSTANCE_INTERFACE_P_H_1239116391
-#define INSTANCE_INTERFACE_P_H_1239116391
+#ifndef INSTANCE_INTERFACE_P_H_1241041454
+#define INSTANCE_INTERFACE_P_H_1241041454
 
 #include <QtCore/QObject>
 #include <QtCore/QByteArray>
@@ -37,24 +37,24 @@ public:
     ~InstanceInterface();
 
 public Q_SLOTS: // METHODS
-    inline QDBusReply<void> Register(int pid, const QString &name)
+    inline QDBusPendingReply<> Register(int pid, const QString &name)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(pid) << qVariantFromValue(name);
-        return callWithArgumentList(QDBus::Block, QLatin1String("Register"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("Register"), argumentList);
     }
 
-    inline QDBusReply<void> Unregister(int pid)
+    inline QDBusPendingReply<> Unregister(int pid)
     {
         QList<QVariant> argumentList;
         argumentList << qVariantFromValue(pid);
-        return callWithArgumentList(QDBus::Block, QLatin1String("Unregister"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("Unregister"), argumentList);
     }
 
-    inline QDBusReply<int> getRegistrationCount()
+    inline QDBusPendingReply<int> getRegistrationCount()
     {
         QList<QVariant> argumentList;
-        return callWithArgumentList(QDBus::Block, QLatin1String("getRegistrationCount"), argumentList);
+        return asyncCallWithArgumentList(QLatin1String("getRegistrationCount"), argumentList);
     }
 
 Q_SIGNALS: // SIGNALS
diff --git a/sflphone_kde/mainorig.cpp b/sflphone_kde/mainorig.cpp
deleted file mode 100644
index 83e9a18ed66d06404ac86dc9141461185f3ead6c..0000000000000000000000000000000000000000
--- a/sflphone_kde/mainorig.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2009 by Jérémy Quentin   *
- *   jeremy.quentin@gmail.com   *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
- ***************************************************************************/
-
-
-#include "sflphone_kde.h"
-#include <kapplication.h>
-#include <kaboutdata.h>
-#include <kcmdlineargs.h>
-#include <KDE/KLocale>
-
-static const char description[] =
-    I18N_NOOP("A KDE 4 Application");
-
-static const char version[] = "0.1";
-
-int main(int argc, char **argv)
-{
-    KAboutData about("sflphone_kde", 0, ki18n("sflphone_kde"), version, ki18n(description),
-	                 KAboutData::License_GPL, ki18n("(C) 2009 Jérémy Quentin"), KLocalizedString(), 0, "jeremy.quentin@gmail.com");
-    about.addAuthor( ki18n("Jérémy Quentin"), KLocalizedString(), "jeremy.quentin@gmail.com" );
-    KCmdLineArgs::init(argc, argv, &about);
-
-    KCmdLineOptions options;
-    options.add("+[URL]", ki18n( "Document to open" ));
-    KCmdLineArgs::addCmdLineOptions(options);
-    KApplication app;
-
-    sflphone_kde *widget = new sflphone_kde;
-
-    // see if we are starting with session management
-    if (app.isSessionRestored())
-    {
-        RESTORE(sflphone_kde);
-    }
-    else
-    {
-        // no session.. just start up normally
-        KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
-        if (args->count() == 0)
-        {
-            //sflphone_kde *widget = new sflphone_kde;
-            widget->show();
-        }
-        else
-        {
-            int i = 0;
-            for (; i < args->count(); i++)
-            {
-                //sflphone_kde *widget = new sflphone_kde;
-                widget->show();
-            }
-        }
-        args->clear();
-    }
-
-    return app.exec();
-}
diff --git a/sflphone_kde/settings.kcfgc b/sflphone_kde/settings.kcfgc
deleted file mode 100644
index a535f22e557a69d838c0695ce8a554ef6d9f71bc..0000000000000000000000000000000000000000
--- a/sflphone_kde/settings.kcfgc
+++ /dev/null
@@ -1,6 +0,0 @@
-# Code generation options for kconfig_compiler
-File=sflphone_kde.kcfg
-ClassName=Settings
-Singleton=true
-Mutators=col_background,col_foreground
-# will create the necessary code for setting those variables
diff --git a/sflphone_kde/sflphone_kdeview.cpp b/sflphone_kde/sflphone_kdeview.cpp
index 70f80e4a79cd85bf53d526ff088993a25a948271..6471414180bca1dcf2750f82f332ece168ef0414 100644
--- a/sflphone_kde/sflphone_kdeview.cpp
+++ b/sflphone_kde/sflphone_kdeview.cpp
@@ -19,7 +19,6 @@
  ***************************************************************************/
 
 #include "sflphone_kdeview.h"
-//#include "settings.h"
 
 #include <klocale.h>
 #include <QtGui/QLabel>
@@ -42,7 +41,6 @@
 #include <kabc/addressbook.h>
 #include <kabc/stdaddressbook.h>
 #include <kabc/addresseelist.h>
-//#include <kabc/ldapclient.h>
 
 using namespace KABC;
 
@@ -64,8 +62,6 @@ sflphone_kdeView::sflphone_kdeView(QWidget *parent)
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
 	connect(&callManager, SIGNAL(callStateChanged(const QString &, const QString &)),
 	        this,         SLOT(on1_callStateChanged(const QString &, const QString &)));
-	connect(&callManager, SIGNAL(error(MapStringString)),
-	        this,         SLOT(on1_error(MapStringString)));
 	connect(&callManager, SIGNAL(incomingCall(const QString &, const QString &, const QString &)),
 	        this,         SLOT(on1_incomingCall(const QString &, const QString &)));
 	connect(&callManager, SIGNAL(incomingMessage(const QString &, const QString &)),