(extra) refactored code; add contacts and viewmodel