WIP - still thinking about the API