Refactored relationships to use separate object and cache/populate each other