extract rule iteration and evaluation into a separate method