Output: each:a each: node:a yields:b each: node:a yields: node:b yields:c each: node:a yields:d Ok, from this example, I don't know how the #{e} in "child_node.each { |e| yield "node:#{value} yields:#{e}" }" turns into "node:b yields:c" because the #{e} isn't calling yield is it? Sorry for the trouble, I just can't seem to understand...when I walk through the algorithm with my logic it seems that it should just say "each: node b yields c"...which is obviously not the correct output. I'll continue reviewing your example, though, but if you can explain in any other way, that'd be great. Thanks again! -- Posted via http://www.ruby-forum.com/.