scala classhierarch reivew