separate data and ui a bit