adapt to OO inheritance model