diff --git a/pciedetect/pcie_slot_present_obj.c b/pciedetect/pcie_slot_present_obj.c
index a2e7fd8..852a42a 100644
--- a/pciedetect/pcie_slot_present_obj.c
+++ b/pciedetect/pcie_slot_present_obj.c
@@ -26,13 +26,52 @@
 
 
 /* ------------------------------------------------------------------------- */
+void
+get_service(GDBusConnection *connection, const char *obj,
+		const char **service, GError **error)
+{
+	GDBusProxy *proxy;
+	GVariant *result = NULL;
+	GVariantIter *iter;
+
+	*error = NULL;
+	proxy = g_dbus_proxy_new_sync(connection,
+			G_DBUS_PROXY_FLAGS_NONE,
+			NULL, /* GDBusInterfaceInfo* */
+			"org.openbmc.ObjectMapper", /* name */
+			"/org/openbmc/ObjectMapper", /* object path */
+			"org.openbmc.ObjectMapper", /* interface name */
+			NULL, /* GCancellable */
+			error);
+
+	result = g_dbus_proxy_call_sync(proxy,
+			"GetObject",
+			g_variant_new("(s)", obj),
+			G_DBUS_CALL_FLAGS_NONE,
+			-1,
+			NULL,
+			error);
+	if(*error)
+		goto exit;
+
+	g_variant_get(result, "(a{sas})", &iter);
+	g_variant_iter_next(iter, "{sas}", service, NULL);
+
+exit:
+	if(result)
+		g_variant_unref(result);
+}
+
 int
-get_object(GDBusProxy *proxy, GPIO* gpio, object_info* obj_info)
+get_object(GDBusConnection *connection, GDBusProxy *proxy,
+		GPIO* gpio, object_info* obj_info)
 {
 	g_print("Checking Presence: %s\n",gpio->name);
+	const char *gpio_bus = NULL;
 	GError *error;
 	GVariant *parm;
 	GVariant *result;
+	int rc=0;
 
 	error = NULL;
 	parm = g_variant_new("(ss)","GPIO_PRESENT",gpio->name);
@@ -44,13 +83,22 @@
 			NULL,
 			&error);
 	g_assert_no_error(error);
+	if(error)
+		goto exit;
 
 	GVariantIter *iter = g_variant_iter_new(result);
 	GVariant* v_result = g_variant_iter_next_value(iter);
 
-	g_variant_get(v_result,"(sss)",&obj_info->bus_name,&obj_info->path,&obj_info->intf_name);
-	int rc=0;
-	if(strlen(obj_info->bus_name) == 0) {
+	g_variant_get(v_result,"(ss)",&obj_info->path,&obj_info->intf_name);
+
+	get_service(connection, obj_info->path, &gpio_bus, &error);
+	if(error)
+		goto exit;
+
+	obj_info->bus_name = gpio_bus;
+
+exit:
+	if(!gpio_bus || strlen(gpio_bus) == 0) {
 		rc = 1;
 	}
 	g_variant_unref(v_result);
@@ -116,6 +164,8 @@
 gint
 main(gint argc, gchar *argv[])
 {
+	const char *sysmgr_path = "/org/openbmc/managers/System";
+	const char *sysmgr_bus = NULL;
 	GMainLoop *loop;
 	GDBusConnection *c;
 	GDBusProxy *sys_proxy;
@@ -125,17 +175,24 @@
 
 	error = NULL;
 	c = g_bus_get_sync(DBUS_TYPE, NULL, &error);
+	if(error)
+		goto exit;
 
-	error = NULL;
+	get_service(c, sysmgr_path, &sysmgr_bus, &error);
+	if(error)
+		goto exit;
+
 	sys_proxy = g_dbus_proxy_new_sync(c,
 			G_DBUS_PROXY_FLAGS_NONE,
 			NULL, /* GDBusInterfaceInfo* */
-			"org.openbmc.managers.System", /* name */
-			"/org/openbmc/managers/System", /* object path */
+			sysmgr_bus, /* name */
+			sysmgr_path, /* object path */
 			"org.openbmc.managers.System", /* interface name */
 			NULL, /* GCancellable */
 			&error);
 	g_assert_no_error(error);
+	if(error)
+		goto exit;
 
 	int i = 0;
 	int rc = 0;
@@ -144,7 +201,7 @@
 		object_info obj_info;
 		uint8_t present;
 		do {
-			rc = get_object(sys_proxy,&slots[i],&obj_info);
+			rc = get_object(c,sys_proxy,&slots[i],&obj_info);
 			if(rc) { break; }
 			rc = get_presence(c,&slots[i],&present);
 			//if (rc) { break; }
@@ -157,6 +214,9 @@
 		} while(0);
 	}
 
+exit:
+	if(sysmgr_bus)
+		g_free((char *)sysmgr_bus);
 	g_object_unref(c);
 	g_main_loop_unref(loop);
 	return 0;
