Eli, I must say this sounds like a very partial solution to a deep problem. If loop is wrong, what do you do? If loop is wrong and replaced, how do you get to other references to the old value? (define x (let ([foo loop]) (lambda ...))) If loop is wrong and you do get to all these values, how do you flush the cache of these old values? -- Matthias