Draft API

This is a draft of the API I would like to have, nothing real, work in progress.