Refactor of macros. Makes it much easier to add new matchers.