diff --git a/classes/obmc-phosphor-dbus-service.bbclass b/classes/obmc-phosphor-dbus-service.bbclass
new file mode 100644
index 0000000..9e757bc
--- /dev/null
+++ b/classes/obmc-phosphor-dbus-service.bbclass
@@ -0,0 +1,17 @@
+# Common code for applications providing a D-Bus service.
+
+# Class users should define DBUS_SERVICES prior to including.
+
+python() {
+        services = d.getVar('DBUS_SERVICES', True).split()
+        uris = " ".join( [ 'file://' + s + '.conf' for s in services ] )
+        d.appendVar('SRC_URI', uris)
+}
+
+do_install_append() {
+        # install the service configuration files
+        install -d ${D}${sysconfdir}/dbus-1/system.d
+        for s in ${DBUS_SERVICES}; do
+                install ${WORKDIR}/$s.conf ${D}${sysconfdir}/dbus-1/system.d/$s.conf
+        done
+}
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/files/Makefile b/common/recipes-phosphor/obmc-phosphor-qemu/files/Makefile
deleted file mode 100644
index 6517af0..0000000
--- a/common/recipes-phosphor/obmc-phosphor-qemu/files/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-EXE     = obmc-phosphor-qemu
-OBJS    = $(EXE).o
-PACKAGES= gio-unix-2.0 glib-2.0
-INCLUDES += $(shell pkg-config --cflags $(PACKAGES))
-LIBS += $(shell pkg-config --libs $(PACKAGES))
-CC      = $(CROSS_COMPILE)gcc
-
-%.o : %.c
-	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
-$(EXE): $(OBJS)
-	$(CC) $(LDFLAGS) $(LIBS) $^ -o $@
-clean:
-	rm -f $(OBJS) $(EXE) *.o *.d
-distclean: clean
-	rm -f *.c~ *.h~ *.sh~ Makefile~ config.mk~
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.c b/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.c
deleted file mode 100644
index 8076132..0000000
--- a/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <gio/gio.h>
-
-int main(int argc, char *argv[])
-{
-	printf("obmc-phosphor-qemu...\n");
-
-	while(1)
-		sleep(5);
-
-	exit(EXIT_SUCCESS);
-}
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.py b/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.py
new file mode 100644
index 0000000..3ef8e85
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+
+# Contributors Listed Below - COPYRIGHT 2015
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+
+import sys
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import gobject
+
+SERVICE_PREFIX = 'org.openbmc.examples.services'
+IFACE_PREFIX = 'org.openbmc.examples.interfaces'
+BASE_OBJ_PATH = '/org/openbmc/examples/'
+
+class SampleObjectOne(dbus.service.Object):
+	def __init__(self, bus, name):
+		super(SampleObjectOne, self).__init__(bus, name)
+
+	@dbus.service.method(IFACE_PREFIX + '.Interface0', 's', 's')
+	def echo(self, val):
+		return str(type(self).__name__) + ": " + val
+
+class SampleObjectTwo(SampleObjectOne):
+	def __init__(self, bus, name):
+		super(SampleObjectTwo, self).__init__(bus, name)
+		self.map = {}
+
+	@dbus.service.method(IFACE_PREFIX + '.Interface1', 'ss', '')
+	def set_a_value_in_the_dict(self, key, value):
+		self.map[key] = value
+
+	@dbus.service.method(IFACE_PREFIX + '.Interface1', 's', 's')
+	def get_a_value_from_the_dict(self, key):
+		return self.map.get(key, "set a value first")
+
+	@dbus.service.method(IFACE_PREFIX + '.Interface1', '', 's')
+	def get_all_values_from_the_dict(self):
+		return " ".join( [ x+ ':' + self.map[x] for x in self.map.keys() ] )
+
+if __name__ == '__main__':
+	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+	bus = dbus.SystemBus()
+
+	services = []
+	services.append(dbus.service.BusName(SERVICE_PREFIX + '.Service0', bus))
+	services.append(dbus.service.BusName(SERVICE_PREFIX + '.Service1', bus))
+
+	objs = []
+	objs.append(SampleObjectOne(bus, BASE_OBJ_PATH + 'path0/Obj'))
+	objs.append(SampleObjectTwo(bus, BASE_OBJ_PATH + 'path1/Obj'))
+
+	mainloop = gobject.MainLoop()
+
+	print "obmc-phosphor-qemu starting..."
+	mainloop.run()
+
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/files/org.openbmc.examples.services.Service0.conf b/common/recipes-phosphor/obmc-phosphor-qemu/files/org.openbmc.examples.services.Service0.conf
new file mode 100644
index 0000000..1c6c505
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-qemu/files/org.openbmc.examples.services.Service0.conf
@@ -0,0 +1,8 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+  <policy user="root">
+    <allow own="org.openbmc.examples.services.Service0"/>
+    <allow send_destination="org.openbmc.examples.services.Service0"/>
+  </policy>
+</busconfig>
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/files/org.openbmc.examples.services.Service1.conf b/common/recipes-phosphor/obmc-phosphor-qemu/files/org.openbmc.examples.services.Service1.conf
new file mode 100644
index 0000000..cd488d5
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-qemu/files/org.openbmc.examples.services.Service1.conf
@@ -0,0 +1,8 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+  <policy user="root">
+    <allow own="org.openbmc.examples.services.Service1"/>
+    <allow send_destination="org.openbmc.examples.services.Service1"/>
+  </policy>
+</busconfig>
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/obmc-phosphor-qemu.bb b/common/recipes-phosphor/obmc-phosphor-qemu/obmc-phosphor-qemu.bb
index 3e4541d..0ea5355 100644
--- a/common/recipes-phosphor/obmc-phosphor-qemu/obmc-phosphor-qemu.bb
+++ b/common/recipes-phosphor/obmc-phosphor-qemu/obmc-phosphor-qemu.bb
@@ -2,4 +2,11 @@
 DESCRIPTION = "Phosphor OpenBMC QEMU BSP example implementation."
 PR = "r1"
 
-inherit obmc-phosphor-c-daemon
+inherit obmc-phosphor-py-daemon
+
+DBUS_SERVICES = " \
+        org.openbmc.examples.services.Service0 \
+        org.openbmc.examples.services.Service1 \
+        "
+
+inherit obmc-phosphor-dbus-service
