improve UI and add service model