add questionnaire, refactor some base classes