add question bank and do some refactor