New "GenericJoin" method to address joins where the parent model has the primary key and the child models point to parent.
Some refactoring