refactoring Matcher