diff --git a/product/ERP5Type/Document/Folder.py b/product/ERP5Type/Document/Folder.py
index 177568dcd9f7c04810862e5c7ac76396740d7214..c835f47a35c52c77c2b7995b25d4e397949cf7bd 100755
--- a/product/ERP5Type/Document/Folder.py
+++ b/product/ERP5Type/Document/Folder.py
@@ -36,6 +36,7 @@ from Products.ERP5Type.Base import Base
 from Products.ERP5Type.CopySupport import CopyContainer
 from Products.ERP5Type import PropertySheet, Permissions
 from Products.ERP5Type.XMLExportImport import Folder_asXML
+from Products.ERP5Type.Cache import CachingMethod
 
 from Products.BTreeFolder2.CMFBTreeFolder import CMFBTreeFolder
 
@@ -43,9 +44,6 @@ import os
 
 from zLOG import LOG
 
-# Optimized Menu
-cached_allowed_content_types = {}
-
 # Dummy Functions for update / upgrade
 def dummyFilter(object,REQUEST=None):
   return 1
@@ -249,6 +247,9 @@ be a problem)."""
   security.declareProtected( Permissions.ModifyPortalContent, '_edit' )
   _edit = Base._edit
 
+  #security.declareProtected( Permissions.DeletePortalContent, 'manage_delObjects' )
+  #manage_delObjects = CopyContainer.manage_delObjects
+
   # Implementation
 #   security.declarePrivate('_setObject')
 #   def _setObject(self, id, object, roles=None, user=None, set_owner=1):
@@ -539,26 +540,20 @@ be a problem)."""
       List portal_types which can be added in this folder / object.
       Cache results. This requires restarting Zope to update values.
     """
-    LOG("ERP5Type", 0, "in allowedContentTypes")
-    user = str(_getAuthenticatedUser(self))
-    portal_type = self.getPortalType()
-    if not cached_allowed_content_types.has_key((portal_type, user)):
+    def _allowedContentTypes(portal_type=None, user=None):
       # Sort the list for convenience -yo
       # XXX This is not the best solution, because this does not take account i18n into consideration.
       # XXX So sorting should be done in skins, after translation is performed.
       def compareTypes(a, b): return cmp(a.title or a.id, b.title or b.id)
       type_list = CMFBTreeFolder.allowedContentTypes(self)
       type_list.sort(compareTypes)
-      cached_allowed_content_types[(portal_type, user)] = type_list
-    return cached_allowed_content_types[(portal_type, user)]
+      return type_list
+
+    _allowedContentTypes = CachingMethod(_allowedContentTypes, id='allowedContentTypes', cache_duration = 300)
+    user = str(_getAuthenticatedUser(self))
+    portal_type = self.getPortalType()
+    return _allowedContentTypes(portal_type=portal_type, user=user)
 
-  # Flush the cache in Menu System
-  security.declareProtected(Permissions.ManagePortal, 'emptyCache')
-  def emptyCache( self ):
-    """
-      Empty the cache of allowed content types in the menu system.
-    """
-    cached_allowed_content_types = {}
 
   # Multiple Inheritance Priority Resolution
   _setProperty = Base._setProperty