[Koen Van Damme] -- This is an experiment in object-orientation. I wanted to find out the minimal number of classes required to pull an object system out of the ground. It turns out that you need only 2: * ''Object'', the class of all objects, top of the class hierarchy. * ''Meta'' (also often called ''Class''), the class of all classes. So every class is an instance of Meta. And since classes are objects, Meta inherits from Object. As usual in Tcl, we store an object's data in a global array. A class is a special object with special entries in this array. All the array contents can be changed dynamically, so any normal object can be turned into a class and vice versa. Above I said that Meta inherits from Object. It would be better to say that Meta ''chains'' to Object. There is no inheritance; instead, objects chain to one or more other objects. When you invoke a method on an object, the object first tries to find the method locally, and then simply passes it on to its chains one by one. When a class creates a new object, it makes itself the single chain target for the new object. But again, you can change all object data dynamically, so you can just set another target or add new targets. The whole system boots itself from only Object and Meta and their methods. Note that this is only an experiment, not a fully functional object system. E.g. it does not support constructors, destructors, object persistence etc. You could easily add those features if you wanted to. Here is the code: (NOT YET) [Category Object Orientation]