diff --git a/product/PortalTransforms/Transform.py b/product/PortalTransforms/Transform.py
index 1c62adc6a27f509efd025125ed0ea40c83fcec9b..5c69ace1ebf4a428c93538fc76337d2cd3b63f5e 100644
--- a/product/PortalTransforms/Transform.py
+++ b/product/PortalTransforms/Transform.py
@@ -142,6 +142,10 @@ class Transform(SimpleItem):
         return transform
 
     def _load_transform(self):
+        try:
+            return self._v_transform
+        except AttributeError:
+            pass
         try:
             m = import_from_name(self.module)
         except ImportError, err:
@@ -179,16 +183,12 @@ class Transform(SimpleItem):
     security.declarePublic('get_documentation')
     def get_documentation(self):
         """ return transform documentation """
-        if not hasattr(self, '_v_transform'):
-            self._load_transform()
-        return self._v_transform.__doc__
+        return self._load_transform().__doc__
 
     security.declarePrivate('convert')
     def convert(self, *args, **kwargs):
         """ return apply the transform and return the result """
-        if not hasattr(self, '_v_transform'):
-            self._load_transform()
-        return self._v_transform.convert(*args, **kwargs)
+        return self._load_transform().convert(*args, **kwargs)
 
     security.declarePublic('name')
     def name(self):
@@ -198,11 +198,7 @@ class Transform(SimpleItem):
     security.declareProtected(ManagePortal, 'get_parameters')
     def get_parameters(self):
         """ get transform's parameters names """
-        if not hasattr(self, '_v_transform'):
-            self._load_transform()
-        keys = self._v_transform.config.keys()
-        keys.sort()
-        return keys
+        return sorted(self._load_transform().config.keys())
 
     security.declareProtected(ManagePortal, 'get_parameter_value')
     def get_parameter_value(self, key):
@@ -253,10 +249,9 @@ class Transform(SimpleItem):
         # need to remap transform if necessary (i.e. configurable inputs / output)
         if kwargs.has_key('inputs') or kwargs.has_key('output'):
             tr_tool._unmapTransform(self)
-            if not hasattr(self, '_v_transform'):
-                self._load_transform()
-            self.inputs = kwargs.get('inputs', self._v_transform.inputs)
-            self.output = kwargs.get('output', self._v_transform.output)
+            transform = self._load_transform()
+            self.inputs = kwargs.get('inputs', transform.inputs)
+            self.output = kwargs.get('output', transform.output)
             tr_tool._mapTransform(self)
         # track output encoding
         if kwargs.has_key('output_encoding'):
diff --git a/product/PortalTransforms/cache.py b/product/PortalTransforms/cache.py
index 9badbfc6653d8645e2f2085bb185c6c4d079a117..4bb091893ad6ac5233851aa6b9a332e08ee9bc74 100644
--- a/product/PortalTransforms/cache.py
+++ b/product/PortalTransforms/cache.py
@@ -33,9 +33,11 @@ class Cache:
             return
         obj = self.obj
         key = self._genCacheKey(key)
-        if getattr(aq_base(obj), self._id, None) is None:
-            setattr(obj, self._id, {})
-        getattr(obj, self._id)[key] = (time(), value)
+        entry = getattr(aq_base(obj), self._id, None)
+        if entry is None:
+            entry = {}
+            setattr(obj, self._id, entry)
+        entry[key] = (time(), value)
         return key
 
     def getCache(self, key):