Add matcher protocol and a couple of example uses