Did major refactor with inheritance