I really do not like this api. what it should match? also match should return `true` or `false` and not nil or self.