ensure deep inheritance