seperated flash download
diff --git a/bin/download_manager.py b/bin/download_manager.py
new file mode 100644
index 0000000..842b45e
--- /dev/null
+++ b/bin/download_manager.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+
+import sys
+import gobject
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import tftpy
+
+
+
+DBUS_NAME = 'org.openbmc.managers.Download'
+OBJ_NAME = '/org/openbmc/managers/Download'
+TFTP_PORT = 69
+DOWNLOAD_DIR = '/tmp'
+
+class DownloadManagerObject(dbus.service.Object):
+	def __init__(self,bus,name):
+		dbus.service.Object.__init__(self,bus,name)
+		bus = dbus.SessionBus()
+		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):
+		print "Download Complete: "+outfile
+		return outfile
+
+	@dbus.service.signal(DBUS_NAME)
+	def DownloadError(self):
+		pass
+
+	def DownloadHandler(self,url,filename):
+		try:
+			filename = str(filename)
+			client = tftpy.TftpClient(url, TFTP_PORT)
+			print "Downloading: "+filename+" from "+url
+			outfile = DOWNLOAD_DIR+"/"+filename
+			client.download(filename,outfile)
+			self.DownloadComplete(outfile)
+					
+		except Exception as e:
+			print "ERROR DownloadManager: "+str(e)
+			self.DownloadError()
+	
+
+
+if __name__ == '__main__':
+    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+    bus = dbus.SessionBus()
+    name = dbus.service.BusName(DBUS_NAME, bus)
+    obj = DownloadManagerObject(bus, OBJ_NAME)
+    mainloop = gobject.MainLoop()
+    
+    print "Running Download Manager"
+    mainloop.run()
+