refactor to use process_answers and process_question internal functions
fix all the things, erm remarks