Refactor to allow implementation of question types