tweak to async version