implement inherit mechanism