I'm afraid Eric Jacoboni wishes Ruby intrpreter perform strong type checking. Every strong-typed language implies a lot of text being not a code, but declarations. Ruby should provide a short-time development and therefore no type-checking. Generally, classes are equal when they provide equal interfaces. Class B is a subclass of A when it provides all the methods of A and some methods in addition. "<" in Ruby is a shorthand allowing programmer to shorten the code. For instance, ADA provides much less elegant form :). Of course "<" means a little more than simple copying of methods. The link "class-subclass" lives "forever". Changing class A will change all of its subclasses. Aleksei Guzev