WIP: simpler async API