make matching rules more flexible and awesome