require async or sync