Will possibly allow us to rewrite `rand` more efficiently. Perhaps `GoToProgramme` should have an `isvalid` field rather than throwing an error.