Every object class inherits from the class "object". Underneath that are three classes; abstract objects, file system objects, and transient objects... though for practical use you can ignore transient objects, as they exist for very short periods of time (eg, during a d'n'd operation). File system objects are (surprise!) files of different kinds, and abstract objects aren't. A given object (say, "3menandagoat.jpg") can have more than one class associated with it, allowing a great deal of flexibility in how objects can be manipulated. Each object's properties are dealt with in a notebook. Since there is extensive use of inheritance, each object is guaranteed to have some traits in common, lending an extremely consistent methodology of how any given object can be manipulated. Example; file system object -> image file -> gif or file system object -> image file -> jpeg means that all image files have some traits in common, where appropriate, but can be easily set up to have unique traits apropos of the actual file format involved.

You (er, Peter) are twigging on the graphical part, while not getting the underlying object architecture of the desktop. Once you grok the OO part of the desktop, other UIs start to seem clumsy. One of the biggest benefits of it is that you get to organise the data any way you see fit, because the wps will always keep objects and their classes straight for you. So... you want to have your desktop on a different drive? Drag it over. You want to move and rename your System objects (mouse, screen, keyboard, etc)? Go ahead and put them where you want, and call them what you want. You want to organise your documents by customer? No problem. You want to create shadows of said documents by product? Ctrl-drag them to the appropriate product folder. You want to add MP3 playing to the shell? A uni student did it in about six hours of programming, because all he had to do was to take mp3.dll and retrofit it to MMOS2 norms. With it, each MP3 file is part of its class; their notebooks now have a page showing playtime, bitrate, and editable ID3 tags. You want to use the class he created to track them, but use the console player Z!? No problem; go to the object class's template and associate it with Z and make it the default application for the class. Once you get used to the idea that you can easily control how the system handles groups of files, as well as easily control an individual file within said group to behave differently, and to create your own classes with a little rexx programming, other desktops seem confining.

In short, it's very powerful. It puts you in control of how you interact with your data. That's the main reason why us warp bigots are so gung ho about it... we get to make our own decisions about how we want our desktops to be set up.