Refactored PredicateBasedRule