M1 implementation