It looks strange to see the same three args repeated twice in the default rules. Predicate and action functions is slightly misleading because you're supplying classes and if I supplied a function it would fail.