From: Lennon Day-Reynolds Date: 2004-06-18T01:55:01+09:00 Subject: Re: Delayed Instantiation - delayed.rb That just means that you need something like the BlankSlate class, (http://jimweirich.umlcoop.net/index.cgi/Tech/Ruby/BlankSlate.rdoc) which doesn't inherit all of the default methods from Object. That way, even built-in methods pass through to the delayed object. There's also a hack I remember seeing out there somewhere that allows one object to "become" another, so the DelayedInstance would actually adopt the identity of the instantiated object, removing the additional indirection on each method call. Of course, an argument could be made that it's good to have some indication that you're dealing with a proxy object, and let some methods from that object stay exposed. The bigger problem with this simple example is that it breaks the "duck typing" idiom; using 'method_missing' indirection (esp. if built-in methods are removed, as I suggest above) will give misleading results if you call 'responds_to?'. You should be able to fix it by overriding 'responds_to?' in the DelayedInstance class, and checking the methods of your @object, instead of the proxy. Lennon