reworked inheritance to be setup in OO way. got to solve cyclical constructor call issue