Revise problem class model to be consistent with the one needed for SMR

Also, the depth-first method resolution order (MRO) of the class model
needs to be revised. See how Python does the breadth-first MRO.