introduce hierarchical QuestionNode structure. flatten in client for now