iteratee refactor wip