diff --git a/objects/board_vpd_obj.c b/objects/board_vpd_obj.c
index 11b2ab6..42c8bfe 100644
--- a/objects/board_vpd_obj.c
+++ b/objects/board_vpd_obj.c
@@ -45,6 +45,10 @@
 	
 	//g_main_loop_run (loop);
 	//g_bus_unown_name (id);
+	//g_variant_unref(result);
+	//g_variant_unref(parm);
+	g_object_unref(p);
+	g_object_unref(c);
  	g_main_loop_unref (loop);
  	return 0;
 }
diff --git a/objects/power_control_obj.c b/objects/power_control_obj.c
index 0190fdf..3395502 100644
--- a/objects/power_control_obj.c
+++ b/objects/power_control_obj.c
@@ -9,11 +9,13 @@
 #include "interfaces/openbmc_intf.h"
 #include "openbmc.h"
 #include "gpio.h"
+#include "event_log.h"
 
 /* ---------------------------------------------------------------------------------------------------- */
 static const gchar* dbus_object_path = "/org/openbmc/control";
 static const gchar* dbus_name        = "org.openbmc.control.Power";
 
+//This object will use these GPIOs
 GPIO power_pin    = (GPIO){ "POWER_PIN" };
 GPIO pgood        = (GPIO){ "PGOOD" };
 
@@ -21,6 +23,7 @@
 
 guint tmp_pgood = 0;
 guint last_pgood = 0;
+guint pgood_timeout_count = 0;
 
 static gboolean poll_pgood(gpointer user_data)
 {
@@ -28,7 +31,17 @@
 	Control* control = object_get_control((Object*)user_data);
 	EventLog* event_log = object_get_event_log((Object*)user_data);
 	control_emit_heartbeat(control,dbus_name);
+	const gchar* obj_path = g_dbus_object_get_object_path((GDBusObject*)user_data);
 
+	guint pgood_timeout = control_power_get_pgood_timeout(control_power)/
+		control_get_poll_interval(control);
+
+	if (pgood_timeout_count > pgood_timeout)
+	{
+		event_log_emit_event_log(event_log, FATAL, "Pgood poll timeout");
+		control_power_set_pgood_timeout(control_power,0);
+		//return FALSE;
+	}
 	//For simulation, remove
 	if (tmp_pgood!=last_pgood) {
 		if (tmp_pgood == 1) {
@@ -39,21 +52,38 @@
 	}
 
 	last_pgood = tmp_pgood;
-	uint8_t gpio = gpio_read(&pgood);
-	//if changed, set property and emit signal
-	if (gpio != control_power_get_pgood(control_power))
+	uint8_t gpio;
+	int rc = gpio_read(&pgood,&gpio);
+	if (rc == GPIO_OK)
 	{
- 		control_power_set_pgood(control_power,gpio);
- 		if (gpio==0)
- 		{
- 			control_power_emit_power_lost(control_power);
-			control_emit_goto_system_state(control,"POWERED_OFF");
- 		}
- 		else
- 		{
- 			control_power_emit_power_good(control_power);
-			control_emit_goto_system_state(control,"POWERED_ON");
- 		}
+		//if changed, set property and emit signal
+		if (gpio != control_power_get_pgood(control_power))
+		{
+ 			control_power_set_pgood(control_power,gpio);
+ 			if (gpio==0)
+ 			{
+ 				control_power_emit_power_lost(control_power);
+				control_emit_goto_system_state(control,"POWERED_OFF");
+ 			}
+ 			else
+ 			{
+ 				control_power_emit_power_good(control_power);
+				control_emit_goto_system_state(control,"POWERED_ON");
+ 			}
+		}
+	} else {
+		event_log_emit_event_log(event_log, FATAL, "GPIO read error");
+		//return FALSE;
+	}
+	//pgood is not at desired state yet
+	if (gpio != control_power_get_state(control_power) &&
+		control_power_get_pgood_timeout(control_power) != 0)
+	{
+		pgood_timeout_count++;
+	}
+	else 
+	{
+		pgood_timeout_count = 0;
 	}
 	return TRUE;
 }
@@ -67,6 +97,8 @@
                 gpointer                user_data)
 {
 	Control* control = object_get_control((Object*)user_data);
+	EventLog* event_log = object_get_event_log((Object*)user_data);
+	const gchar* obj_path = g_dbus_object_get_object_path((GDBusObject*)user_data);
 	if (state > 1)
 	{
 		g_dbus_method_invocation_return_dbus_error (invocation,
@@ -85,17 +117,23 @@
 		g_print("Set power state: %d\n",state);
 		//temporary until real hardware works
 		tmp_pgood = state;
-		gpio_open(&power_pin);
-		gpio_write(&power_pin,!state); 
-		gpio_close(&power_pin);
-		control_power_set_state(pwr,state);
-		if (state == 1)
+		int error = 0;
+		do {
+			error = gpio_open(&power_pin);
+			if (error != GPIO_OK) {	break;	}
+			error = gpio_write(&power_pin,!state);
+			if (error != GPIO_OK) {	break;	}
+			gpio_close(&power_pin);
+			control_power_set_state(pwr,state);
+			if (state == 1) {
+				control_emit_goto_system_state(control,"POWERING_ON");
+			} else {
+				control_emit_goto_system_state(control,"POWERING_OFF");
+			}
+		} while(0);
+		if (error != GPIO_OK)
 		{
-			control_emit_goto_system_state(control,"POWERING_ON");
-		}
-		else
-		{
-			control_emit_goto_system_state(control,"POWERING_OFF");
+			event_log_emit_event_log(event_log, FATAL, "GPIO setup error");
 		}
 	}
 	return TRUE;
@@ -183,9 +221,15 @@
 	g_dbus_object_manager_server_set_connection (manager, connection);
 
 	// get gpio device paths
-	gpio_init(connection,&power_pin);
-	gpio_init(connection,&pgood);
-	gpio_open(&pgood);
+	do {
+		int rc = GPIO_OK;
+		rc = gpio_init(connection,&power_pin);
+		if (rc != GPIO_OK) { break; }
+		rc = gpio_init(connection,&pgood);
+		if (rc != GPIO_OK) { break; }
+		rc = gpio_open(&pgood);
+		if (rc != GPIO_OK) { break; }
+	} while(0);
 }
 
 static void
diff --git a/objects/sensor_temperature_ambient_obj.c b/objects/sensor_temperature_ambient_obj.c
index fab2f1a..a70fb62 100644
--- a/objects/sensor_temperature_ambient_obj.c
+++ b/objects/sensor_temperature_ambient_obj.c
@@ -27,6 +27,8 @@
 	//	sensor_i2c_get_dev_path(i2c),sensor_i2c_get_address(i2c),value);
 
 	value = value+1;
+	// Do this in case of an error
+	//sensor_value_emit_error(sensor);
 
 	if (heartbeat > 4000)
 	{
