diff --git a/stmts.py b/stmts.py
index 3036cf0df24ff9a2940c90baf957f522e469ceaf_c3RtdHMucHk=..9bfae6a132525be391d2f2c56729a8054f2412b0_c3RtdHMucHk= 100644
--- a/stmts.py
+++ b/stmts.py
@@ -252,5 +252,4 @@
     # recoverable modification methods ########################################
     
     @property
-    @cached
     def undo_manager(self):
@@ -256,6 +255,10 @@
     def undo_manager(self):
-        from rql.undo import SelectionManager
-        return SelectionManager(self)
+        try:
+            return self._undo_manager
+        except AttributeError:
+            from rql.undo import SelectionManager
+            self._undo_manager = SelectionManager(self)
+            return self._undo_manager
 
     @property
     def should_register_op(self):
@@ -342,6 +345,8 @@
     def as_string(self, encoding=None, kwargs=None, unsimplified=False,
                   userepr=False):
         """return the tree as an encoded rql string"""
+        # XXX unsimplified no more necessary, it has been introduced for
+        #     ginco's web ui but there is no more simplified trees there!
         if userepr:
             as_string = repr
         else: