+ Download function with progress report