revised structure to pseudo classical OO