first pass at actual exported interface, initially only focusing on the in process api