finished basic interface