The thing is that there is a connection between two pieces in your code (the place where you check ```child !== childNodes[i]``` and the place in ```fn(child)``` where you mutate the DOM), and this connection is not apparent just by looking at the code. Make the ```fn``` return something if you need it here. There is no schame in returning values from functions. I guarantee that you will be much happier if you convert ```NodeLists``` to arrays first thing (as I said, jQuery actually got that right).