This sum() doesn't sit right with me, though I know it was there before.  We're making a list just to iterate the list, we could just iterate over the base classes, etc, though that would require writing a generator or two.