added requirements for choice, as well as getters and setters