Generate error message more sensibly
No point in storing the type separately

Will already have the object itself...
Use case statement for matching question types
More sensible naming
Move dictionary creation out of loop (performance)