I spent some time this afternoon after my last post on this topic messaging back and forth with my friend and colleague Kevin Altis of PythonCard fame. I think I understand better now how to proceed with this project, at least *one* way to proceed better. I was making the classic programming error of letting implementation drive design. I don't *need* objects here. I can store all of the data I need stored in standard Zope objects and then use Python and DTML to manipulate their contents. I had allowed myself to become convinced that to "create a new clearing" of necessity meant creating a new clearing *object*. But a Clearing could be a structured document (XML), a collection of SQL database records or, as it turns out after only a little experimentation on my part, a collection of folderish Zope objects and documents manipulated directly through DTML (setting properties, etc.) IOW, no need for custom classes, just extend the built-in classes via properties which can be set in DTML methods and Python scripts. This is clearly no less OO than my original approach, but it will be several orders of magnitude easier to write and maintain. I'll probably finish this project now in about 10%of the time I've already spent just trying to get ZClasses working to my satisfaction. Lesson learned. If it seems too hard, it probably is. Thanks to Chris Weathers, Dieter Maurer, and others on this list for their help and insights. This is a fantastic community demonstrating once again why Zope rules.