diff --git a/product/ERP5Type/dynamic/lazy_class.py b/product/ERP5Type/dynamic/lazy_class.py
index acebd94723e06b875153cb964e32ade1e27c5f9e..0e4c2e5c87aaa6d8e3fda0c6b2fc11fc1fe69e74 100644
--- a/product/ERP5Type/dynamic/lazy_class.py
+++ b/product/ERP5Type/dynamic/lazy_class.py
@@ -237,7 +237,8 @@ class PortalTypeMetaClass(GhostBaseMetaClass):
       for key, value in attribute_dict.iteritems():
         setattr(klass, key, value)
 
-      klass._categories = base_category_list
+      # XXX disabled
+      #klass._categories = base_category_list
 
       for interface in interface_list:
         classImplements(klass, interface)
diff --git a/product/ERP5Type/dynamic/portal_type_class.py b/product/ERP5Type/dynamic/portal_type_class.py
index 5755e1ed7c1ed906c7eddb59e35b512aea9d6f6f..fd8d5f10a2f3218639bbe65f89ac2896f42961ce 100644
--- a/product/ERP5Type/dynamic/portal_type_class.py
+++ b/product/ERP5Type/dynamic/portal_type_class.py
@@ -287,6 +287,11 @@ def generatePortalTypeClass(site, portal_type_name):
         erp5.accessor_holder,
         property_sheet_tool)
 
+      base_category_set = set(base_category_list)
+      for accessor_holder in accessor_holder_list:
+        base_category_set.update(accessor_holder._categories)
+      base_category_list = list(base_category_set)
+
     property_sheet_generating_portal_type_set.remove(portal_type_name)
 
   # LOG("ERP5Type.dynamic", INFO,