updated with ui and everything.