----------- Graham Fawcett: --------------------- > I think there should be a rough correspondence between the breadth/depth > of your data structure and the breadth/depth of your URL space. If your > database is very hierarchical, then you'll probably end up with a deep > nesting. No matter the shape of your data, a good correspondence here > will make your app more understandable (to yourself, your users and > future maintainers of your code). Deep hierarchical nesting can make an application very difficult and unpleasant to use. Extensive use of traversible classes allows you to flatten out a deep hierarchical URL space. For example, in my application, I have a large relational database of equipment, each equipment item having a history of oil tests, each test having various sorts of analysis results, each of which can be reported in various ways. Because of the way the classes work, the path: /app/locations/24/equipment/137/oiltests/1823/particles/pdf is equivalent to: /app/oiltests/1823/particles/pdf (This works because 1823 is a unique identifier for that particular data record in its table). In fact, as you "tunnel down" through the hierarchy, the links provided for the next level of detail often point to a shortened path. For example, if while viewing the list of equipment at location #24 (/app/locations/24/equipment/) you select unit #137 for viewing, that link points to the path /app/equipment/137/ instead of to the longer /app/locations/24/equipment/137/. The longer paths still work as expected, too. Jim Dukarm DELTA-X RESEARCH Victoria BC Canada