ViewModel refactor end