Actually, I thought of the same thing too when I first ``met'' es. I thought that as ``while'' took program fragments, so would ``for''. I looked into the source code and realized why ``for'' is like the way it is, because it is a binder like let/local. I suppose I would have liked it to be as the other primitives, but I don't think it actually would be that easy to change it to a primitive. Pete.