this is really slow; we'll trigger it after all rules