Improvements required to support inheritance and maybe more complex circular dependencies