use `iterM` from free

'iterM' is exactly the same as 'foldRestr return'. Better to use it instead.