Alpha0.5

Implementation of the draft API.
In progress.
Don't forget to add inline docs to this public method.  You already have them in the API spec anyway so it should be simple to cut and paste.