adding pause resume and cancel functionality
don't exit on download routine error
remove temp file on error
don't pass as many pointers to key event handlers
cancelation and error should be distinct