step #4. View + ViewModel