Alpha0.5

Implementation of the draft API.
In progress.
I don't understand why we've introduced a class called DataUser.  More comments here?  Is this really necessary?