Refactored to improve interface consistency, add canEquals, equals and hashCode and substantially reduce code logic by making UnitToBaseAssociationImpl take two BaseGroup instances for its constructor. Also refactored the instance factories to casade their calls to a single factory method which does the only concrete instantiation.