add comments and close TODO
use Async to give us an API