lots of changes
diff --git a/bin/system_manager.py b/bin/system_manager.py
index 3275dc9..e96e547 100644
--- a/bin/system_manager.py
+++ b/bin/system_manager.py
@@ -2,11 +2,11 @@
 
 import sys
 import subprocess
-import gobject
+from gi.repository import GObject
+
 import dbus
 import dbus.service
 import dbus.mainloop.glib
-#import xml.etree.ElementTree as ET
 import os
 import PropertyManager
 
@@ -25,20 +25,12 @@
 class SystemManager(dbus.service.Object):
 	def __init__(self,bus,name):
 		dbus.service.Object.__init__(self,bus,name)
-		#self.sensor_manager_running = False
-		#self.fru_manager_running = False
-		#self.inited = False
 		
+		self.property_manager = PropertyManager.PropertyManager(bus,System.CACHE_PATH)
 		## Signal handlers
 		bus.add_signal_receiver(self.NewBusHandler,
 					dbus_interface = 'org.freedesktop.DBus', 
 					signal_name = "NameOwnerChanged")
-		#bus.add_signal_receiver(self.FruRunningHandler,
-		#			dbus_interface = 'org.openbmc.managers.Frus'
-		#			signal_name = "OpenBmcRunning")
-		#bus.add_signal_receiver(self.SensorRunningHandler,
-		#			dbus_interface = 'org.openbmc.managers.Sensors'
-		#			signal_name = "OpenBmcRunning")
 		bus.add_signal_receiver(self.CacheMeHandler,
 					signal_name = 'CacheMe', path_keyword='path',interface_keyword='interface')
 
@@ -52,56 +44,58 @@
 			pass
 		
 		bus.add_signal_receiver(self.HeartbeatHandler, signal_name = "Heartbeat")
-    		gobject.timeout_add(HEARTBEAT_CHECK_INTERVAL, self.heartbeat_check)
+    		GObject.timeout_add(HEARTBEAT_CHECK_INTERVAL, self.heartbeat_check)
 
 	def CacheMeHandler(self,busname,path=None,interface=None):
 		#interface_name = 'org.openbmc.Fru'
 		print "CacheME: "+busname+","+path+","+interface
 		data = {}
 		cache = System.CACHED_INTERFACES.has_key(interface)
-		PropertyManager.saveProperties(bus,busname,path,interface,cache,data)
+		self.property_manager.saveProperties(busname,path,interface,cache,data)
 
 
 	def start_process(self,bus_name):
-		exe_name = System.SYSTEM_CONFIG[bus_name]['exe_name']
-		cmdline = [ ]
-		cmdline.append(exe_name)
-		for instance in System.SYSTEM_CONFIG[bus_name]['instances']:
-			cmdline.append(instance['name'])
-		try:
-			print "Starting process: "+" ".join(cmdline)
-			System.SYSTEM_CONFIG[bus_name]['popen'] = subprocess.Popen(cmdline);
-		except Exception as e:
-			## TODO: error
-			print "Error starting process: "+" ".join(cmdline)
+		if (System.SYSTEM_CONFIG[bus_name]['start_process'] == True):
+			process_name = System.BIN_PATH+System.SYSTEM_CONFIG[bus_name]['process_name']
+			cmdline = [ ]
+			cmdline.append(process_name)
+			for instance in System.SYSTEM_CONFIG[bus_name]['instances']:
+				cmdline.append(instance['name'])
+			try:
+				print "Starting process: "+" ".join(cmdline)
+				System.SYSTEM_CONFIG[bus_name]['popen'] = subprocess.Popen(cmdline);
+			except Exception as e:
+				## TODO: error
+				print "Error starting process: "+" ".join(cmdline)
 
 	def heartbeat_check(self):
 		print "heartbeat check"
 		for bus_name in System.SYSTEM_CONFIG.keys():
-			## even if process doesn't request heartbeat check, 
-			##   make sure process is still alive
-			p = System.SYSTEM_CONFIG[bus_name]['popen']
-			p.poll()
-			if (p.returncode != None):
-				print "Process for "+bus_name+" appears to be dead"
-				self.start_process(bus_name)
-
-			## process is alive, now check if heartbeat received
-			## during previous interval
-			elif (System.SYSTEM_CONFIG[bus_name]['heartbeat'] == 'yes'):
-				if (System.SYSTEM_CONFIG[bus_name]['heartbeat_count'] == 0):
-					print "Heartbeat error: "+bus_name
-					p = System.SYSTEM_CONFIG[bus_name]['popen']
-					## TODO: error checking
-					p.poll()
-					if (p.returncode == None):
-						print "Process must be hung, so killing"
-						p.kill()
+			if (System.SYSTEM_CONFIG[bus_name]['start_process'] == True):
+				## even if process doesn't request heartbeat check, 
+				##   make sure process is still alive
+				p = System.SYSTEM_CONFIG[bus_name]['popen']
+				p.poll()
+				if (p.returncode != None):
+					print "Process for "+bus_name+" appears to be dead"
+					self.start_process(bus_name)
+	
+				## process is alive, now check if heartbeat received
+				## during previous interval
+				elif (System.SYSTEM_CONFIG[bus_name]['heartbeat'] == 'yes'):
+					if (System.SYSTEM_CONFIG[bus_name]['heartbeat_count'] == 0):
+						print "Heartbeat error: "+bus_name
+						p = System.SYSTEM_CONFIG[bus_name]['popen']
+						## TODO: error checking
+						p.poll()
+						if (p.returncode == None):
+							print "Process must be hung, so killing"
+							p.kill()
 						
-					self.start_process(bus_name)			
-				else:
-					System.SYSTEM_CONFIG[bus_name]['heartbeat_count'] = 0
-					print "Heartbeat ok: "+bus_name
+						self.start_process(bus_name)			
+					else:
+						System.SYSTEM_CONFIG[bus_name]['heartbeat_count'] = 0
+						print "Heartbeat ok: "+bus_name
 					
 		return True
 
@@ -121,7 +115,7 @@
 					obj_path = obj_root+'/'+instance['name']
 					obj_paths.append(obj_path)
 					if (instance.has_key('properties')):
-						PropertyManager.loadProperties(bus,bus_name,obj_path,												instance['properties'])
+						self.property_manager.loadProperties(bus_name,obj_path,												instance['properties'])
 
 				## After object properties are setup, call init method if requested
 				if (System.SYSTEM_CONFIG[bus_name].has_key('init_methods')):
@@ -154,7 +148,7 @@
     bus = dbus.SessionBus()
     name = dbus.service.BusName(DBUS_NAME,bus)
     obj = SystemManager(bus,OBJ_NAME)
-    mainloop = gobject.MainLoop()
+    mainloop = GObject.MainLoop()
 
     print "Running SystemManager"
     mainloop.run()