diff --git a/rest-dbus b/rest-dbus
index 34fcb65..ddd958b 100644
--- a/rest-dbus
+++ b/rest-dbus
@@ -6,7 +6,7 @@
 import json
 import os
 import sys
-from xml.etree import ElementTree
+from OpenBMCMapper import IntrospectionParser
 
 busses = {
     'system': dbus.SystemBus,
@@ -98,35 +98,9 @@
         return obj
 
     def handle_service(self, bus_name):
-        objects = []
+        data = IntrospectionParser(bus_name, self.bus).introspect()
+        objects = [ { 'path': x } for x in data.iterkeys() ]
 
-        def parse_introspection_data(data):
-            tree = ElementTree.fromstring(data)
-            children = []
-            has_interfaces = False
-            for node in tree:
-                if node.tag == 'node':
-                    children.append(node.attrib['name'])
-                elif node.tag == 'interface':
-                    has_interfaces = True
-            return (has_interfaces, children)
-
-        def walk_object_tree(obj_path):
-            obj = self.get_object_or_404(bus_name, obj_path)
-
-            iface = dbus.Interface(obj, 'org.freedesktop.DBus.Introspectable')
-            data = iface.Introspect()
-            (has_interfaces, children) = parse_introspection_data(data)
-            if has_interfaces:
-                objects.append({'path': obj_path})
-            for child in children:
-                if obj_path == '/':
-                    obj_path = ''
-
-                walk_object_tree('/'.join([obj_path, child]))
-                
-
-        walk_object_tree('/')
         return DBusRestJSONResponse({
             'status': 'ok',
             'bus_name': bus_name,
