diff --git a/Makefile b/Makefile
index 2c49960..9ff50ed 100644
--- a/Makefile
+++ b/Makefile
@@ -1,21 +1,21 @@
-CC=gcc
+#CC=gcc
 OBJS    = objects/pflash/progress.o objects/pflash/ast-sf-ctrl.o
 OBJS	+= objects/pflash/libflash/libflash.o objects/pflash/libflash/libffs.o
 OBJS	+= objects/pflash/arm_io.o
-LIBS=/gsa/ausgsa/home/n/j/njames/openbmc
-OFLAGS =-L$(HOME)/lib -lopenbmc_intf
-HOME = /media/sf_vbox/openbmc
-#CFLAGS=$(shell pkg-config --libs --cflags gtk+-2.0 glib-2.0)
-CFLAGS = -pthread -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgio-2.0 -lgobject-2.0 -lglib-2.0
+LIBS = ./bin
+OFLAGS =-L$(LIBS) -lopenbmc_intf
+HOME = .
+CFLAGS=$(shell pkg-config --libs --cflags gio-unix-2.0 glib-2.0)
+#CFLAGS = -pthread -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgio-2.0 -lgobject-2.0 -lglib-2.0
 
 %.o: interfaces/%.c 
 	$(CC) -c -fPIC -o obj/$@ $< -I$(HOME) -I$(HOME)/includes $(CFLAGS)
 
 %.o: objects/%.c
-	$(CC) -c -o obj/$@ $< -L$(HOME)/lib -I$(HOME) -I$(HOME)/includes -I$(HOME)/objects/pflash -lfru $(CFLAGS)
+	$(CC) -c -o obj/$@ $< -L$(LIBS) -I$(HOME) -I$(HOME)/includes -I$(HOME)/objects/pflash  $(CFLAGS)
 
 %.o: includes/%.c
-	$(CC) -c -o obj/$@ $< -I$(HOME) -I$(HOME)/includes -I$(HOME)/objects/pflash $(CFLAGS)
+	$(CC) -c -o obj/$@ $< -L$(LIBS) -I$(HOME) -I$(HOME)/includes -I$(HOME)/objects/pflash $(CFLAGS)
 
 %.o: objects/pflash/%.c
 	$(CC) -c -o obj/$@ $< -I$(HOME) -I$(HOME)/objects/pflash $(CFLAGS)
@@ -23,7 +23,7 @@
 
 
 libopenbmc_intf: openbmc_intf.o
-	$(CC) -shared -o lib/$@.so obj/openbmc_intf.o $(CFLAGS)
+	$(CC) -shared -o bin/$@.so obj/openbmc_intf.o $(CFLAGS)
 
 power_control: power_control_obj.o gpio.o
 	$(CC) -o bin/$@.exe obj/gpio.o obj/power_control_obj.o $(OFLAGS) $(CFLAGS)
@@ -62,4 +62,4 @@
 	$(CC) -o bin/$@.exe obj/board_vpd_obj.o $(OFLAGS) $(CFLAGS)
 
 
-all: libopenbmc_intf power_control chassis_identify sensor_ambient button_power sensor_host_status control_host flash_bios fan host_watchdog control_bmc sensor_occ board_vpd
+all: libopenbmc_intf power_control chassis_identify sensor_ambient button_power sensor_host_status control_host fan host_watchdog control_bmc sensor_occ board_vpd
diff --git a/bin/Barreleye.py b/bin/Barreleye.py
index e32f559..d7c596b 100644
--- a/bin/Barreleye.py
+++ b/bin/Barreleye.py
@@ -4,8 +4,8 @@
 import dbus
 import Openbmc
 
-HOME_PATH = '/media/sf_vbox/openbmc/'
-BIN_PATH = HOME_PATH+'bin/'
+HOME_PATH = './'
+BIN_PATH = HOME_PATH
 CACHE_PATH = HOME_PATH+'cache/'
 FRU_PATH = CACHE_PATH+'frus/'
 
@@ -70,7 +70,7 @@
 		'instances' : [	
 			{
 				'name' : 'Barreleye',
-				'user_label': 'Fru Manager',
+				'user_label': 'Ipmi Manager',
 			}
 		]
 	}
@@ -92,8 +92,8 @@
 	}
 
 SYSTEM_CONFIG['org.openbmc.loggers.EventLogger'] = {
-		'system_state' : 'STANDBY',
-		'start_process' : True,
+		'system_state' : 'INIT',
+		'start_process' : False,
 		'monitor_process' : True,
 		'process_name' : 'eventlogger.py',
 		'heartbeat' : 'no',
@@ -141,7 +141,7 @@
 						'poll_interval' : 3000
 					},
 					'org.openbmc.control.Power': {
-						'pgood_timeout' : 10000
+						'pgood_timeout' : 10
 					}
 				}
 			}
@@ -223,7 +223,7 @@
 	}
 SYSTEM_CONFIG['org.openbmc.flash.BIOS'] = {
 		'system_state' : 'STANDBY',
-		'start_process' : True,
+		'start_process' : False,
 		'monitor_process' : True,
 		'process_name' : 'flash_bios.exe',
 		'heartbeat' : 'no',
@@ -328,29 +328,77 @@
 	'cache'      : True
 }
 
-FRUS = {}
-
-## key is IPMI FRU ID
-
-FRUS[32] = {
-		'name' : 'CPU0',
-		'user_label' : "IBM POWER8 CPU",
-		'ftype' : Openbmc.FRU_TYPES['CPU'],
-		'location' : "P0",
-		'manufacturer' : "IBM",
-		'cache' : True,
-		'state' : Openbmc.FRU_STATES['NORMAL'],
-		'sensor_id' : 10,
-	}
-
-FRUS[21] = {
-		'name' : 'IO_PLANAR',
-		'user_label' : "BARRELEYE IO PLANAR",
-		'ftype' : Openbmc.FRU_TYPES['BACKPLANE'],	
-		'cache' : False,
-		'state' : Openbmc.FRU_STATES['NORMAL'],
-		'sensor_id' : 11,
-	}
+FRU_INSTANCES = {
+	'/system' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['SYSTEM'],
+		'fru'	       : True,
+	},
+	'/system/motherboard' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['MAIN_PLANAR'],
+		'manufacturer' : 'FOXCONN',
+		'fru'	       : True,
+		'fru_id'       : 31,
+		'location' : 'C0',
+	},
+	'/system/fan0' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['FAN'],
+		'manufacturer' : 'DELTA',
+		'fru'	       : True,
+		'location' : 'F0',
+		'sensor_link' : 'fans/Fan_0',
+	},
+	'/system/fan1' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['FAN'],
+		'manufacturer' : 'DELTA',
+		'fru'	       : True,
+		'location' : 'F1',
+		'sensor_link' : 'fans/Fan_1',
+	},
+	'/system/motherboard/bmc' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['BMC'],
+		'manufacturer' : 'ASPEED',
+		'fru'	       : True,
+	},
+	'/system/motherboard/cpu0' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['CPU'],
+		'manufacturer' : 'IBM',
+		'fru'	       : True,
+		'location' : 'P0',
+		'fru_id'   : 10,
+	},
+	'/system/motherboard/cpu0/core0' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['CORE'],
+		'fru'	       : False,
+		'sensor_link' : 1,	
+	},
+	'/system/motherboard/cpu0/core1' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['CORE'],
+		'fru'	       : False,
+		'sensor_link' : 2,	
+	},
+	'/system/motherboard/dimm0' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['DIMM'],
+		'fru'	       : True,
+		'fru_id'       : 12,
+		'sensor_link'  : 20,	
+	},
+	'/system/motherboard/dimm1' :
+	{
+		'ftype'        : Openbmc.FRU_TYPES['DIMM'],
+		'fru'	       : True,
+		'fru_id'       : 13,
+		'sensor_link'  : 21,	
+	},
+}
 
 
 GPIO_CONFIG = {}
diff --git a/bin/Openbmc.py b/bin/Openbmc.py
index 9cfeffb..a777ae8 100644
--- a/bin/Openbmc.py
+++ b/bin/Openbmc.py
@@ -7,11 +7,14 @@
 
 
 FRU_TYPES = {
+	'SYSTEM' : 0,
 	'CPU' : 1,
 	'DIMM' : 2,
-	'BACKPLANE' : 3,
+	'MAIN_PLANAR' : 3,
 	'RISER_CARD' : 4,
-	'FAN' : 5
+	'FAN' : 5,
+	'BMC' : 6,
+	'CORE' : 7,
 }
 FRU_STATES = {
 	'NORMAL'            : 0,
diff --git a/bin/eventlogger.py b/bin/eventlogger.py
index 131faec..e36f928 100644
--- a/bin/eventlogger.py
+++ b/bin/eventlogger.py
@@ -25,13 +25,14 @@
 					path_keyword='path')
 
 	## Signal handler
-	def event_log_signal_handler(self,priority,msg,path = None):
+	def event_log_signal_handler(self,priority,msg,rc,path = None):
 		message = {}
 		ts = time.time()
 
 		message['priority'] = priority
 		message['object_path'] = path
 		message['message'] = msg
+		message['rc'] = rc
 
 		json_dump = json.dumps(message)
 		print "EVENT_LOG: "+json_dump
diff --git a/bin/fru_manager.py b/bin/fru_manager.py
index 1150552..220b7d3 100644
--- a/bin/fru_manager.py
+++ b/bin/fru_manager.py
@@ -17,7 +17,7 @@
 
 DBUS_NAME = 'org.openbmc.managers.Frus'
 OBJ_NAME = '/org/openbmc/managers/Frus'
-FRU_PATH = System.FRU_PATH
+FRUS = System.FRU_INSTANCES
 
 class Fru:
 	def __init__(self,fru_id,data):
@@ -89,13 +89,13 @@
 					signal_name = 'UpdateFru')
 
 		self.fru_db = {}
-		for fid in System.FRUS.keys():
-			self.updateFru(fid,System.FRUS[fid])
+		self.fru_id_lookup = {}
+		for fru in FRUS.keys():
+			#self.updateFru(fid,System.FRUS[fid])
+			if (FRUS[fru].has_key('fru_id')):
+				print fru
+				print FRUS[fru]['fru_id']
 			
-			
-	#@dbus.service.signal(DBUS_NAME)
-	#def OpenBmcRunning(self):
-	#	pass
 	def UpdateFruHandler(self,fru_id,data):
 		self.updateFru(fru_id,data)		
 
diff --git a/bin/system_manager.py b/bin/system_manager.py
index 1a4fe99..015aa8d 100644
--- a/bin/system_manager.py
+++ b/bin/system_manager.py
@@ -9,7 +9,8 @@
 import dbus.mainloop.glib
 import os
 import PropertyManager
-
+import time
+import json
 import Openbmc
 
 if (len(sys.argv) < 2):
@@ -35,6 +36,12 @@
 					signal_name = "NameOwnerChanged")
 		bus.add_signal_receiver(self.HeartbeatHandler, signal_name = "Heartbeat")
 		bus.add_signal_receiver(self.SystemStateHandler,signal_name = "GotoSystemState")
+		bus.add_signal_receiver(self.event_log_signal_handler, 
+					dbus_interface = "org.openbmc.EventLog", 
+					signal_name = "EventLog",
+					path_keyword='path')
+
+
 
 		self.current_state = ""
 		self.system_states = {}
@@ -168,6 +175,22 @@
 
 		return [Openbmc.GPIO_DEV, gpio_num, System.GPIO_CONFIG[name]['direction']]
 
+	## Signal handler
+	def event_log_signal_handler(self,priority,msg,rc,path = None):
+		message = {}
+		ts = time.time()
+
+		message['priority'] = priority
+		message['object_path'] = path
+		message['message'] = msg
+		message['rc'] = rc
+
+		json_dump = json.dumps(message)
+		print "EVENT_LOG: "+json_dump
+		#syslog.openlog('OpenBmc',logoption=syslog.LOG_PID)
+		#syslog.syslog(priority,json_dump)
+		#syslog.closelog()
+		
 
 if __name__ == '__main__':
     dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
diff --git a/includes/gpio.c b/includes/gpio.c
index 992745f..1bd10a7 100644
--- a/includes/gpio.c
+++ b/includes/gpio.c
@@ -39,7 +39,7 @@
 	return rc;
 }
 
-int gpio_read(GPIO* gpio, uint8_t* value)
+int gpio_read(GPIO* gpio, uint8_t *value)
 {
 	char buf[1];
 	int r = GPIO_OK;
@@ -51,10 +51,8 @@
 	{
 		if (read(gpio->fd,&buf,1) != 1)
 		{
-			g_print("here1\n");
 			r = GPIO_READ_ERROR;
 		} else {
-			g_print("here2\n");
 			if (buf[0]=='1') {
 				*value = 1;
 			} else {
@@ -121,21 +119,28 @@
 	//export and set direction
 	char dev[254];
 	char data[4];
-	sprintf(dev,"%s/export",gpio->dev);
+	int fd;
 	do {
-		int fd = open(dev, O_WRONLY);
-		if (fd == GPIO_ERROR) {
-			rc = GPIO_OPEN_ERROR;
-			break;
-		} 
-		sprintf(data,"%d",gpio->num);
-		rc = write(fd,data,strlen(data));
-		close(fd);
-		if (rc == GPIO_ERROR) {
-			rc = GPIO_WRITE_ERROR;
-			break;
+		struct stat st;
+		
+		sprintf(dev,"%s/gpio%d/direction",gpio->dev,gpio->num);
+    		int result = stat(dev, &st);
+    		if (result)
+		{
+			sprintf(dev,"%s/export",gpio->dev);
+			fd = open(dev, O_WRONLY);
+			if (fd == GPIO_ERROR) {
+				rc = GPIO_OPEN_ERROR;
+				break;
+			} 
+			sprintf(data,"%d",gpio->num);
+			rc = write(fd,data,strlen(data));
+			close(fd);
+			if (rc != strlen(data)) {
+				rc = GPIO_WRITE_ERROR;
+				break;
+			}
 		}
-
 		sprintf(dev,"%s/gpio%d/direction",gpio->dev,gpio->num);
 		fd = open(dev,O_WRONLY);
 		if (fd == GPIO_ERROR) {
@@ -143,7 +148,13 @@
 			break;
 		}
 		rc = write(fd,gpio->direction,strlen(gpio->direction));
+		if (rc != strlen(gpio->direction)) {
+			rc = GPIO_WRITE_ERROR;
+			break;
+		}
+
 		close(fd);
+		rc = 0;
 	} while(0);
 
 	return rc;
@@ -171,7 +182,10 @@
 		gpio->fd = open(buf, O_WRONLY);
 
 	}
-	return gpio->fd;
+	if (gpio->fd == -1) {
+		return GPIO_OPEN_ERROR;
+	}
+	return GPIO_OK;
 }
 
 void gpio_close(GPIO* gpio)
diff --git a/interfaces/openbmc_intf.c b/interfaces/openbmc_intf.c
index 5ccc4f5..6fbda1e 100644
--- a/interfaces/openbmc_intf.c
+++ b/interfaces/openbmc_intf.c
@@ -17832,10 +17832,22 @@
   FALSE
 };
 
+static const _ExtendedGDBusArgInfo _event_log_signal_info_event_log_ARG_rc =
+{
+  {
+    -1,
+    (gchar *) "rc",
+    (gchar *) "i",
+    NULL
+  },
+  FALSE
+};
+
 static const _ExtendedGDBusArgInfo * const _event_log_signal_info_event_log_ARG_pointers[] =
 {
   &_event_log_signal_info_event_log_ARG_priority,
   &_event_log_signal_info_event_log_ARG_message,
+  &_event_log_signal_info_event_log_ARG_rc,
   NULL
 };
 
@@ -17951,6 +17963,7 @@
    * @object: A #EventLog.
    * @arg_priority: Argument.
    * @arg_message: Argument.
+   * @arg_rc: Argument.
    *
    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-EventLog.EventLog">"EventLog"</link> is received.
    *
@@ -17964,7 +17977,7 @@
     NULL,
     g_cclosure_marshal_generic,
     G_TYPE_NONE,
-    2, G_TYPE_INT, G_TYPE_STRING);
+    3, G_TYPE_INT, G_TYPE_STRING, G_TYPE_INT);
 
 }
 
@@ -17973,6 +17986,7 @@
  * @object: A #EventLog.
  * @arg_priority: Argument to pass with the signal.
  * @arg_message: Argument to pass with the signal.
+ * @arg_rc: Argument to pass with the signal.
  *
  * Emits the <link linkend="gdbus-signal-org-openbmc-EventLog.EventLog">"EventLog"</link> D-Bus signal.
  */
@@ -17980,9 +17994,10 @@
 event_log_emit_event_log (
     EventLog *object,
     gint arg_priority,
-    const gchar *arg_message)
+    const gchar *arg_message,
+    gint arg_rc)
 {
-  g_signal_emit_by_name (object, "event-log", arg_priority, arg_message);
+  g_signal_emit_by_name (object, "event-log", arg_priority, arg_message, arg_rc);
 }
 
 /**
@@ -18663,7 +18678,8 @@
 _event_log_on_signal_event_log (
     EventLog *object,
     gint arg_priority,
-    const gchar *arg_message)
+    const gchar *arg_message,
+    gint arg_rc)
 {
   EventLogSkeleton *skeleton = EVENT_LOG_SKELETON (object);
 
@@ -18671,9 +18687,10 @@
   GVariant   *signal_variant;
   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
 
-  signal_variant = g_variant_ref_sink (g_variant_new ("(is)",
+  signal_variant = g_variant_ref_sink (g_variant_new ("(isi)",
                    arg_priority,
-                   arg_message));
+                   arg_message,
+                   arg_rc));
   for (l = connections; l != NULL; l = l->next)
     {
       GDBusConnection *connection = l->data;
diff --git a/interfaces/openbmc_intf.h b/interfaces/openbmc_intf.h
index c064672..23bfccc 100644
--- a/interfaces/openbmc_intf.h
+++ b/interfaces/openbmc_intf.h
@@ -2357,7 +2357,8 @@
   void (*event_log) (
     EventLog *object,
     gint arg_priority,
-    const gchar *arg_message);
+    const gchar *arg_message,
+    gint arg_rc);
 
 };
 
@@ -2379,7 +2380,8 @@
 void event_log_emit_event_log (
     EventLog *object,
     gint arg_priority,
-    const gchar *arg_message);
+    const gchar *arg_message,
+    gint arg_rc);
 
 
 
diff --git a/objects/power_control_obj.c b/objects/power_control_obj.c
index 835ed7a..53df62d 100644
--- a/objects/power_control_obj.c
+++ b/objects/power_control_obj.c
@@ -21,9 +21,9 @@
 
 static GDBusObjectManagerServer *manager = NULL;
 
-guint tmp_pgood = 0;
-guint last_pgood = 0;
-guint pgood_timeout_count = 0;
+//guint tmp_pgood = 0;
+//guint last_pgood = 0;
+time_t pgood_timeout_start = 0;
 
 static gboolean poll_pgood(gpointer user_data)
 {
@@ -38,21 +38,22 @@
 	guint poll_int = control_get_poll_interval(control);
 	if (poll_int == 0)
 	{
-		event_log_emit_event_log(event_log, LOG_ALERT, "Poll interval cannot be 0");
+		event_log_emit_event_log(event_log, LOG_ALERT, "Poll interval cannot be 0",0);
 		return FALSE;
 	}
-	//calculate timeout count
-	guint pgood_timeout = control_power_get_pgood_timeout(control_power)/poll_int;
-
-	if (pgood_timeout_count > pgood_timeout)
+	//handle timeout
+	time_t current_time = time(NULL);
+	if (difftime(current_time,pgood_timeout_start) > control_power_get_pgood_timeout(control_power)
+		&& pgood_timeout_start != 0)
 	{
-		event_log_emit_event_log(event_log, LOG_ALERT, "Pgood poll timeout");
+		event_log_emit_event_log(event_log, LOG_ALERT, "Pgood poll timeout",0);
 		// set timeout to 0 so timeout doesn't happen again
 		control_power_set_pgood_timeout(control_power,0);
-		pgood_timeout_count = 0;
+		pgood_timeout_start = 0;
 		return TRUE;
 	}
 	//For simulation, remove
+	/*
 	if (tmp_pgood!=last_pgood) {
 		if (tmp_pgood == 1) {
 			control_emit_goto_system_state(control,"POWERED_ON");
@@ -60,10 +61,14 @@
 			control_emit_goto_system_state(control,"POWERED_OFF");
 		}
 	}
-
+	
 	last_pgood = tmp_pgood;
+	*/
 	uint8_t gpio;
-	int rc = gpio_read(&pgood,&gpio);
+	
+	int rc = gpio_open(&pgood);
+	rc = gpio_read(&pgood,&gpio);
+	gpio_close(&pgood);	
 	if (rc == GPIO_OK)
 	{
 		//if changed, set property and emit signal
@@ -82,18 +87,21 @@
  			}
 		}
 	} else {
-		event_log_emit_event_log(event_log, LOG_ALERT, "GPIO read error");
+		event_log_emit_event_log(event_log, LOG_ALERT, "GPIO read error",rc);
 		//return FALSE;
 	}
 	//pgood is not at desired state yet
+	g_print("GPIO: %d;  %d\n",gpio,control_power_get_state(control_power));
 	if (gpio != control_power_get_state(control_power) &&
-		control_power_get_pgood_timeout(control_power) != 0)
+		control_power_get_pgood_timeout(control_power) > 0)
 	{
-		pgood_timeout_count++;
+		if (pgood_timeout_start == 0 ) {
+			pgood_timeout_start = current_time;
+		}
 	}
 	else 
 	{
-		pgood_timeout_count = 0;
+		pgood_timeout_start = 0;
 	}
 	return TRUE;
 }
@@ -126,13 +134,13 @@
 	{
 		g_print("Set power state: %d\n",state);
 		//temporary until real hardware works
-		tmp_pgood = state;
+		//tmp_pgood = state;
 		int error = 0;
 		do {
 			error = gpio_open(&power_pin);
-			if (error != GPIO_OK) {	break;	}
+			if (error != GPIO_OK) { break;	}
 			error = gpio_write(&power_pin,!state);
-			if (error != GPIO_OK) {	break;	}
+			if (error != GPIO_OK) { break;	}
 			gpio_close(&power_pin);
 			control_power_set_state(pwr,state);
 			if (state == 1) {
@@ -143,7 +151,7 @@
 		} while(0);
 		if (error != GPIO_OK)
 		{
-			event_log_emit_event_log(event_log, LOG_ALERT, "GPIO setup error");
+			event_log_emit_event_log(event_log, LOG_ALERT, "GPIO set power state error",error);
 		}
 	}
 	return TRUE;
@@ -154,6 +162,7 @@
          GDBusMethodInvocation  *invocation,
          gpointer                user_data)
 {
+	pgood_timeout_start = 0;
 	guint poll_interval = control_get_poll_interval(control);
 	g_timeout_add(poll_interval, poll_pgood, user_data);
 	control_complete_init(control,invocation);
@@ -184,49 +193,45 @@
 		return;
 	}	
   	manager = g_dbus_object_manager_server_new (dbus_object_path);
-  	int i=0;
-  	for (i=1;i<cmd->argc;i++)
-  	{
-		gchar *s;
-  		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);
-		g_print("%s\n",s);
-  		object = object_skeleton_new (s);
-  		g_free (s);
+	gchar *s;
+  	s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[1]);
+	g_print("%s\n",s);
+  	object = object_skeleton_new (s);
+  	g_free (s);
 
-		ControlPower* control_power = control_power_skeleton_new ();
-		object_skeleton_set_control_power (object, control_power);
-		g_object_unref (control_power);
+	ControlPower* control_power = control_power_skeleton_new ();
+	object_skeleton_set_control_power (object, control_power);
+	g_object_unref (control_power);
+	
+	Control* control = control_skeleton_new ();
+	object_skeleton_set_control (object, control);
+	g_object_unref (control);
 
-		Control* control = control_skeleton_new ();
-		object_skeleton_set_control (object, control);
-		g_object_unref (control);
+	EventLog* event_log = event_log_skeleton_new ();
+	object_skeleton_set_event_log (object, event_log);
+	g_object_unref (event_log);
 
-		EventLog* event_log = event_log_skeleton_new ();
-		object_skeleton_set_event_log (object, event_log);
-		g_object_unref (event_log);
+	//define method callbacks here
+	g_signal_connect (control_power,
+       	            "handle-set-power-state",
+               	    G_CALLBACK (on_set_power_state),
+               	    object); /* user_data */
 
-		//define method callbacks here
-		g_signal_connect (control_power,
-        	            "handle-set-power-state",
-                	    G_CALLBACK (on_set_power_state),
-                	    object); /* user_data */
+	g_signal_connect (control_power,
+               	    "handle-get-power-state",
+               	    G_CALLBACK (on_get_power_state),
+               	    NULL); /* user_data */
 
-		g_signal_connect (control_power,
-                	    "handle-get-power-state",
-                	    G_CALLBACK (on_get_power_state),
-                	    NULL); /* user_data */
-
-		g_signal_connect (control,
-                	    "handle-init",
-                	    G_CALLBACK (on_init),
-                	    object); /* user_data */
+	g_signal_connect (control,
+               	    "handle-init",
+               	    G_CALLBACK (on_init),
+               	    object); /* user_data */
 
 
+	/* Export the object (@manager takes its own reference to @object) */
+	g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));
+	g_object_unref (object);
 
-		/* Export the object (@manager takes its own reference to @object) */
-		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));
-		g_object_unref (object);
-	}
 	/* Export all objects */
 	g_dbus_object_manager_server_set_connection (manager, connection);
 
@@ -239,12 +244,21 @@
 		rc = gpio_init(connection,&pgood);
 		if (rc != GPIO_OK) { break; }
 		rc = gpio_open(&pgood);
-		if (rc != GPIO_OK) { break; }
+
 	} while(0);
 	if (rc != GPIO_OK)
 	{
-		//event_log_emit_event_log(event_log, LOG_ALERT, "GPIO setup error");
+		event_log_emit_event_log(event_log, LOG_ALERT, "GPIO setup error",rc);
 	}
+	int rc = gpio_open(&pgood);
+	rc = gpio_read(&pgood,&gpio);
+	gpio_close(&pgood);	
+	if (rc == GPIO_OK) {
+		control_power_set_pgood(control_power,gpio);
+
+	} else {
+	}
+
 }
 
 static void
diff --git a/xml/openbmc_intf.xml b/xml/openbmc_intf.xml
index 8418b9a..f3056bf 100644
--- a/xml/openbmc_intf.xml
+++ b/xml/openbmc_intf.xml
@@ -130,6 +130,7 @@
 		<signal name="EventLog">
 			<arg name="priority" type="i"/>
 			<arg name="message" type="s"/>
+			<arg name="rc" type="i"/>
 		</signal>
 	</interface>	
 	<interface name="org.openbmc.Flash">
