don't calculate value on each iteration