diff --git a/bin/chassis_control.py b/bin/chassis_control.py
index 1118c4b..d11ab40 100644
--- a/bin/chassis_control.py
+++ b/bin/chassis_control.py
@@ -5,6 +5,9 @@
 import dbus.service
 import dbus.mainloop.glib
 
+DBUS_NAME = 'org.openbmc.control.Chassis'
+OBJ_NAME = '/org/openbmc/control/Chassis'
+
 POWER_OFF = 0
 POWER_ON = 1
 
@@ -15,19 +18,19 @@
 		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')
+			power_control_service = bus.get_object('org.openbmc.control.Power','/org/openbmc/control/Power/0')
+			self.power_control_iface = dbus.Interface(power_control_service, 'org.openbmc.control.Power')
 			# Get ChassisIdentify object
-			chassis_identify_service = bus.get_object('org.openbmc.ChassisIdentify','/org/openbmc/ChassisIdentify/0')
+			chassis_identify_service = bus.get_object('org.openbmc.leds.ChassisIdentify','/org/openbmc/leds/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');
+			host_control_service = bus.get_object('org.openbmc.control.Host','/org/openbmc/control/Host/0')
+			self.host_control_iface = dbus.Interface(host_control_service, 'org.openbmc.control.Host');
 
 			bus.add_signal_receiver(self.power_button_signal_handler, 
 						dbus_interface = "org.openbmc.Button", signal_name = "ButtonPressed")
     			bus.add_signal_receiver(self.power_good_signal_handler, 
-						dbus_interface = "org.openbmc.PowerControl", signal_name = "PowerGood")
+						dbus_interface = "org.openbmc.control.Power", signal_name = "PowerGood")
 
 
 		except dbus.exceptions.DBusException, e:
@@ -35,13 +38,13 @@
 			print "Unable to find dependent services: ",e
 
 
-	@dbus.service.method("org.openbmc.ChassisControl",
+	@dbus.service.method(DBUS_NAME,
 		in_signature='', out_signature='s')
 	def getID(self):
 		return id
 
 
-	@dbus.service.method("org.openbmc.ChassisControl",
+	@dbus.service.method(DBUS_NAME,
 		in_signature='', out_signature='')
 	def setIdentify(self):
 		print "Turn on identify"
@@ -49,14 +52,14 @@
 		return None
 
 
-	@dbus.service.method("org.openbmc.ChassisControl",
+	@dbus.service.method(DBUS_NAME,
 		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",
+	@dbus.service.method(DBUS_NAME,
 		in_signature='', out_signature='')
 	def setPowerOn(self):
 		print "Turn on power and boot"
@@ -66,25 +69,25 @@
 			self.power_sequence = 1
 		return None
 
-	@dbus.service.method("org.openbmc.ChassisControl",
+	@dbus.service.method(DBUS_NAME,
 		in_signature='', out_signature='')
 	def setPowerOff(self):
 		print "Turn off power"
 		self.power_control_iface.setPowerState(POWER_OFF);
 		return None
 
-	@dbus.service.method("org.openbmc.ChassisControl",
+	@dbus.service.method(DBUS_NAME,
 		in_signature='', out_signature='i')
 	def getPowerState(self):
 		state = self.power_control_iface.getPowerState();
 		return state
 
-	@dbus.service.method("org.openbmc.ChassisControl",
+	@dbus.service.method(DBUS_NAME,
 		in_signature='', out_signature='')
 	def setDebugMode(self):
 		return None
 
-	@dbus.service.method("org.openbmc.ChassisControl",
+	@dbus.service.method(DBUS_NAME,
 		in_signature='i', out_signature='')
 	def setPowerPolicy(self,policy):
 		return None
@@ -112,8 +115,8 @@
     dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
 
     bus = dbus.SessionBus()
-    name = dbus.service.BusName("org.openbmc.ChassisControl", bus)
-    obj = ChassisControlObject(bus, '/org/openbmc/ChassisControl')
+    name = dbus.service.BusName(DBUS_NAME, bus)
+    obj = ChassisControlObject(bus, OBJ_NAME)
     mainloop = gobject.MainLoop()
     
     print "Running ChassisControlService"
