Refactoring to prevent the non-settable contact fields from being set; review fixes