=begin A method definition with no receiver creates an instance method. e.g def x 2 end Instance methods are added to the object representing the class. If the class in named K then the object representing the class is a constant K and K.class is Class. Inside the class definition this object provides the context. A method definition with the method name prefixed by a constant or an expression creates a method associated with the object that is the value of the constant or expression. This is a singleton method because it is associated only with one object. e.g. def a.x or def MyClass.x or def self.x or def (1.class).x We could define instance methods in the class Class or the class Module that would be class methods of every class because they would be instance methods of the constant object that represents the class. But if we want to add class methods to class C only then we can add them as instance methods to the singleton class associated with C. class <