the base structure
combine with ui