Use more macros, move check methods to "static"