The approach sketched in question_classes.py is crufty.