M2M Refactor (Phase 4)