object inheritance structure