add some basic interface first