implement progress loading on upload