refactor upload progress