lots of changes
diff --git a/bin/PropertyManager.py b/bin/PropertyManager.py
index 312c688..ff0e200 100644
--- a/bin/PropertyManager.py
+++ b/bin/PropertyManager.py
@@ -4,81 +4,84 @@
 import cPickle
 import os
 import Openbmc
-import gobject
 import dbus
 import dbus.service
 import dbus.mainloop.glib
+from gi.repository import Gio, GLib, GObject
 
 
-SAVE_PATH = 'data/'
-
-def loadProperties(bus,bus_name,obj_path,properties):
-	## Load properties from system config
-	obj = bus.get_object(bus_name,obj_path)
-	dbus_properties = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
-	for prop_interface in properties.keys():
-		print "Intf: "+prop_interface
-		for prop in properties[prop_interface]:
-			tmp_val = dbus_properties.Get(prop_interface,prop)
-			dbus_prop = Openbmc.DbusProperty(prop,tmp_val)
-			value = properties[prop_interface][prop]
-			dbus_prop.changeValue(value)
-			dbus_properties.Set(prop_interface,prop,dbus_prop.getValue())
-		
-		## if save file exists, overlay properties from file
-		directory = obj_path.replace('/','.')
-		directory = SAVE_PATH+directory.lstrip('.')
-		filename = directory+"/"+prop_interface
-		if (os.path.isfile(filename) == False):
-			## not an error	
-			print "No cache available for: "+filename
-		else:
-			try:
-				print "Loading from disk: "+obj_path
-				output = open(filename, 'rb')
-				dbus_props = cPickle.load(output)
-				output.close()
-				save_properties = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
-				for dbus_prop in dbus_props:
-					save_properties.Set(prop_interface,dbus_prop.getName(),dbus_prop.getValue())
-		
-			except Exception as e:
-				## TODO: Error handling
-				print "Error loadFru: "+str(e)
-
-	return None
-
-def saveProperties(bus,bus_name,obj_path,interface_name,cache,properties):
-	obj = bus.get_object(bus_name,obj_path)
-	prop_intf = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
-
-	for prop in properties.keys():
-		print "Saving properties: "+prop
-		prop_intf.Set(interface_name,prop,properties[prop])
-
-
-	dbus_props = []
-	if (cache):
-		print "Caching: "+obj_path
-		all_properties = prop_intf.GetAll(interface_name)
-		for prop in all_properties.keys():
-			dbus_prop = Openbmc.DbusProperty(prop,all_properties[prop])
-			dbus_props.append(dbus_prop)
-		
-		try:
+class PropertyManager():
+	def __init__(self,bus,save_path):
+		self.bus = bus
+		self.save_path = save_path
+	
+	def loadProperties(self,bus_name,obj_path,properties):
+		## Load properties from system config
+		obj = self.bus.get_object(bus_name,obj_path)
+		dbus_properties = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
+		for prop_interface in properties.keys():
+			for prop in properties[prop_interface]:
+				tmp_val = dbus_properties.Get(prop_interface,prop)
+				dbus_prop = Openbmc.DbusProperty(prop,tmp_val)
+				value = properties[prop_interface][prop]
+				dbus_prop.setValue(value)
+				dbus_properties.Set(prop_interface,prop,dbus_prop.getValue())
+			
+			## if save file exists, overlay properties from file
 			directory = obj_path.replace('/','.')
-			directory = SAVE_PATH+directory.lstrip('.')
-			filename = directory+"/"+interface_name	
-			if not os.path.exists(directory):
-   				os.makedirs(directory)
-
-			output = open(filename, 'wb')
-			cPickle.dump(dbus_props,output)
-			output.close()	
-		except Exception as e:
-			## TODO: error handling
-			print str(e)
+			directory = self.save_path+directory.lstrip('.')
+			filename = directory+"/"+prop_interface
+			if (os.path.isfile(filename) == False):
+				## not an error	
+				print "No cache available for: "+filename
+			else:
+				try:
+					print "Loading from disk: "+obj_path
+					output = open(filename, 'rb')
+					dbus_props = cPickle.load(output)
+					output.close()
+					save_properties = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
+					for dbus_prop in dbus_props:
+						save_properties.Set(prop_interface,dbus_prop.getName(),dbus_prop.getValue())
 		
-	return None
+				except Exception as e:
+					## TODO: Error handling
+					print "Error loadFru: "+str(e)
+
+		return None
+
+	def saveProperties(self,bus_name,obj_path,interface_name,cache,properties):
+		obj = self.bus.get_object(bus_name,obj_path)
+		prop_intf = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
+
+		for prop in properties.keys():
+			print "Saving properties: "+prop
+			## convert property to correct dbus type
+			print type(properties[prop])
+			prop_intf.Set(interface_name,prop,properties[prop])
+
+		dbus_props = []
+		if (cache):
+			print "Caching: "+obj_path
+			all_properties = prop_intf.GetAll(interface_name)
+			for prop in all_properties.keys():
+				dbus_prop = Openbmc.DbusProperty(prop,all_properties[prop])
+				dbus_props.append(dbus_prop)
+		
+			try:
+				directory = obj_path.replace('/','.')
+				directory = self.save_path+directory.lstrip('.')
+				filename = directory+"/"+interface_name	
+				if not os.path.exists(directory):
+   					os.makedirs(directory)
+
+				output = open(filename, 'wb')
+				cPickle.dump(dbus_props,output)
+				output.close()	
+			except Exception as e:
+				## TODO: error handling
+				print str(e)
+		
+		return None