Api draft

First API draft for this project
Inner interface and class definitions should be on the bottom of the class.