ViewModel refactor start