added inheritence
inital rework