modified class hierarch