Well, Mirko, I don't know Eiffel (though I have read about it). My impression is that these two languages don't have much in common. However, the principle we were discussing is one that Bertrand Meyer stressed in his book _Object-Oriented Software Construction_ -- an excellent book, though a few years out of date now. Dave aptly called this the "uniform access principle." I haven't heard that term used before, but I'll buy it. But as far as Eiffel is concerned, I don't think I'd spend all that much time on it. The technique of programming "by contract" is a very appropriate method overall, but it is not unique to Eiffel. Oh, Eiffel's design certainly facilitates it, but it can be done in other languages. My advice, for what it's worth: Treat Eiffel as a learning exercise. It has some nice features -- the application of the u.a. principle, the features that help in contractual design, and a reasonable way of handling multiple inheritance. But in terms of learning a language that will be in widespread use and widely available on many platforms... spend the time practicing your Ruby instead. :) :) Just my opinion. Cheers, Hal