-        pickledExtensions = config.Read(EXTENSIONS_CONFIG_STRING)
-        if pickledExtensions:
-            try:
-                self._extensions = pickle.loads(pickledExtensions.encode('ascii'))
-            except:
-                tp, val, tb = sys.exc_info()
-                traceback.print_exception(tp,val,tb)
-                self._extensions = []
-        else:
-            self._extensions = []
-        
+        path = config.GetPath()
+        try:
+            config.SetPath(ExtensionService.EXTENSIONS_KEY)
+            cont, value, index = config.GetFirstEntry()
+            while cont:
+                extensionNames.append(value)
+                cont, value, index = config.GetNextEntry(index)
+        finally:
+            config.SetPath(path)
+
+        for extensionName in extensionNames:
+            extensionData = config.Read(self.__getExtensionKeyName(extensionName))
+            if extensionData:
+                extension = xmlutils.unmarshal(extensionData.encode('utf-8'))
+                self._extensions.append(extension)
+