diff --git a/bin/System/Barreleye.py b/bin/System/Barreleye.py
index dd9d1fa..364a280 100644
--- a/bin/System/Barreleye.py
+++ b/bin/System/Barreleye.py
@@ -3,9 +3,20 @@
 def BarreleyeProcesses():
 	config = {}
 
+	config['org.openbmc.control.Power'] = {
+		'exe_name' : 'bin/power_control.exe',
+		'heartbeat' : 'no',
+		'instances' : [	
+			{
+				'name' : 'PowerControl1',
+				'user_label': 'Power control',
+			}
+		]
+	}
+
 	config['org.openbmc.sensors.Temperature.Ambient'] = {
 		'exe_name' : 'bin/sensor_ambient.exe',
-		'watchdog' : "yes",
+		'heartbeat' : "yes",
 		'instances' : [	
 			{
 				'name' : 'AmbientTemperature1',
@@ -31,7 +42,7 @@
 	}
 	config['org.openbmc.buttons.ButtonPower'] = {
 		'exe_name' : 'bin/button_power.exe',
-		'watchdog' : 'no',
+		'heartbeat' : 'no',
 		'instances' : [	
 			{
 				'name' : 'PowerButton1',
@@ -39,16 +50,56 @@
 			}
 		]
 	}
-	config['org.openbmc.leds.ChassisIdentify'] = {
-		'exe_name' : 'bin/chassis_identify.exe',
-		'watchdog' : "no",
+	config['org.openbmc.sensors.HostStatus'] = {
+		'exe_name' : 'bin/sensor_host_status.exe',
+		'heartbeat' : "no",
 		'instances' : [	
 			{
-				'name' : 'ChassisIdentify',
+				'name' : 'HostStatus1',
+				'user_label': 'Host Status',
+			}
+		]
+	}
+	config['org.openbmc.leds.ChassisIdentify'] = {
+		'exe_name' : 'bin/chassis_identify.exe',
+		'heartbeat' : "no",
+		'instances' : [	
+			{
+				'name' : 'ChassisIdentify1',
 				'user_label': 'Chassis Identify LED',
 			}
 		]
 	}
+	config['org.openbmc.flash.BIOS'] = {
+		'exe_name' : 'bin/flash_bios.exe',
+		'heartbeat' : "no",
+		'instances' : [	
+			{
+				'name' : 'BIOS1',
+				'user_label': 'BIOS SPI Flash',
+			}
+		]
+	}
+	config['org.openbmc.control.Host'] = {
+		'exe_name' : 'bin/control_host.exe',
+		'heartbeat' : "no",
+		'instances' : [	
+			{
+				'name' : 'HostControl1',
+				'user_label': 'Host Control',
+			}
+		]
+	}
+	config['org.openbmc.control.Chassis'] = {
+		'exe_name' : 'bin/chassis_control.py',
+		'heartbeat' : "no",
+		'instances' : [	
+			{
+				'name' : 'Chassis',
+				'user_label': 'Chassis Control',
+			}
+		]
+	}
 
 
 	return config
@@ -61,6 +112,8 @@
 	gpio['POWER_PIN']  = { 'gpio_num': 26, 'direction': 'out'  }
 	gpio['CRONUS_SEL'] = { 'gpio_num': 27, 'direction': 'out'  }
 	gpio['PGOOD']      = { 'gpio_num': 28, 'direction': 'in'  }
+	gpio['IDENTIFY']   = { 'gpio_num': 30, 'direction': 'out' }
+	gpio['POWER_BUTTON'] = { 'gpio_num': 31, 'direction': 'in' }
 
 
 	return gpio
diff --git a/bin/System/__init__.py b/bin/System/__init__.py
index f95b8ee..0cb7ef8 100644
--- a/bin/System/__init__.py
+++ b/bin/System/__init__.py
@@ -1,2 +1,2 @@
-from Barreleye import BarreleyeSensors
+from Barreleye import BarreleyeProcesses
 from Barreleye import BarreleyeGpios
diff --git a/objects/openbmc_utilities.c b/objects/openbmc_utilities.c
deleted file mode 100644
index d03fdb4..0000000
--- a/objects/openbmc_utilities.c
+++ /dev/null
@@ -1,137 +0,0 @@
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <argp.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-
-
-#include "interfaces/power_control.h"
-#include "objects/openbmc_utilities.h"
-
-void gpio_writec(GPIO* gpio, char value)
-{
-	char buf[1];
-	buf[0] = value;
-	if (write(gpio->fd, buf, 1) != 1)
-	{
-		//TODO: error handling
-		printf("Write error\n");
-	} 
-}
-
-void gpio_write(GPIO* gpio, uint8_t value)
-{
-	char buf[1];
-	buf[0] = '0';
-	if (value==1)
-	{
-		buf[0]='1';
-	} 
-	if (write(gpio->fd, buf, 1) != 1)
-	{
-		//TODO: error handling
-		printf("write error\n");
-	} 
-}
-
-uint8_t gpio_read(GPIO* gpio)
-{
-	char buf[1];
-	if (read(gpio->fd,&buf,1) != 1)
-	{
-		//TODO: error hjandling
-		printf("read error\n");
-	}
-	if (buf[0]=='1') {
-		return 1;
-	}
-	return 0;	
-
-}
-void gpio_clock_cycle(GPIO* gpio, int num_clks) {
-        int i=0;
-        for (i=0;i<num_clks;i++) {
-                gpio_writec(gpio,'0');
-                gpio_writec(gpio,'1');
-        }
-}
-
-// Gets the gpio device path from gpio manager object
-void gpio_init(GDBusConnection *connection, GPIO* gpio)
-{
-	GDBusProxy *proxy;
-	GError *error;
-	GVariant *result;
-
-	error = NULL;
-	g_assert_no_error (error);
-	error = NULL;
-	proxy = g_dbus_proxy_new_sync (connection,
-                                 G_DBUS_PROXY_FLAGS_NONE,
-                                 NULL,                      /* GDBusInterfaceInfo */
-                                 "org.openbmc.managers.Gpios", /* name */
-                                 "/org/openbmc/managers/Gpios", /* object path */
-                                 "org.openbmc.managers.Gpios",        /* interface */
-                                 NULL, /* GCancellable */
-                                 &error);
-	g_assert_no_error (error);
-
-	result = g_dbus_proxy_call_sync (proxy,
-                                   "init",
-                                   g_variant_new ("(s)", gpio->name),
-                                   G_DBUS_CALL_FLAGS_NONE,
-                                   -1,
-                                   NULL,
-                                   &error);
-  
-	g_assert_no_error (error);
-	g_assert (result != NULL);
-	g_variant_get (result, "(&si&s)", &gpio->dev,&gpio->num,&gpio->direction);
-	g_print("GPIO Lookup:  %s = %d,%s\n",gpio->name,gpio->num,gpio->direction);
-	
-	//export and set direction
-	char dev[254];
-	char data[4];
-	sprintf(dev,"%s/export",gpio->dev);
-	int fd = open(dev, O_WRONLY);
-	sprintf(data,"%d",gpio->num);
-	write(fd,data,strlen(data));
-	close(fd);
-
-	sprintf(dev,"%s/gpio%d/direction",gpio->dev,gpio->num);
-	fd = open(dev,O_WRONLY);
-	write(fd,gpio->direction,strlen(gpio->direction));
-	close(fd);
-
-
-}
-int gpio_open(GPIO* gpio)
-{
-	// open gpio for writing or reading
-	char buf[254];
-	if (strcmp(gpio->direction,"in")==0)
-	{
-		sprintf(buf, "%s/gpio%d/value", gpio->dev, gpio->num);
-		gpio->fd = open(buf, O_RDONLY);
-	}
-	else
-	{
-		sprintf(buf, "%s/gpio%d/value", gpio->dev, gpio->num);
-		gpio->fd = open(buf, O_WRONLY);
-
-	}
-	if (gpio->fd == -1)
-	{
-		printf("error opening: %s\n",buf);
-	}
-	return gpio->fd;
-}
-
-void gpio_close(GPIO* gpio)
-{
-	close(gpio->fd);
-}
diff --git a/objects/openbmc_utilities.h b/objects/openbmc_utilities.h
deleted file mode 100644
index 1aa2032..0000000
--- a/objects/openbmc_utilities.h
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#include <stdint.h>
-
-typedef struct {
-  gchar* name;
-  gchar* dev;
-  uint16_t num;
-  gchar* direction;
-  int fd;
-} GPIO;
-
-
-//gpio functions
-void gpio_init(GDBusConnection*, GPIO*);
-void gpio_close(GPIO*);
-int  gpio_open(GPIO*);
-void gpio_write(GPIO*, uint8_t);
-void gpio_writec(GPIO*, char);
-void gpio_clock_cycle(GPIO*, int);
-uint8_t gpio_read(GPIO*);
-
-
-
diff --git a/objects/power_control_obj.c b/objects/power_control_obj.c
index 26006b4..5d3315f 100644
--- a/objects/power_control_obj.c
+++ b/objects/power_control_obj.c
@@ -167,9 +167,11 @@
 main (gint argc, gchar *argv[])
 {
   GMainLoop *loop;
+  cmdline cmd;
+  cmd.argc = argc;
+  cmd.argv = argv;
 
   guint id;
-  //g_type_init ();
   loop = g_main_loop_new (NULL, FALSE);
 
   id = g_bus_own_name (G_BUS_TYPE_SESSION,
@@ -179,7 +181,7 @@
                        on_bus_acquired,
                        on_name_acquired,
                        on_name_lost,
-                       loop,
+                       &cmd,
                        NULL);
 
   g_timeout_add(5000, poll_pgood, NULL);
diff --git a/objects/sensor_temperature_ambient_obj.c b/objects/sensor_temperature_ambient_obj.c
index b1271e9..15e5f67 100644
--- a/objects/sensor_temperature_ambient_obj.c
+++ b/objects/sensor_temperature_ambient_obj.c
@@ -25,11 +25,10 @@
 	//TOOD:  Change to actually read sensor
 	value = value+1;
 
-	if (heartbeat > 10000)
+	if (heartbeat > 30000)
 	{
 		heartbeat = 0;
-		g_print(">>> Send Heartbeat\n");
-		sensor_integer_emit_heartbeat(sensor);
+		sensor_integer_emit_heartbeat(sensor,dbus_name);
 	}
 	else
  	{
@@ -37,12 +36,11 @@
 	}
 
     // End actually reading sensor
-    g_print("Polling sensor:  %d\n",value);
 
     //if changed, set property and emit signal
     if (value != sensor_integer_get_value(sensor))
     {
-       g_print("Sensor changed\n");
+       //g_print("Sensor changed\n");
        sensor_integer_set_value(sensor,value);
        sensor_integer_emit_changed(sensor,value);
        check_thresholds(threshold,value);
diff --git a/xml/sensor.xml b/xml/sensor.xml
index 40bf73d..a0988c9 100644
--- a/xml/sensor.xml
+++ b/xml/sensor.xml
@@ -22,6 +22,9 @@
 		<method name="getThresholdState">
 			<arg name="threshold_state" type="i" direction="out"/>
 		</method>
+		<method name="getWatchdog">
+			<arg name="watchdog" type="i" direction="out"/>
+		</method>
 
                 <property name="value" type="i" access="read"/>
 		<property name="units" type="s" access="read"/>
@@ -34,7 +37,8 @@
 
 		<property name="poll_interval" type="i" access="read"/>
 		<property name="config_data" type="as" access="read"/>
-		<property name="changed_tolerance" type="i" access="read"/>
+
+		<property name="watchdog" type="i" access="read"/>
 
 		<signal name="Changed">
 			<arg name="value" type="i"/>
@@ -71,25 +75,4 @@
                         <arg name="value" type="i"/>
                 </signal>
         </interface>
-	<interface name="org.openbmc.SensorIntegerThreshold">
-		<method name="check">
-			<arg name="value" type="i" direction="in"/>
-		</method>
-		<method name="setThresholds">
-			<arg name="critical_upper" type="i" direction="in"/>
-			<arg name="critical_lower" type="i" direction="in"/>
-			<arg name="warning_upper" type="i" direction="in"/>
-			<arg name="warning_lower" type="i" direction="in"/>
-		</method>
-		<signal name="critical">
-			<arg name="over" type="b"/>
-		</signal>
-		<signal name="warning">
-			<arg name="over" type="b"/>
-		</signal>
-		<property name="critical_upper" type="i" access="read"/>
-		<property name="critical_lower" type="i" access="read"/>
-		<property name="warning_upper" type="i" access="read"/>
-		<property name="warning_lower" type="i" access="read"/>
-	</interface>	
 </node>
