proper rule apply using callback