refactor M()