better question type implementation