Implemented MVVM pattern