switching interface to abstract class of  Matcher