questions class hierachy refactored