Updated viewmodel to have flat stuff, no data wrapper. This makes viewmodels more intuitive to define, but adds a bit of complexity in setData because when we evaluate what to change, we need to prohibit changing private viewmodel stuff. Maybe there's a better way to do this. Not sure.