even better rule applier design :)