diff --git a/objects/pcie_slot_present_obj.c b/objects/pcie_slot_present_obj.c
index 5b150b5..cceb637 100644
--- a/objects/pcie_slot_present_obj.c
+++ b/objects/pcie_slot_present_obj.c
@@ -1,22 +1,25 @@
 #include "interfaces/openbmc_intf.h"
 #include "openbmc.h"
 #include <stdio.h>
+#include <stdbool.h>
 #include "gpio.h"
-#define NUM_SLOTS 8
+
+#define NUM_SLOTS 4
 GPIO slots[NUM_SLOTS] = {
-	{ "SLOT0_RISER_PRESENT" },
-	{ "SLOT1_RISER_PRESENT" },
-	{ "SLOT2_RISER_PRESENT" },
+//	{ "SLOT0_RISER_PRESENT" },
+//	{ "SLOT1_RISER_PRESENT" },
+//	{ "SLOT2_RISER_PRESENT" },
 	{ "SLOT0_PRESENT" },
 	{ "SLOT1_PRESENT" },
 	{ "SLOT2_PRESENT" },
 	{ "MEZZ0_PRESENT" },
-	{ "MEZZ1_PRESENT" },
+//	{ "MEZZ1_PRESENT" },
 };
 
 typedef struct {
 	const char* bus_name;
 	const char* path;
+	const char* intf_name;
 } object_info;
 	
 
@@ -39,30 +42,16 @@
                                    NULL,
                                    &error);
 	g_assert_no_error (error);
-	const gchar* bus_name;
-	const gchar* obj_path;
-	gsize bus_name_size;
-	gsize obj_path_size;
+
 	GVariantIter *iter = g_variant_iter_new(result);
-	GVariant* dict = g_variant_iter_next_value(iter);
+	GVariant* v_result = g_variant_iter_next_value(iter);
 
-	GVariant* b = g_variant_lookup_value(dict,"bus_name",(const GVariantType *) "s");
-	bus_name = g_variant_get_string(b,&bus_name_size);
-	GVariant* o = g_variant_lookup_value(dict,"obj_path",(const GVariantType *) "s");
-	obj_path = g_variant_get_string(o,&obj_path_size);
-
-	int rc = 0;
-	if (bus_name_size ==  0 || obj_path_size == 0) {
-		g_print("ERROR: gpio %s not found in lookup\n",gpio->name);
+	g_variant_get(v_result,"(sss)",&obj_info->bus_name,&obj_info->path,&obj_info->intf_name);
+int rc=0;
+	if (strcmp(obj_info->bus_name,"") == 0) {
 		rc = 1;
-
-	} else {
-		obj_info->bus_name = bus_name;
-		obj_info->path = obj_path;
 	}
-	g_variant_unref(b);
-	g_variant_unref(o);
-	g_variant_unref(dict);
+	g_variant_unref(v_result);
 	g_variant_unref(result);
 
 	return rc;
@@ -89,7 +78,7 @@
 	return rc; 
 }
 
-void update_fru_obj(GDBusConnection* connection, object_info* obj_info, uint8_t state)
+void update_fru_obj(GDBusConnection* connection, object_info* obj_info, bool present)
 {
 	GDBusProxy *proxy;
  	GError *error;
@@ -102,16 +91,16 @@
                              NULL,                      /* GDBusInterfaceInfo* */
                              obj_info->bus_name, /* name */
                              obj_info->path, /* object path */
-                             "org.openbmc.SensorValue",        /* interface name */
+                             obj_info->intf_name,        /* interface name */
                              NULL,                      /* GCancellable */
                              &error);
 	g_assert_no_error (error);
 
 	error = NULL;
-	parm = g_variant_new("(y)",state);
+	parm = g_variant_new("(b)",present);
 	
 	result = g_dbus_proxy_call_sync (proxy,
-                                   "setValue",
+                                   "setPresent",
 				   parm,
                                    G_DBUS_CALL_FLAGS_NONE,
                                    -1,
@@ -153,13 +142,15 @@
 	{
 		object_info obj_info;
 		uint8_t present;
+		bool b_present=false;
 		do {
 			rc = get_object(sys_proxy,&slots[i],&obj_info);
 			if (rc) { break; }
 			rc = get_presence(c,&slots[i],&present);
-			if (rc) { break; }
+			if (present==1) { b_present=true; }
+			//if (rc) { break; }
 			// TODO: send correct state
-			update_fru_obj(c,&obj_info,present);
+			update_fru_obj(c,&obj_info,b_present);
 		} while(0);
 	}
 
