Implement MVVM Pattern