Hello James, JEGI> You don't really just say, "Pass in an object that responds to X, Y, JEGI> and Z." in the RDoc, do you? Unfortunately yes. And it is of course a huge source of errors. It would be much better if ruby would support formally interfaces in the same way as Smalltalk supports protocols. These interfaces are notation only and are only used by the IDE to check if a method is missing. You can't do something against passing a wrong object in a dynamically typed language, but you can do something against missing methods during implementation. Remember that the problems grow if the interface changes and you have old ruby code, since even if you write test cases you will normally not catch all those errors, leaving this upto your customers. This is why many people think that languages like ruby are not good for programming in the large. -- Best regards, emailto: scholz at scriptolutions dot com Lothar Scholz http://www.ruby-ide.com CTO Scriptolutions Ruby, PHP, Python IDE 's