>http://rm-f.net/~cout/code/ruby/treasures/RubyTreasures-0.3/lib/hacks/interface.rb.html > > but as I use Ruby more and more, I see less and less use for this. > > Paul This is what I was getting at. Nice code. Why do you feel that this is not needed in Ruby? I want to be able to create a specification, actually a bunch of them, and enforce that subclasses of each would always implement a base set of methods that could always be counted on to exist. Whoever said *contract* gets the point that I'm after. Think JDBC, for those of you who know Java, you know that JDBC is nothing but a *contract* that all vendors must implement in exactly the same way from the API, internally they are free to do as the wish. I want to enforce this same kind of contract in my code, not the database layer just the contract concept. I understand Ruby's `mixins' to be a work around for Ruby's lack of MI support. I understand Java uses Interfaces to work around its lack of MI support as well, however this is not my aim with this post, I'm stricly looking for contract enforcement. Paul's code is great, but I was hoping for something `sorta' built-into Ruby already. I think contract support is needed in large scall applications, somethig which Ruby could be used for more and more given the effects of More's Law and Ruby's clean OO model. Abstract Classes in C++, and Java's Inerfaces are neccessary for building large scale applications. My shop uses C++ Abstract classes all the time to enforce contracts; it would be difficult without them. Thanks for the discussion from everyone thus far... //ed