basic interface structure