lots of changes
diff --git a/bin/inventory_items.py b/bin/inventory_items.py
index d337d95..d27abd3 100755
--- a/bin/inventory_items.py
+++ b/bin/inventory_items.py
@@ -18,6 +18,7 @@
 
 INTF_NAME = 'org.openbmc.InventoryItem'
 DBUS_NAME = 'org.openbmc.managers.Inventory'
+ENUM_INTF = 'org.openbmc.Object.Enumerate'
 
 FRUS = System.FRU_INSTANCES
 FRU_PATH = System.FRU_PATH
@@ -35,74 +36,70 @@
 	def addItem(self,item):
 		self.objects.append(item)
 
-	@dbus.service.method("org.openbmc.managers.Inventory",
+	@dbus.service.method(ENUM_INTF,
 		in_signature='', out_signature='a{sa{sv}}')
-	def getItems(self):
+	def enumerate(self):
 		tmp_obj = {}
 		for item in self.objects:
-			tmp_obj[str(item.item['name'])]=item.getItemDict()
+			tmp_obj[str(item.name)]=item.GetAll(INTF_NAME)
 		return tmp_obj
 			
 
 
-class InventoryItem(dbus.service.Object):
-	def __init__(self,bus,name):
+class InventoryItem(Openbmc.DbusProperties):
+	def __init__(self,bus,name):		
+		Openbmc.DbusProperties.__init__(self)
 		dbus.service.Object.__init__(self,bus,name)
-		## store all properties in a dict so can easily
-		## send on dbus
-		self.item = {
-			'name' : name,
-			'is_fru' : False,
-			'fru_type' : 0,
-			'state'  : 0,
-			'manufacturer' : "",
-		}
+		self.name = name
 		self.cache = True
-
-	def getItemDict(self):
-		return self.item
-
-	@dbus.service.method('org.openbmc.InventoryItem',
+		self.Set(INTF_NAME,'is_fru',False)
+		self.Set(INTF_NAME,'fru_type',0)
+		self.Set(INTF_NAME,'present',"INACTIVE")
+		self.Set(INTF_NAME,'fault',"NONE")
+	
+		
+		
+	@dbus.service.method(INTF_NAME,
 		in_signature='a{sv}', out_signature='')
 	def update(self,data):
 		## translate dbus data into basic data types
 		for k in data.keys():
-			d = Openbmc.DbusProperty(k,data[k])
-			self.item[str(k)] = d.getBaseValue()
+			self.setField(k,data[k])
+
 		self.saveToCache()
 
-	@dbus.service.method("org.openbmc.InventoryItem",
+	@dbus.service.method(INTF_NAME,
 		in_signature='s', out_signature='')
 	def setPresent(self,present):
-		self.item['present'] = present
-		print "Set Present: "+str(present)
+		self.setField('present',present)
 
-	@dbus.service.method("org.openbmc.InventoryItem",
+	@dbus.service.method(INTF_NAME,
 		in_signature='s', out_signature='')
 	def setFault(self,fault):
-		self.item['fault_state'] = fault
-		print "Set Fault: "+str(fault)
+		self.setField('fault',fault)
 
 	def setField(self,field,value):
-		self.item[field] = value
+		f = str(field)
+		d = Openbmc.DbusVariable(f,value)
+		self.Set(INTF_NAME,f,d.getBaseValue())
 
 	def isCached(self):
 		return self.cache
 
 	def getCacheFilename(self):
 		global FRU_PATH
-		name = self.item['name'].replace('/','.')
+		name = self.name.replace('/','.')
 		filename = FRU_PATH+name[1:]+".fru"
 		return filename
 	
 	def saveToCache(self):
 		if (self.isCached() == False):
 			return
-		print "Caching: "+self.item['name']
+		print "Caching: "+self.name
 		try: 
 			output = open(self.getCacheFilename(), 'wb')
-			## just pickle dict not whole object
-			cPickle.dump(self.item,output)
+			## save properties
+			cPickle.dump(self.properties[INTF_NAME],output)
 		except Exception as e:
 			print "ERROR: "+str(e)
 		finally:
@@ -119,7 +116,7 @@
 				p = open(filename, 'rb')
 				data2 = cPickle.load(p)
 				for k in data2.keys():
-					self.item[k] = data2[k]
+					self.setField(k,data2[k])
 			except Exception as e:
 				print "No cache file found: " +str(e)
 			finally:
@@ -131,7 +128,7 @@
     bus = Openbmc.getDBus()
     name = dbus.service.BusName(DBUS_NAME,bus)
     mainloop = gobject.MainLoop()
-    obj_parent = Inventory(bus, '/org/openbmc/managers/Inventory')
+    obj_parent = Inventory(bus, '/org/openbmc/inventory')
 
     for f in FRUS.keys():
 	obj_path=f.replace("<inventory_root>",System.INVENTORY_ROOT)