viewModelImplementation