Totally new API, and tests