starting with some basic interface definitions