first pass at reduced public API