finished separation of view and ViewModel