Taking ideas from the Renderable product, the ZCallable baseclass (PTK) and the __call__ thread on this very list, I created a Callable baseclass intended as a mixin for ZClasses. class Callable: def render( self, client=None, REQUEST={}, RESPONSE=None, **kw ): '''Calls index_html, if it exists, to render this object. ''' self.isDocTemp = 1 # pass me the namespace, please local = getattr( self, 'aq_base', self ) if hasattr( local, 'index_html' ): method = self.index_html args = (self, REQUEST, RESPONSE) # substitute self for client return apply( method, args, kw ) else: raise AttributeError, 'index_html' __call__ = render I went on to make a ZClass derived from Folder and Callable to effectively create a CallableFolder. Man, was I proud ;). This worked fine for me until I had to put some security on my CallableFolders. Removing 'View' for Anonymous keeps me from accessing a CallableFolder directly but it can still be used as a subtemplate (dtml-var x) from another DTML Document or Method. Bummer! Doing some tests I discovered that plain DTML Documents show the same behaviour (!), though DTML Methods throw 'Unauthorized' as expected. Now I am confused and herewith ask the pros to kindly have a look at what I did. *) Does my baseclass do what I expect it to at all? (or only by chance ;) *) Is there a known issue with DTML Documents used as subtemplates or is their behaviour correct? *) Do I have to take measures in my baseclass to properly access/pass security contexts? *) If yes, how would I do it? *) Or is there even prior art on such a baseclass or reasons why this just cannot possibly work? If you are interested, you can get the CallableFolder product in its current state from ftp://epy.co.at/pub/zope/ I am running Zope 2.2.2 with both Hotfixes and the __call__ fix. Thanks, Stefan -- Things work better when plugged in