Further refactoring to allow making special matchers.
Fix the matcher movement