refactored firmware uploader and added progress bar