rename `matcher` to `rule`
add a potential "peek" method