diff --git a/bin/system_manager.py b/bin/system_manager.py
index 7d17da6..7b902c2 100644
--- a/bin/system_manager.py
+++ b/bin/system_manager.py
@@ -1,43 +1,54 @@
 #!/usr/bin/env python
 
+import sys
 import subprocess
 import gobject
 import dbus
 import dbus.service
 import dbus.mainloop.glib
 import xml.etree.ElementTree as ET
-import System
+
+if (len(sys.argv) < 2):
+	print "Usage:  system_manager.py [system name]"
+	exit(1)
+
+System = __import__(sys.argv[1])
+import Openbmc
 
 DBUS_NAME = 'org.openbmc.managers.System'
 OBJ_NAME = '/org/openbmc/managers/System'
-
-gpio_dev = '/sys/class/gpio'
-process_config = System.BarreleyeProcesses()
-gpio_config = System.BarreleyeGpios()
+HEARTBEAT_CHECK_INTERVAL = 20000
 
 def findConfigInstance(bus_name,obj_path):
 	line = obj_path.split('/')
 	instance_name = line[len(line)-1]
-	if (process_config.has_key(bus_name) == False):
+	if (System.SYSTEM_CONFIG.has_key(bus_name) == False):
 		return {}
-	for instance in process_config[bus_name]['instances']:
+	for instance in System.SYSTEM_CONFIG[bus_name]['instances']:
 		if (instance['name'] == instance_name):
 			return instance
 
-def parseIntrospection(bus_name,obj_name,interfaces):
+def parseIntrospection(bus_name,obj_name,interfaces,init_interfaces):
 	obj = bus.get_object(bus_name, obj_name)
 	introspect_iface = dbus.Interface(obj,'org.freedesktop.DBus.Introspectable')
 	tree = ET.ElementTree(ET.fromstring(introspect_iface.Introspect()))
 	root = tree.getroot()
 	interfaces[obj_name] = []
+	init_interfaces[obj_name] = {}
 	for intf in root.iter('interface'):
 		intf_name = intf.attrib['name']
 		if (intf_name == 'org.freedesktop.DBus.ObjectManager'):
 			manager = dbus.Interface(obj,'org.freedesktop.DBus.ObjectManager')
 			for managed_obj in manager.GetManagedObjects():
-				parseIntrospection(bus_name,managed_obj,interfaces)
-		elif (intf_name.find('org.openbmc') == 0):
+				parseIntrospection(bus_name,managed_obj,interfaces,init_interfaces)
+		elif (intf_name.find(Openbmc.BUS_PREFIX) == 0):
 			interfaces[obj_name].append(intf_name)
+			for method in intf.iter('method'):
+				if (method.attrib['name'] == 'init'):
+					#print "Init: "+obj_name+" : "+intf_name
+					init_interfaces[obj_name][intf_name]=1
+				
+
 
 
 class SystemManager(dbus.service.Object):
@@ -47,71 +58,99 @@
 					dbus_interface = 'org.freedesktop.DBus', 
 					signal_name = "NameOwnerChanged")
 		# launch dbus object processes
-		for bus_name in process_config.keys():
-			exe_name = process_config[bus_name]['exe_name']
-			cmdline = [ ]
-			cmdline.append(exe_name)
-			for instance in process_config[bus_name]['instances']:
-				cmdline.append(instance['name'])
-			subprocess.Popen(cmdline);
+		for bus_name in System.SYSTEM_CONFIG.keys():
+			self.start_process(bus_name)
 
-		gobject.timeout_add(5000, self.heartbeat_check)
+    		gobject.timeout_add(HEARTBEAT_CHECK_INTERVAL, self.heartbeat_check)
+
+	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)
+
 
 	def heartbeat_check(self):
 		print "heartbeat check"
-		for bus_name in process_config.keys():
-			if (process_config[bus_name]['heartbeat'] == 'yes'):
-				if (process_config[bus_name]['heartbeat_count'] == 0):
+		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)
+
+			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']
+					p.poll()
+					if (p.returncode == None):
+						print "Process must be hung, so killing"
+						p.kill()
+						
+					self.start_process(bus_name)			
 				else:
-					process_config[bus_name]['heartbeat_count'] == 0
-					print "Heartbeat ok"
+					System.SYSTEM_CONFIG[bus_name]['heartbeat_count'] = 0
+					print "Heartbeat ok: "+bus_name
+					
+		return True
 
 	def heartbeat_update(self,bus_name):
-		process_config[bus_name]['heartbeat_count']=1	
+		System.SYSTEM_CONFIG[bus_name]['heartbeat_count']=1	
 
 	def setup_sensor(self,intf):
 		pass 
 
 	def request_name(self, bus_name, a, b):
-		if (len(b) > 0 and bus_name.find('org.openbmc') == 0):
-			try:
-				if (process_config.has_key(bus_name)):
-					process_config[bus_name]['heartbeat_count'] = 0
-					obj_name = "/"+bus_name.replace('.','/')
-					interfaces = {}
-					parseIntrospection(bus_name,obj_name,interfaces)
-					for obj_path in interfaces.keys():
-						instance = findConfigInstance(bus_name,obj_path)
-						for intf_name in interfaces[obj_path]:
-							obj = bus.get_object(bus_name,obj_path)
-							intf = dbus.Interface(obj,intf_name)
-							if (intf_name == 'org.openbmc.SensorIntegerThreshold'):
-								intf.set(instance['lower_critical'],
-								instance['lower_warning'],
-								instance['upper_warning'],
-								instance['upper_critical'])
-									
-							if (intf_name == 'org.openbmc.SensorInteger'):
-								if (process_config[bus_name]['heartbeat'] == 'yes'):
-									bus.add_signal_receiver(self.heartbeat_update,
-										dbus_interface = intf_name, 
-										signal_name = "Heartbeat")
+		if (len(b) > 0 and bus_name.find(Openbmc.BUS_PREFIX) == 0):
+			if (System.SYSTEM_CONFIG.has_key(bus_name)):
+				System.SYSTEM_CONFIG[bus_name]['heartbeat_count'] = 0
+				obj_name = "/"+bus_name.replace('.','/')
+				interfaces = {}
+				init_interfaces = {}
+				# introspect object to get used interfaces
+				parseIntrospection(bus_name,obj_name,interfaces,init_interfaces)
+				for obj_path in interfaces.keys():
+					# find instance in system config
+					instance = findConfigInstance(bus_name,obj_path)
+					for intf_name in interfaces[obj_path]:
+						self.initObject(bus_name,obj_path,intf_name,instance)
+					for init_intf in init_interfaces[obj_path].keys():
+						obj = bus.get_object(bus_name,obj_path)
+						intf = dbus.Interface(obj,init_intf)
+						intf.init()
 
-								if (instance.has_key('parameters')):
-									intf.setConfigData(instance['parameters'])
 
-			except Exception as e:
-				print e
+	def initObject(self,bus_name,obj_path,intf_name,instance):
+		obj = bus.get_object(bus_name,obj_path)
+		intf = dbus.Interface(obj,intf_name)
+		if (instance.has_key('properties')):
+			properties = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
+			for prop_intf in instance['properties']:
+				for prop in instance['properties'][prop_intf]:
+					value = instance['properties'][prop_intf][prop]
+					properties.Set(prop_intf,prop,value)
 
-		if (len(b)==0  and bus_name.find('org.openbmc.sensors') == 0):
-			exe_name = process_config[bus_name]['exe_name']
-			cmdline = [ ]
-			cmdline.append(exe_name)
-			for instance in process_config[bus_name]['instances']:
-				cmdline.append(instance['name'])
- 
-			subprocess.Popen(cmdline);
+		## TODO: fix this explicit check
+		if (intf_name == 'org.openbmc.Control' or intf_name == 'org.openbmc.SensorInteger'):
+			if (System.SYSTEM_CONFIG[bus_name]['heartbeat'] == 'yes'):
+				print "Add heartbeat: "+intf_name;
+				bus.add_signal_receiver(self.heartbeat_update,
+						dbus_interface = intf_name, 
+						signal_name = "Heartbeat")
+		
+			if (instance.has_key('parameters')):
+				intf.setConfigData(instance['parameters'])
+
 
 	@dbus.service.signal(DBUS_NAME)
 	def CriticalThreshold(self, obj):
@@ -126,14 +165,14 @@
 	def gpioInit(self,name):
 		gpio_path = ''
 		gpio_num = 0
-		if (gpio_config.has_key(name) == False):
+		if (System.GPIO_CONFIG.has_key(name) == False):
 			# TODO: Error handling
 			print "ERROR: "+name+" not found in GPIO config table"
 			return ['',0,'']
 		else:
-			gpio_num = gpio_config[name]['gpio_num']
+			gpio_num = System.GPIO_CONFIG[name]['gpio_num']
 
-		return [gpio_dev, gpio_num, gpio_config[name]['direction']]
+		return [Openbmc.GPIO_DEV, gpio_num, System.GPIO_CONFIG[name]['direction']]
 
 
 if __name__ == '__main__':
@@ -143,7 +182,6 @@
     obj = SystemManager(bus,OBJ_NAME)
     mainloop = gobject.MainLoop()
 
-    
     print "Running SystemManager"
     mainloop.run()
 
