M2M Refactor (Phase 5)