refactor UIBuilder