whole ui refactoring