I'm building a "photo album" site with Quixote, as part of research for a chapter in Learning Python, 2nd ed. I'm stumbling on a problem which is puzzling me. One of the objects in the app is a "Folder" object. the Folder can have images in it, and other Folders. Folders show snapshots of the images, and clicking on an image takes you to a "view" of that image. The names of the folders and images are dynamic (they correspond to directories on disk), so I want to override _q_getname and do something like: def _q_getname(self, request, component): if component in self._dirs: return Folder(request, component) if component in self._files: return Image(request, component) so that given the _q_index output for folder a, which would include links to: a/pic1.jpg a/pic2.jpg a/b/ Now, this fails unless I do something like: def __init__(self, request): self._path = request.get_path() def _q_getname(self, request, component): if request.get_path() == self._path return self if component in self._dirs: return Folder(request, component) if component in self._files: return Image(request, component) So, I have a few questions: 1) why is _q_getname called when I expect _q_index to suffice? 2) if I put a debugging statement before the "return self" and then lookup object a/b/ (listing of folder b inside folder a), I get _four_ printed lines -- a, b, a, b. What's going on? Thanks for any insight. --david