view model is now created via a constructor