first draft of the programmer-facing API done