M framework