added inheritance system