viewmodels restructured