add question model and some updates