diff --git a/daemon/configure.ac b/daemon/configure.ac
index eb32f13813477aca5a05cd36f0ab484426b334f2..e526ab63931a97455fb46633ac409407d06bd126 100644
--- a/daemon/configure.ac
+++ b/daemon/configure.ac
@@ -374,6 +374,7 @@ AC_CONFIG_FILES([Makefile \
                  src/audio/codecs/Makefile \
                  src/config/Makefile \
                  src/client/Makefile \
+                 src/client/dbus/Makefile \
                  src/hooks/Makefile \
                  src/history/Makefile \
                  src/video/Makefile \
diff --git a/daemon/src/Makefile.am b/daemon/src/Makefile.am
index b9ec46ef7d3553d4690dca81c72d80c5afde8a89..e91c14d8863b4b59bedfd1b8f8f09ffe7b6a28e0 100644
--- a/daemon/src/Makefile.am
+++ b/daemon/src/Makefile.am
@@ -41,7 +41,7 @@ libsflphone_la_LIBADD = \
 	$(IAX_LIB) \
 	./sip/libsiplink.la \
 	./audio/libaudio.la \
-	./client/libclient.la \
+	./client/dbus/libclient.la \
 	./config/libconfig.la \
 	./hooks/libhooks.la \
 	./history/libhistory.la $(SFL_VIDEO_LIB) $(IM_LIB)
diff --git a/daemon/src/account.cpp b/daemon/src/account.cpp
index 2d8e5ff9f661c24305840037b4ca673e11870e6d..3a5a2836dd3666bb4f33d41d6a06b210691cd437 100644
--- a/daemon/src/account.cpp
+++ b/daemon/src/account.cpp
@@ -44,7 +44,7 @@
 #include "manager.h"
 
 #ifndef __ANDROID__
-#include "client/configurationmanager.h"
+#include "client/dbus/configurationmanager.h"
 #else
 #include "client/android/configurationmanager.h"
 #include "client/android/jni_callbacks.h"
diff --git a/daemon/src/audio/alsa/alsalayer.cpp b/daemon/src/audio/alsa/alsalayer.cpp
index 961dcb6ba8bcd5867787028c01fab0f38d370935..46abe187b646cded1fc30374bf8a684880626913 100644
--- a/daemon/src/audio/alsa/alsalayer.cpp
+++ b/daemon/src/audio/alsa/alsalayer.cpp
@@ -37,7 +37,7 @@
 #include "logger.h"
 #include "manager.h"
 #include "noncopyable.h"
-#include "client/configurationmanager.h"
+#include "client/dbus/configurationmanager.h"
 #include <ctime>
 
 #define SFL_ALSA_PERIOD_SIZE 160
diff --git a/daemon/src/audio/audioloop.cpp b/daemon/src/audio/audioloop.cpp
index 46d29c28cd659def3a0f910d13df7b33bf3688aa..857259f42146640c7c97f2379c0687010c35a898 100644
--- a/daemon/src/audio/audioloop.cpp
+++ b/daemon/src/audio/audioloop.cpp
@@ -34,7 +34,7 @@
 
 #include "audioloop.h"
 #include "manager.h"
-#include "client/callmanager.h"
+#include "client/dbus/callmanager.h"
 #include <cmath>
 #include <numeric>
 #include <cstring>
diff --git a/daemon/src/audio/audiortp/zrtp_session_callback.cpp b/daemon/src/audio/audiortp/zrtp_session_callback.cpp
index 4106c7401d25c5935336d61a4ae20f45100b1614..b2c502a5f3496a4a0f2b2aed8f91e2b7f7c8cf31 100644
--- a/daemon/src/audio/audiortp/zrtp_session_callback.cpp
+++ b/daemon/src/audio/audiortp/zrtp_session_callback.cpp
@@ -31,7 +31,7 @@
 #include "logger.h"
 #include "sip/sipcall.h"
 #include "client/client.h"
-#include "client/callmanager.h"
+#include "client/dbus/callmanager.h"
 #include "manager.h"
 
 #include <cstdlib>
diff --git a/daemon/src/client/Makefile.am b/daemon/src/client/Makefile.am
index d1476f23c72cc4c22f93115d76032dac9cf884ae..ee8f397a3a2d28aaee475e55c0fef64e3db22175 100644
--- a/daemon/src/client/Makefile.am
+++ b/daemon/src/client/Makefile.am
@@ -1,86 +1 @@
-include $(top_srcdir)/globals.mak
-
-noinst_LTLIBRARIES = libclient.la
-
-BUILT_SOURCES=                      \
-    callmanager-glue.h              \
-    configurationmanager-glue.h     \
-    instance-glue.h
-
-if SFL_VIDEO
-BUILT_SOURCES+=video_controls-glue.h
-video_controls-glue.h: video_controls-introspec.xml Makefile.am
-	dbusxx-xml2cpp $< --adaptor=$@
-endif
-
-# Rule to generate the binding headers
-callmanager-glue.h: callmanager-introspec.xml Makefile.am
-	dbusxx-xml2cpp $< --adaptor=$@
-
-# Rule to generate the binding headers
-configurationmanager-glue.h: configurationmanager-introspec.xml Makefile.am
-	dbusxx-xml2cpp $< --adaptor=$@
-
-# Rule to generate the binding headers
-instance-glue.h: instance-introspec.xml Makefile.am
-	dbusxx-xml2cpp $< --adaptor=$@
-
-libclient_la_SOURCES = \
-    callmanager.cpp \
-    configurationmanager.cpp  \
-    instance.cpp  \
-    client.cpp
-
-if SFL_VIDEO
-libclient_la_SOURCES+=video_controls.cpp
-endif
-
-if USE_NETWORKMANAGER
-libclient_la_SOURCES += networkmanager.cpp
-NETWORKMANAGER=-DUSE_NETWORKMANAGER
-else
-NETWORKMANAGER=
-endif
-
-libclient_la_CXXFLAGS = \
-            -DPREFIX=\"$(prefix)\" \
-            -DPROGSHAREDIR=\"${datadir}/sflphone\" \
-            $(NETWORKMANAGER)
-
-
-noinst_HEADERS =            \
-    callmanager.h           \
-    configurationmanager.h  \
-    instance.h              \
-    client.h                \
-    networkmanager_proxy.h  \
-    networkmanager.h        \
-    dbus_cpp.h        		\
-    $(BUILT_SOURCES)
-
-if SFL_VIDEO
-noinst_HEADERS+=video_controls.h
-endif
-
-# Dbus service file
-servicedir = $(datadir)/dbus-1/services
-service_in_files = org.sflphone.SFLphone.service.in
-service_DATA = $(service_in_files:.service.in=.service)
-
-# Rule to make the service file with bindir expanded
-$(service_DATA): $(service_in_files) Makefile
-	sed -e "s|libexec|$(libdir)/sflphone|" $<> $@
-
-EXTRA_DIST = README $(service_in_files) \
-			 callmanager-introspec.xml \
-			 configurationmanager-introspec.xml \
-			 instance-introspec.xml \
-			 org.freedesktop.NetworkManager.xml
-
-if SFL_VIDEO
-EXTRA_DIST += video_controls-introspec.xml
-endif
-
-CLEANFILES= \
-    $(BUILT_SOURCES) \
-	org.sflphone.SFLphone.service
+SUBDIRS=dbus
diff --git a/daemon/src/client/dbus/Makefile.am b/daemon/src/client/dbus/Makefile.am
new file mode 100644
index 0000000000000000000000000000000000000000..3fb1b4f646ce90229d30437fb4cb3da78c778c10
--- /dev/null
+++ b/daemon/src/client/dbus/Makefile.am
@@ -0,0 +1,86 @@
+include $(top_srcdir)/globals.mak
+
+noinst_LTLIBRARIES = libclient.la
+
+BUILT_SOURCES=                      \
+    callmanager-glue.h              \
+    configurationmanager-glue.h     \
+    instance-glue.h
+
+if SFL_VIDEO
+BUILT_SOURCES+=video_controls-glue.h
+video_controls-glue.h: video_controls-introspec.xml Makefile.am
+	dbusxx-xml2cpp $< --adaptor=$@
+endif
+
+# Rule to generate the binding headers
+callmanager-glue.h: callmanager-introspec.xml Makefile.am
+	dbusxx-xml2cpp $< --adaptor=$@
+
+# Rule to generate the binding headers
+configurationmanager-glue.h: configurationmanager-introspec.xml Makefile.am
+	dbusxx-xml2cpp $< --adaptor=$@
+
+# Rule to generate the binding headers
+instance-glue.h: instance-introspec.xml Makefile.am
+	dbusxx-xml2cpp $< --adaptor=$@
+
+libclient_la_SOURCES = \
+    callmanager.cpp \
+    configurationmanager.cpp  \
+    instance.cpp  \
+    client.cpp
+
+if SFL_VIDEO
+libclient_la_SOURCES+=video_controls.cpp
+endif
+
+if USE_NETWORKMANAGER
+libclient_la_SOURCES += networkmanager.cpp
+NETWORKMANAGER=-DUSE_NETWORKMANAGER
+else
+NETWORKMANAGER=
+endif
+
+libclient_la_CXXFLAGS = -I../ \
+            -DPREFIX=\"$(prefix)\" \
+            -DPROGSHAREDIR=\"${datadir}/sflphone\" \
+            $(NETWORKMANAGER)
+
+
+noinst_HEADERS =            \
+    callmanager.h           \
+    configurationmanager.h  \
+    instance.h              \
+    ../client.h             \
+    networkmanager_proxy.h  \
+    networkmanager.h        \
+    dbus_cpp.h        		\
+    $(BUILT_SOURCES)
+
+if SFL_VIDEO
+noinst_HEADERS+=video_controls.h
+endif
+
+# Dbus service file
+servicedir = $(datadir)/dbus-1/services
+service_in_files = org.sflphone.SFLphone.service.in
+service_DATA = $(service_in_files:.service.in=.service)
+
+# Rule to make the service file with bindir expanded
+$(service_DATA): $(service_in_files) Makefile
+	sed -e "s|libexec|$(libdir)/sflphone|" $<> $@
+
+EXTRA_DIST = README $(service_in_files) \
+			 callmanager-introspec.xml \
+			 configurationmanager-introspec.xml \
+			 instance-introspec.xml \
+			 org.freedesktop.NetworkManager.xml
+
+if SFL_VIDEO
+EXTRA_DIST += video_controls-introspec.xml
+endif
+
+CLEANFILES= \
+    $(BUILT_SOURCES) \
+	org.sflphone.SFLphone.service
diff --git a/daemon/src/client/README b/daemon/src/client/dbus/README
similarity index 100%
rename from daemon/src/client/README
rename to daemon/src/client/dbus/README
diff --git a/daemon/src/client/callmanager-introspec.xml b/daemon/src/client/dbus/callmanager-introspec.xml
similarity index 100%
rename from daemon/src/client/callmanager-introspec.xml
rename to daemon/src/client/dbus/callmanager-introspec.xml
diff --git a/daemon/src/client/callmanager.cpp b/daemon/src/client/dbus/callmanager.cpp
similarity index 100%
rename from daemon/src/client/callmanager.cpp
rename to daemon/src/client/dbus/callmanager.cpp
diff --git a/daemon/src/client/callmanager.h b/daemon/src/client/dbus/callmanager.h
similarity index 100%
rename from daemon/src/client/callmanager.h
rename to daemon/src/client/dbus/callmanager.h
diff --git a/daemon/src/client/client.cpp b/daemon/src/client/dbus/client.cpp
similarity index 99%
rename from daemon/src/client/client.cpp
rename to daemon/src/client/dbus/client.cpp
index 3f92c540297f58b84abcf58f2f7fe3a5ffe64897..fd069f3a09e3ab5d72b919f2fdde3621780360d2 100644
--- a/daemon/src/client/client.cpp
+++ b/daemon/src/client/dbus/client.cpp
@@ -33,7 +33,7 @@
 #endif
 
 #include <cstdlib>
-#include "client.h"
+#include "client/client.h"
 #include "global.h"
 #include "manager.h"
 #include "logger.h"
diff --git a/daemon/src/client/configurationmanager-introspec.xml b/daemon/src/client/dbus/configurationmanager-introspec.xml
similarity index 100%
rename from daemon/src/client/configurationmanager-introspec.xml
rename to daemon/src/client/dbus/configurationmanager-introspec.xml
diff --git a/daemon/src/client/configurationmanager.cpp b/daemon/src/client/dbus/configurationmanager.cpp
similarity index 100%
rename from daemon/src/client/configurationmanager.cpp
rename to daemon/src/client/dbus/configurationmanager.cpp
diff --git a/daemon/src/client/configurationmanager.h b/daemon/src/client/dbus/configurationmanager.h
similarity index 100%
rename from daemon/src/client/configurationmanager.h
rename to daemon/src/client/dbus/configurationmanager.h
diff --git a/daemon/src/client/dbus_cpp.h b/daemon/src/client/dbus/dbus_cpp.h
similarity index 100%
rename from daemon/src/client/dbus_cpp.h
rename to daemon/src/client/dbus/dbus_cpp.h
diff --git a/daemon/src/client/instance-introspec.xml b/daemon/src/client/dbus/instance-introspec.xml
similarity index 100%
rename from daemon/src/client/instance-introspec.xml
rename to daemon/src/client/dbus/instance-introspec.xml
diff --git a/daemon/src/client/instance.cpp b/daemon/src/client/dbus/instance.cpp
similarity index 100%
rename from daemon/src/client/instance.cpp
rename to daemon/src/client/dbus/instance.cpp
diff --git a/daemon/src/client/instance.h b/daemon/src/client/dbus/instance.h
similarity index 100%
rename from daemon/src/client/instance.h
rename to daemon/src/client/dbus/instance.h
diff --git a/daemon/src/client/networkmanager.cpp b/daemon/src/client/dbus/networkmanager.cpp
similarity index 100%
rename from daemon/src/client/networkmanager.cpp
rename to daemon/src/client/dbus/networkmanager.cpp
diff --git a/daemon/src/client/networkmanager.h b/daemon/src/client/dbus/networkmanager.h
similarity index 100%
rename from daemon/src/client/networkmanager.h
rename to daemon/src/client/dbus/networkmanager.h
diff --git a/daemon/src/client/networkmanager_proxy.h b/daemon/src/client/dbus/networkmanager_proxy.h
similarity index 100%
rename from daemon/src/client/networkmanager_proxy.h
rename to daemon/src/client/dbus/networkmanager_proxy.h
diff --git a/daemon/src/client/org.freedesktop.NetworkManager.xml b/daemon/src/client/dbus/org.freedesktop.NetworkManager.xml
similarity index 100%
rename from daemon/src/client/org.freedesktop.NetworkManager.xml
rename to daemon/src/client/dbus/org.freedesktop.NetworkManager.xml
diff --git a/daemon/src/client/org.sflphone.SFLphone.service.in b/daemon/src/client/dbus/org.sflphone.SFLphone.service.in
similarity index 100%
rename from daemon/src/client/org.sflphone.SFLphone.service.in
rename to daemon/src/client/dbus/org.sflphone.SFLphone.service.in
diff --git a/daemon/src/client/video_controls-introspec.xml b/daemon/src/client/dbus/video_controls-introspec.xml
similarity index 100%
rename from daemon/src/client/video_controls-introspec.xml
rename to daemon/src/client/dbus/video_controls-introspec.xml
diff --git a/daemon/src/client/video_controls.cpp b/daemon/src/client/dbus/video_controls.cpp
similarity index 100%
rename from daemon/src/client/video_controls.cpp
rename to daemon/src/client/dbus/video_controls.cpp
diff --git a/daemon/src/client/video_controls.h b/daemon/src/client/dbus/video_controls.h
similarity index 100%
rename from daemon/src/client/video_controls.h
rename to daemon/src/client/dbus/video_controls.h
diff --git a/daemon/src/managerimpl.cpp b/daemon/src/managerimpl.cpp
index b11a8bcf46c47f3adacf2c9ebe487255c2dd9715..d73d389b120ad639845e5e0a402dfd2428487052 100644
--- a/daemon/src/managerimpl.cpp
+++ b/daemon/src/managerimpl.cpp
@@ -70,15 +70,15 @@
 #include "manager.h"
 
 #ifndef __ANDROID__
-#include "client/configurationmanager.h"
-#include "client/callmanager.h"
+#include "client/dbus/configurationmanager.h"
+#include "client/dbus/callmanager.h"
 #else
 #include "client/android/configurationmanager.h"
 #include "client/android/callmanager.h"
 #endif
 
 #ifdef SFL_VIDEO
-#include "client/video_controls.h"
+#include "client/dbus/video_controls.h"
 #endif
 
 #include "conference.h"
diff --git a/daemon/src/sip/sipcall.cpp b/daemon/src/sip/sipcall.cpp
index 5a1b7a0eb992eb8f714506fd4b2eb4f78ee3c415..43fb67ace7dc982e76a620b0d65c60d5dce65f30 100644
--- a/daemon/src/sip/sipcall.cpp
+++ b/daemon/src/sip/sipcall.cpp
@@ -36,7 +36,7 @@
 #include "sdp.h"
 #include "manager.h"
 #ifdef SFL_VIDEO
-#include "client/video_controls.h"
+#include "client/dbus/video_controls.h"
 #endif
 
 namespace {
diff --git a/daemon/src/sip/siptransport.cpp b/daemon/src/sip/siptransport.cpp
index 8d5dc25937d5161452afb9242af2c19068d78ced..212ca73567b1d941eacf898f5f7d6304808ca3b6 100644
--- a/daemon/src/sip/siptransport.cpp
+++ b/daemon/src/sip/siptransport.cpp
@@ -65,7 +65,7 @@
 #endif
 
 #ifndef __ANDROID__
-#include "client/configurationmanager.h"
+#include "client/dbus/configurationmanager.h"
 #else
 #include "client/android/configurationmanager.h"
 #endif
diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp
index b942651fb05f51e86d37d5c868e766b887bf214d..8cf53ae4d70f767466e4bd533b5622b783ebb787 100644
--- a/daemon/src/sip/sipvoiplink.cpp
+++ b/daemon/src/sip/sipvoiplink.cpp
@@ -61,7 +61,7 @@
 
 #ifdef SFL_VIDEO
 #include "video/video_rtp_session.h"
-#include "client/video_controls.h"
+#include "client/dbus/video_controls.h"
 #endif
 
 #ifdef __ANDROID__
@@ -73,8 +73,8 @@
 #include "client/android/callmanager.h"
 #else
 #include "client/client.h"
-#include "client/callmanager.h"
-#include "client/configurationmanager.h"
+#include "client/dbus/callmanager.h"
+#include "client/dbus/configurationmanager.h"
 #endif
 
 #include "pjsip/sip_endpoint.h"
diff --git a/daemon/src/video/video_receive_thread.cpp b/daemon/src/video/video_receive_thread.cpp
index 6b41a893f85bb7af97c659850a3f3d6250e488db..cfbf4d0b166d12642e0d77a70fe87fc9d2b62f99 100644
--- a/daemon/src/video/video_receive_thread.cpp
+++ b/daemon/src/video/video_receive_thread.cpp
@@ -31,7 +31,7 @@
 
 #include "video_receive_thread.h"
 #include "socket_pair.h"
-#include "client/video_controls.h"
+#include "client/dbus/video_controls.h"
 #include "check.h"
 #include "packet_handle.h"
 
diff --git a/daemon/src/video/video_send_thread.cpp b/daemon/src/video/video_send_thread.cpp
index dce2aa28aa1cdefe367cf0fb76343a83e3716101..32c7419c664ff63cfbe987815458609f0638647b 100644
--- a/daemon/src/video/video_send_thread.cpp
+++ b/daemon/src/video/video_send_thread.cpp
@@ -30,7 +30,7 @@
 
 #include "video_send_thread.h"
 #include "socket_pair.h"
-#include "client/video_controls.h"
+#include "client/dbus/video_controls.h"
 #include "packet_handle.h"
 #include "check.h"
 
diff --git a/daemon/src/video/video_v4l2_list.cpp b/daemon/src/video/video_v4l2_list.cpp
index 8fadb911600af9fa13aa9c0d4e6521df317413e8..e775e95862078e3dcd8fe3e4e803a5f49eb04eb8 100644
--- a/daemon/src/video/video_v4l2_list.cpp
+++ b/daemon/src/video/video_v4l2_list.cpp
@@ -52,7 +52,7 @@ extern "C" {
 
 #include "video_v4l2_list.h"
 #include "manager.h"
-#include "client/video_controls.h"
+#include "client/dbus/video_controls.h"
 
 namespace sfl_video {