Hi, I propose to add an optional argument to ZClass.createInObjectManager() that specifies the ObjectManager instance in which the newly-created object will reside. Currently, the ObjectManager in which an object is to be created is found through acquisition. This breaks when sub-objects are created in the constructor of their container object. For example: I have a Purchase object containing Item objects. In method PurchaseClass_add(), I create the Purchase object using PurchaseClass.createInObjectManager(). That goes fine. Then I create its contained objects using ItemClass().createInObjectManager(). Instead of going inside of the PurchaseObject, they go in the folder that contains the PurchaseObject. No manipulation of name spaces by <dtml-with> will change this - the ObjectManager is found through acquisition, not the name space. Currently, the only way out of this is to create an external method and call _setObject() directly. You can't do it from DTML at all. I propose to add a "folder" argument to createInObjectManager() so that the folder can be specified directly. The modified method appears below, please compare it to the version in ZClass.py . I have a few questions about this: 1. Am I missing an easier or more elegant way to do this? 2. Would this circumvent security in some way? 3. Can I get this change, or something that has a similar effect, into a future version of Zope? Thanks Bruce def createInObjectManager(self, id, REQUEST, RESPONSE=None, folder=None): """ Create Z instance. If called with a RESPONSE, the RESPONSE will be redirected to the management screen of the new instance's parent Folder. Otherwise, the instance will be returned. """ i=mapply(self._zclass_, (), REQUEST) if not hasattr(i, 'id') or not i.id: i.id=id durl=None if folder is None: if hasattr(self, 'Destination'): d=self.Destination if d.im_self.__class__ is FactoryDispatcher: folder=d() if folder is None: folder=self.aq_parent if not hasattr(folder,'_setObject'): folder=folder.aq_parent folder._setObject(id, i) if RESPONSE is not None: try: durl=self.DestinationURL() except: durl=REQUEST['URL3'] RESPONSE.redirect(durl+'/manage_workspace') else: return folder._getOb(id)