SingleChoiceViewController added, refactor several classes