download with progress