MVVM Implementation