refactor image uploads, add progress indicator