add basic function and user interface