diff --git a/product/ERP5/Tool/IntrospectionTool.py b/product/ERP5/Tool/IntrospectionTool.py
index c28afe4e7bd9ebb7b82a4464116765e00fcf4809..5b3578b07d65a226bc727dfecc3968c7dfce2a01 100644
--- a/product/ERP5/Tool/IntrospectionTool.py
+++ b/product/ERP5/Tool/IntrospectionTool.py
@@ -318,16 +318,10 @@ class IntrospectionTool(LogMixin, BaseTool):
     """
     return getConfiguration().products
 
-
-  #
-  #   Library signature
-  #
-  # XXX this function can be cached to prevent disk access.
-  security.declareProtected(Permissions.ManagePortal, 'getSystemSignatureDict')
-  def getSystemSignatureDict(self):
+  security.declareProtected(Permissions.ManagePortal, '_getSystemVersionDict')
+  def _getSystemVersionDict(self):
     """
       Returns a dictionnary with all versions of installed libraries
-
       {
          'python': '2.4.3'
        , 'pysvn': '1.2.3'
@@ -335,32 +329,33 @@ class IntrospectionTool(LogMixin, BaseTool):
       }
       NOTE: consider using autoconf / automake tools ?
     """
-    def tuple_to_format_str(t):
-       return '.'.join([str(i) for i in t])
-    from Products import ERP5 as erp5_product
-    erp5_product_path =  erp5_product.__file__.split("/")[:-1]
-    try:
-      erp5_v = open("/".join((erp5_product_path) + ["VERSION.txt"])).read().strip()
-      erp5_version = erp5_v.replace("ERP5 ", "")
-    except:
-       erp5_version = None
+    def cached_getSystemVersionDict():
+      import pkg_resources
+      def tuple_to_format_str(t):
+         return '.'.join([str(i) for i in t])
 
-    from App import version_txt
-    zope_version = tuple_to_format_str(version_txt.getZopeVersion()[:3])
+      version_dict = {}
+      for dist in pkg_resources.working_set:
+        version_dict[dist.key] = dist.version
+
+      from Products import ERP5 as erp5_product
+      erp5_product_path = erp5_product.__file__.split("/")[:-1]
+      try:
+        erp5_v = open("/".join((erp5_product_path) + ["VERSION.txt"])).read().strip()
+        erp5_version = erp5_v.replace("ERP5 ", "")
+      except:
+         erp5_version = None
+
+      version_dict["ProductS.ERP5"] = erp5_version
+      return version_dict
+
+    get_system_version_dict = CachingMethod(
+                  cached_getSystemVersionDict,
+                  id='IntrospectionTool__getSystemVersionDict',
+                  cache_factory='erp5_content_long')
+
+    return get_system_version_dict()
 
-    from sys import version_info
-    # Get only x.x.x numbers.
-    py_version = tuple_to_format_str(version_info[:3])
-    try:
-      import pysvn
-      # Convert tuple to x.x.x format
-      pysvn_version =  tuple_to_format_str(pysvn.version)
-    except:
-      pysvn_version = None
-    
-    return { "python" : py_version , "pysvn"  : pysvn_version ,
-             "erp5"   : erp5_version, "zope"   : zope_version
-           }
   security.declareProtected(Permissions.ManagePortal,
       '_getActivityDict')
   def _getActivityDict(self):