I guess my implementation is not fundamentally different from yours. All I did was delay the creation of certain lexically-scoped objects so that they may be "transported" across shell invocations more neatly. unix sucks.