react model with ui/state attributes. not tested.