new iterator based report generation