Added MatcherFunc* classes, refactored Matcher classes