refactor client UI