changed rule evaluation to be completely async