updated inheritance system