added some interfaces as first thoughts