might as well make it async