https://velitasali.com/en/blog/development/going-with-mvvp/
Adopting MVVM