webui refactored