Further refactoring to allow making special matchers.