MVVM pattern adapted into Assigment 2