reworked inheritance types, removed redundant code and tests.
lots and lots of rework. It seems to be functioning, but I need to write more tests.