first attempt trying to figure out what should be included in each
interface.