Neil Schemenauer wrote: > # myapp.department module > > class DepartmentUI: > def __init__(self, component): > self.department = get_department(component) # careful with input! > > def agency(self, request): > return AgencyUI(self.department, component) > > def _q_getname(request, component): > return DepartmentUI(component) > > class AgencyUI: > def __init__(self, department): > self.department = department > self.agency = None > > def _q_getname(self, request, component): > self.agency = get_agency(self.department, component) > return self # or something else > > def showSomeInfo(self, request): > ... > > That's a little rough but hopefully enough to give you the idea. The > key idea is that DepartmentUI passes the department object to AgencyUI. > Just a quick note for anyone looking at this code, it won't work as written. The problem is for the url: /department/1/agency/5 the traversal stops at 'agency' with a TraversalError exception raised. In Publisher's get_component method the container is checked for the existence of _q_exports. The bound method 'agency' does not have this and so it fails. What I did instead was give DepartmentUI a _q_getname method. i check for the explicit string 'agency' class DepartmentUI: .... def _q_getname(self, request, component): if component == 'agency': return get_agency(self.department) return None Tom