implemented basic interface