Why aren't these derived from a common pure virtual base class "Assignment" that describes the run interface?