download on background thread