It would be nice if a lot of the logic in this method could end up down in the view model.