enum used in factory pattern. custom matcher implemented