API - first pass done
WIP