M4 breaking changes

This pull request is not ready, but anyone who wants to jump in send me a pull request.