implement asyncF