Updated M9 implementation