refactor, changes to the ONE layout allowed, and check out the pattern for models and viewmodels.