I've done all of my Zope work using an SQL backend. One of my customers wants to distribute his Zope "site" on CDROM, so I'm thinking that ZCatalog and ZClasses are the better way to go for his project. He needs to store information on about 1500 companies. Each company can be in one or more categories, have company description, contact info, maybe a .gif.. Each company has one or more products with product info, maybe a .gif Companies should be able to edit some, but not all, of their own attributes through the web. So a company might be able to change it's own address or telephone number, but not it's company name. Anonymous users want to lookup data by category selection, or full text search of company descriptive text or product text. (here's the hard part) But the results must be listed sorted by "those with web sites, email address and telephone number first alpha by company name", then "those with just email and telephone alpha by company name", then "those with telephone alpha by company name" then all the rest, alpha by company name. In SQL I'd just use a "order by website, email, telephone, companyname" because Interbase throws Nulls to the end. How do I do this in ZCatalog? What's the best way to allow companies to change their own objects? I was thinking of making a ZCompany based on a ContentManager, then put a user folder in the instantiated ZCompany objects. But how do I control access to limit which properties a "not-full-owner" can change? Suggestions welcome.. Also I think this data could be freely distributed later, if folks want to use it as an example application. Brad Clements, bkc@murkworks.com (315)268-1000 http://www.murkworks.com (315)268-9812 Fax netmeeting: ils://ils.murkworks.com AOL-IM: BKClements