M2M Refactor (Phase 2)