diff --git a/bin/sensor_manager.py b/bin/sensor_manager.py
index cb0904e..bcf3fd8 100644
--- a/bin/sensor_manager.py
+++ b/bin/sensor_manager.py
@@ -13,12 +13,12 @@
 import Openbmc
 
 DBUS_NAME = 'org.openbmc.managers.Sensors'
-OBJ_NAME = '/org/openbmc/managers/Sensors/'+sys.argv[1]
+OBJ_NAME = '/org/openbmc/managers/Sensors'
 
 class SensorManager(dbus.service.Object):
 	def __init__(self,bus,name):
 		dbus.service.Object.__init__(self,bus,name)
-		bus.add_signal_receiver(self.UpdateSensor,
+		bus.add_signal_receiver(self.SensorChangedHandler,
 					dbus_interface = 'org.openbmc.SensorValue', 
 					signal_name = 'Changed', path_keyword='path')
 		bus.add_signal_receiver(self.NormalThreshold,
@@ -32,16 +32,46 @@
 					signal_name = 'Critical', path_keyword='path')
 
 		self.sensor_cache = {}
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='', out_signature='a{sv}')
+	def getSensorsAll(self):
+		return self.sensor_cache;
+	
+	@dbus.service.method(DBUS_NAME,
+		in_signature='y', out_signature='v')
+	def getSensorFromId(self,ipmi_id):
+		intf_sys = Openbmc.getManagerInterface(bus,"System")
+		obj_info = intf_sys.getObjFromIpmi(ipmi_id)
+		intf_name = str(obj_info[0])
+		obj_name = str(obj_info[1])
+		return self.getSensor(obj_name)
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='yv', out_signature='')
+	def setSensorFromId(self,ipmi_id,value):
+		intf_sys = Openbmc.getManagerInterface(bus,"System")
+		obj_info = intf_sys.getObjFromIpmi(ipmi_id)
 		
+		obj = bus.get_object(obj_info[0],obj_info[1])
+		intf = dbus.Interface(obj,"org.openbmc.SensorValue")
+		intf.setValue(value)
+		return None
+
+	
 	@dbus.service.method(DBUS_NAME,
 		in_signature='s', out_signature='v')
 	def getSensor(self,path):
-		val = None
+		val = 0
 		if (self.sensor_cache.has_key(path) == True):
 			val = self.sensor_cache[path]['value']
+		else:
+			# TODO: error handling
+			print "Unknown sensor at: "+path
 		return val
-		
-	def UpdateSensor(self,value,units,path = None):
+	
+	## Signal handlers	
+	def SensorChangedHandler(self,value,units,path = None):
 		self.initSensorEntry(path)
 		self.sensor_cache[path]['value'] = value
 		self.sensor_cache[path]['units'] = units
