M2M Refactor (Phase 1)