A few of questions about Marshal.dump: The second parameter is supposed to be optional. How does ruby determine that the second parameter has been missed out, but not the third (limit)? If the limit is negative, the depth is not checked. Presumably the limit is not ignored -- the only difference is the generation of an error message. Is that right? I mean, a negative limit doesn't mean "keep going down till you have the whole object", for example? When the limit is exceeded and chaecking is on, how difficult would it be to produce a suggested depth to use for the thing being dumped? I imagine one might check up to 3..10 levels deeper to see if that would be enough, because there are bound to be pathological structures that need a depth of 4096 or worse, but I don't know what people think about that. Hugh hgs / dmu.ac.uk