If any fields are added or the ordering changes all these pattern matches will break...