optimize row loop