Add WARNM2 macro, plus some refactoring