Added extra null checks and changed the cards zone to be of type Optional<Zone>, rather than using null for signalling absence.