more async api impl (wip)