any
This makes syntactically clear which types are rather expensive.
This will decouple building extra rules from built-in rules so that making changes in one of those modules doesn't rebuild the other.