diff --git a/bin/.rest_server_obj.py.swp b/bin/.rest_server_obj.py.swp
new file mode 100644
index 0000000..6cad1c3
--- /dev/null
+++ b/bin/.rest_server_obj.py.swp
Binary files differ
diff --git a/bin/button_power b/bin/button_power
new file mode 100644
index 0000000..5bba86a
--- /dev/null
+++ b/bin/button_power
Binary files differ
diff --git a/bin/chassis_control.py b/bin/chassis_control.py
new file mode 100644
index 0000000..6c01c39
--- /dev/null
+++ b/bin/chassis_control.py
@@ -0,0 +1,115 @@
+#!/usr/bin/env python
+
+import gobject
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+
+class ChassisControlObject(dbus.service.Object):
+	def __init__(self,bus,name):
+		self.power_state=0
+		dbus.service.Object.__init__(self,bus,name)
+		bus = dbus.SessionBus()
+		try: 
+			# Get PowerControl object
+			power_control_service = bus.get_object('org.openbmc.PowerControl','/org/openbmc/PowerControl/0')
+			self.power_control_iface = dbus.Interface(power_control_service, 'org.openbmc.PowerControl')
+			# Get ChassisIdentify object
+			chassis_identify_service = bus.get_object('org.openbmc.ChassisIdentify','/org/openbmc/ChassisIdentify/0')
+			self.identify_led_iface = dbus.Interface(chassis_identify_service, 'org.openbmc.Led');
+			# Get HostControl object
+			host_control_service = bus.get_object('org.openbmc.HostControl','/org/openbmc/HostControl/0')
+			self.host_control_iface = dbus.Interface(host_control_service, 'org.openbmc.HostControl');
+
+
+		except dbus.exceptions.DBusException, e:
+			# TODO: not sure what to do if can't find other services
+			print "Unable to find dependent services: ",e
+
+
+	@dbus.service.method("org.openbmc.ChassisControl",
+		in_signature='', out_signature='s')
+	def getID(self):
+		return id
+
+
+	@dbus.service.method("org.openbmc.ChassisControl",
+		in_signature='', out_signature='')
+	def setIdentify(self):
+		print "Turn on identify"
+		self.identify_led_iface.setOn()
+		return None
+
+
+	@dbus.service.method("org.openbmc.ChassisControl",
+		in_signature='', out_signature='')
+	def clearIdentify(self):
+		print "Turn off identify"
+		r=self.identify_led_iface.setOff()
+		return None
+
+	@dbus.service.method("org.openbmc.ChassisControl",
+		in_signature='', out_signature='')
+	def setPowerOn(self):
+		print "Turn on power and boot"
+		self.power_state=0
+		if (self.getPowerState()==0):
+			self.power_control_iface.setPowerState(1)
+			self.power_state=1
+		return None
+
+	@dbus.service.method("org.openbmc.ChassisControl",
+		in_signature='', out_signature='')
+	def setPowerOff(self):
+		print "Turn off power"
+		self.power_control_iface.setPowerState(0);
+		return None
+
+	@dbus.service.method("org.openbmc.ChassisControl",
+		in_signature='', out_signature='i')
+	def getPowerState(self):
+		state = self.power_control_iface.getPowerState();
+		return state
+
+	@dbus.service.method("org.openbmc.ChassisControl",
+		in_signature='', out_signature='')
+	def setDebugMode(self):
+		return None
+
+	@dbus.service.method("org.openbmc.ChassisControl",
+		in_signature='i', out_signature='')
+	def setPowerPolicy(self,policy):
+		return None
+
+	## Signal handler
+	def power_button_signal_handler(self):
+		# only power on if not currently powered on
+		state = self.getPowerState()
+		if state == 0:
+			self.setPowerOn()
+		elif state == 1:
+			self.setPowerOff();
+		
+		# TODO: handle long press and reset
+
+	## Signal handler
+	def power_good_signal_handler(self):
+		if (self.power_state==1):
+			self.host_control_iface.boot()
+			self.power_state=2
+
+
+
+if __name__ == '__main__':
+    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+    bus = dbus.SessionBus()
+    name = dbus.service.BusName("org.openbmc.ChassisControl", bus)
+    object = ChassisControlObject(bus, '/org/openbmc/ChassisControl')
+    mainloop = gobject.MainLoop()
+    bus.add_signal_receiver(object.power_button_signal_handler, dbus_interface = "org.openbmc.Button", signal_name = "ButtonPressed")
+    bus.add_signal_receiver(object.power_good_signal_handler, dbus_interface = "org.openbmc.PowerControl", signal_name = "PowerGood")
+
+    print "Running ChassisControlService"
+    mainloop.run()
+
diff --git a/bin/chassis_identify b/bin/chassis_identify
new file mode 100644
index 0000000..2396d4b
--- /dev/null
+++ b/bin/chassis_identify
Binary files differ
diff --git a/bin/flash_bios b/bin/flash_bios
new file mode 100644
index 0000000..c2679da
--- /dev/null
+++ b/bin/flash_bios
Binary files differ
diff --git a/bin/host_control b/bin/host_control
new file mode 100644
index 0000000..524b119
--- /dev/null
+++ b/bin/host_control
Binary files differ
diff --git a/bin/power_control b/bin/power_control
new file mode 100644
index 0000000..8ba016a
--- /dev/null
+++ b/bin/power_control
Binary files differ
diff --git a/bin/rest_server.py b/bin/rest_server.py
new file mode 100644
index 0000000..5a36e9e
--- /dev/null
+++ b/bin/rest_server.py
@@ -0,0 +1,123 @@
+#!/usr/bin/env python 
+
+from BaseHTTPServer import BaseHTTPRequestHandler
+import urlparse
+import dbus
+import json
+import re
+import xml.etree.ElementTree as ET
+
+def parseIntrospection(obj,interface,method=None):
+	introspect_iface = dbus.Interface(obj,"org.freedesktop.DBus.Introspectable")
+	tree = ET.ElementTree(ET.fromstring(introspect_iface.Introspect()))
+	root = tree.getroot()
+	r = []
+	for intf in root.iter('interface'):
+		if (intf.attrib['name'] == interface):
+			for methd in intf.iter('method'):
+				if (method == None):
+					r.append(methd.attrib['name'])
+				elif (method == methd.attrib['name']):
+					for arg in methd.iter('arg'):
+						a = [arg.attrib['name'],arg.attrib['type'],arg.attrib['direction']]
+						r.append(a)
+	return r
+
+def getArgFromSignature(args,signature):
+	if (signature == 'i'):
+		return int(args[0])
+	elif (signature == 's'):
+		return args[0];
+
+	raise Exception("Inavlid signature: "+signature)	
+		
+
+class GetHandler(BaseHTTPRequestHandler):
+	def do_GET(self):
+		url_data = urlparse.urlparse(self.path)
+		parms = urlparse.parse_qs(url_data.query)
+		self.objmap = {
+			'chassis' : ['org.openbmc.ChassisControl','/org/openbmc/ChassisControl','org.openbmc.ChassisControl'],
+			'flash' : ['org.openbmc.Flash.BIOS','/org/openbmc/Flash/BIOS/0','org.openbmc.Flash'],
+			'power' : ['org.openbmc.PowerControl','/org/openbmc/PowerControl/0','org.openbmc.PowerControl']
+		}
+		self.sensors = {
+			'/org/openbmc/Sensors/HostStatus/0' : ['org.openbmc.Sensors.HostStatus','org.openbmc.SensorIntegerSettable',0,""], 
+			'/org/openbmc/Sensors/Temperature/Ambient/0': ['org.openbmc.Sensors.Temperature.Ambient','org.openbmc.SensorInteger',0,""]
+		}
+
+
+		parts = url_data.path.split('/');
+		item = parts[1]
+		
+		method = ''
+		if (len(parts) > 2):
+			method = parts[2]
+
+		code = 403
+		payload = {'status': 'error'}
+		bus = dbus.SessionBus()
+
+		if (item == 'sensors'):
+			try:
+				for s in self.sensors.keys():
+					obj = bus.get_object(self.sensors[s][0],s)
+					iface = dbus.Interface(obj,self.sensors[s][1])
+					self.sensors[s][2] = iface.getValue()
+					self.sensors[s][3] = iface.getUnits()
+				
+				payload['status'] = 'ok'	
+				payload['sensors'] = self.sensors
+				code = 200
+			except dbus.exceptions.DBusException as e:
+				payload['error-message'] = e.get_dbus_name()
+
+		elif (self.objmap.has_key(item)):
+			bus_name = self.objmap[item][0]
+			obj_name = self.objmap[item][1] 
+			interface = self.objmap[item][2]
+			try:
+				obj = bus.get_object(bus_name,obj_name)
+					
+				if (method == ''):
+					payload['available-methods'] = parseIntrospection(obj,interface)
+				else:
+					args = parseIntrospection(obj,interface,method)
+					arg_array = []
+					signature_in = ''
+					signature_out = ''
+					for a in args:
+						if (a[2] == 'in'):
+							if (parms.has_key(a[0]) == False):
+								raise Exception("Method '"+method+"' requires argument '"+a[0]+"'")
+							arg_array.append(getArgFromSignature(parms[a[0]],a[1]))
+							signature_in = signature_in + a[1]
+						else:
+							signature_out = a[1]
+
+					rtn = bus.call_blocking(bus_name,obj_name,interface,method,signature_in,arg_array)
+
+				code = 200
+				payload['status'] = 'ok'
+
+			except dbus.exceptions.DBusException as e:
+				payload['error-message'] = str(e)
+			except Exception as ex:
+				payload['error-message'] = str(ex)
+				
+		else:
+			payload['status'] = 'ok'
+			payload['available-commands'] = self.objmap.keys()
+				
+		self.send_response(code)
+		self.send_header('Content-Type', 'application/json')
+		self.end_headers()
+		self.wfile.write(json.dumps(payload))
+		return
+
+if __name__ == '__main__':
+	from BaseHTTPServer import HTTPServer
+	server = HTTPServer(('', 3000), GetHandler)
+	print 'Starting server, use <Ctrl-C> to stop'
+	server.serve_forever()
+
diff --git a/bin/sensor_ambient b/bin/sensor_ambient
new file mode 100644
index 0000000..262be4a
--- /dev/null
+++ b/bin/sensor_ambient
Binary files differ
diff --git a/bin/sensor_host_status b/bin/sensor_host_status
new file mode 100644
index 0000000..77b6397
--- /dev/null
+++ b/bin/sensor_host_status
Binary files differ
