Major API and implementation changes

We are getting there.