Oh, forgot to mention: Ramaze also uses (or used to) use the caller() result to find its root and would probably break too. ----- Brian Marick, independent consultant Mostly on agile methods with a testing slant Author of /Programming Cocoa with Ruby/ www.exampler.com, www.exampler.com/blog, www.twitter.com/marick