> How did I define the interface? The comment above the method. No, > I'm not kidding. Doesn't this make it very difficult to write frameworks where you often need to define an 'interface' that extensions should implement in order to plug into the framework? A practical example of this came up on the Nitro/Og mailing list where someone asked if there was any support for the Firebird database. The reply indicated that there wasn't but that the OP was welcome to contribute a 'Store' that the Og framework could use to interact with such a database. In other words, the Og framework needs to define (not necessarily in code) what implementaters of a 'Store' should be providing. In Java this could be acheived by either defining an abstract base class or (preferrably) an interface. This specifies the 'contract' that the framework expects a valid 'Store' instance to support. >From what you're saying, the answer in Ruby is to examine the code and/or the documentation, which is reasonable enough, but, it does seem to make it much more difficult to extend frameworks written in Ruby. Particularly since you wouldn't know whether you'd missed a method until you attempted to run some code.