updated flashing
diff --git a/bin/download_manager.py b/bin/download_manager.py
index a079efb..06e8773 100755
--- a/bin/download_manager.py
+++ b/bin/download_manager.py
@@ -23,13 +23,13 @@
 		bus.add_signal_receiver(self.DownloadHandler, 
 			dbus_interface = "org.openbmc.Flash", signal_name = "Download")
 
-	@dbus.service.signal(DBUS_NAME,signature='s')
-	def DownloadComplete(self,outfile):
+	@dbus.service.signal(DBUS_NAME,signature='ss')
+	def DownloadComplete(self,outfile,filename):
 		print "Download Complete: "+outfile
 		return outfile
 
-	@dbus.service.signal(DBUS_NAME)
-	def DownloadError(self):
+	@dbus.service.signal(DBUS_NAME,signature='s')
+	def DownloadError(self,filename):
 		pass
 
 	def DownloadHandler(self,url,filename):
@@ -39,11 +39,11 @@
 			print "Downloading: "+filename+" from "+url
 			outfile = System.FLASH_DOWNLOAD_PATH+"/"+filename
 			client.download(filename,outfile)
-			self.DownloadComplete(outfile)
+			self.DownloadComplete(outfile,filename)
 					
 		except Exception as e:
 			print "ERROR DownloadManager: "+str(e)
-			self.DownloadError()
+			self.DownloadError(filename)
 	
 
 
diff --git a/bin/flash_manager.py b/bin/flash_manager.py
deleted file mode 100755
index 43a1899..0000000
--- a/bin/flash_manager.py
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-import gobject
-import dbus
-import dbus.service
-import dbus.mainloop.glib
-import tftpy
-
-
-
-DBUS_NAME = 'org.openbmc.managers.Flash'
-OBJ_NAME = '/org/openbmc/managers/Flash'
-TFTP_PORT = 69
-DOWNLOAD_DIR = '/tmp'
-
-class FlashManagerObject(dbus.service.Object):
-	def __init__(self,bus,name):
-		self.dbus_objects = { }
-		self.status = { 'bios' : 'OK', 'bmc' : 'OK' }
-		dbus.service.Object.__init__(self,bus,name)
-		## load utilized objects
-		self.dbus_objects = {
-			'bios' : { 
-				'bus_name' : 'org.openbmc.flash.Bios',
-				'object_name' : '/org/openbmc/flash/Bios_0',
-				'interface_name' : 'org.openbmc.Flash'
-			},
-			'bmc' : {
-				'bus_name' : 'org.openbmc.flash.Bmc',
-				'object_name' : '/org/openbmc/flash/Bmc_0',
-				'interface_name' : 'org.openbmc.Flash'
-			}
-		}
-		bus.add_signal_receiver(self.UpdatedHandler, 
-			dbus_interface = "org.openbmc.Flash", signal_name = "Updated", path_keyword='path')
-
-
-	def UpdatedHandler(self,path = None):
-		print "Flash update finish: "+path
-		for flash in self.dbus_objects:
-			if (path == self.dbus_objects[flash]['object_name']):
-				self.status[flash] = 'OK'		
-
-	def getInterface(self,name):
-		o = self.dbus_objects[name]
-		obj = bus.get_object(o['bus_name'],o['object_name'])
-		return dbus.Interface(obj,o['interface_name'])
-
-	@dbus.service.method(DBUS_NAME,
-		in_signature='', out_signature='a{ss}')
-	def getStatus(self):
-		return self.status
-
-	@dbus.service.method(DBUS_NAME,
-		in_signature='sss', out_signature='')
-	def updateFromTftp(self,flash,url,filename):
-		if (self.dbus_objects.has_key(flash) == False):
-			print "ERROR FlashManager: Not a valid flash device: "+flash	
-			return
-		try:
-			## need to make download async
-			self.status[flash]="DOWNLOADING"
-			filename = str(filename)
-			client = tftpy.TftpClient(url, TFTP_PORT)
-			print "Downloading: "+filename+" from "+url
-			outfile = DOWNLOAD_DIR+"/"+filename
-			client.download(filename,outfile)
-			intf = self.getInterface(flash)
-			self.status[flash]="FLASHING"
-			intf.update(outfile)
-					
-		except Exception as e:
-			print "ERROR FlashManager: "+str(e)
-			self.status="ERROR"
-	
-
-
-if __name__ == '__main__':
-    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
-    bus = Openbmc.getDBus()
-    name = dbus.service.BusName(DBUS_NAME, bus)
-    obj = FlashManagerObject(bus, OBJ_NAME)
-    mainloop = gobject.MainLoop()
-    
-    print "Running Flash Manager"
-    mainloop.run()
-
diff --git a/bin/ipmi_example.py b/bin/ipmi_example.py
index 63d5df4..87b93a6 100755
--- a/bin/ipmi_example.py
+++ b/bin/ipmi_example.py
@@ -89,10 +89,14 @@
 		for i in data:
 			for k in data[i].keys():
 				print k+" = "+str(data[i][k]) 
-	elif (cmd == "updatefw"):
+	elif (cmd == "updatefwftp"):
 		obj = bus.get_object('org.openbmc.flash.Bios','/org/openbmc/flash/Bios_0')
 		intf = dbus.Interface(obj,"org.openbmc.Flash")
 		intf.updateViaTftp(sys.argv[2],sys.argv[3])
+	elif (cmd == "updatefwfile"):
+		obj = bus.get_object('org.openbmc.flash.Bios','/org/openbmc/flash/Bios_0')
+		intf = dbus.Interface(obj,"org.openbmc.Flash")
+		intf.update(sys.argv[2])
 	elif (cmd == "fwstatus"):
 		intf = Openbmc.getManagerInterface(bus,"Flash")
 		status = intf.getStatus()
diff --git a/bin/system_manager.py b/bin/system_manager.py
index 7ea3f02..000a60b 100755
--- a/bin/system_manager.py
+++ b/bin/system_manager.py
@@ -33,7 +33,6 @@
 		bus.add_signal_receiver(self.NewBusHandler,
 					dbus_interface = 'org.freedesktop.DBus', 
 					signal_name = "NameOwnerChanged")
-		bus.add_signal_receiver(self.HeartbeatHandler, signal_name = "Heartbeat")
 		bus.add_signal_receiver(self.SystemStateHandler,signal_name = "GotoSystemState")
 
 		self.current_state = ""
@@ -127,7 +126,6 @@
 			if (System.SYSTEM_CONFIG[bus_name]['start_process'] == True and
 				System.SYSTEM_CONFIG[bus_name].has_key('popen') and
 				System.SYSTEM_CONFIG[bus_name]['monitor_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()
@@ -135,27 +133,8 @@
 					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
-					
 		return True
 
-	def HeartbeatHandler(self,bus_name):
-		System.SYSTEM_CONFIG[bus_name]['heartbeat_count']=1	
-
 	def check_state_started(self):
 		r = True
 		if (self.current_state == ""):
@@ -171,10 +150,18 @@
 
 	def NewBusHandler(self, bus_name, a, b):
 		if (len(b) > 0 and bus_name.find(Openbmc.BUS_PREFIX) == 0):
+			start_time = time.time()
 			objects = {}
-			Openbmc.get_objs(bus,bus_name,"",objects)
-			for instance_name in objects.keys():
-				self.bus_name_lookup[objects[instance_name]['PATH']] = bus_name
+			try:
+				Openbmc.get_objs(bus,bus_name,"",objects)
+				for instance_name in objects.keys():
+					self.bus_name_lookup[objects[instance_name]['PATH']] = bus_name
+				end_time = time.time()
+				print "Elapsed time was %g seconds" % (end_time - start_time)
+				print bus_name
+
+			except:
+				pass
 			
 			if (System.SYSTEM_CONFIG.has_key(bus_name)):
 				System.SYSTEM_CONFIG[bus_name]['heartbeat_count'] = 0