divide into app and webui