M2M Refactor (Phase 3)