moving these to a clearer separation of what's your api/entry point and what is black boxed