WIP
first stab at a public api
Merge branch 'public-api' into cmake
WIP
WIP
WIP