diff --git a/render.js b/render.js
index d742cc9..b90279f 100644
--- a/render.js
+++ b/render.js
@@ -532,6 +532,23 @@
   }
   
   
+  function invertTree(ingrid, key) {
+    if (!key) {
+      key = '_tree';
+    }
+    var keycol = keyToColNum(ingrid, key);
+    var outgrid = {headers: ingrid.headers, data: [], types: ingrid.types};
+    for (var rowi in ingrid.data) {
+      var row = ingrid.data[rowi];
+      var cell = row[keycol];
+      var outrow = row.slice();
+      outrow[keycol] = cell.split('|').reverse().join('|');
+      outgrid.data.push(outrow);
+    }
+    return outgrid;
+  }
+  
+  
   function crackTree(ingrid, key) {
     if (!key) {
       key = '_tree';
@@ -656,6 +673,16 @@
   }
 
 
+  function doInvertTree(grid, argval) {
+    console.debug('invertTree:', argval);
+    var keys = splitNoEmpty(argval, ',');
+    console.debug('invertTree with key', keys[0]);
+    grid = invertTree(grid, keys[0]);
+    console.debug('grid:', grid);
+    return grid;
+  }
+
+
   function doCrackTree(grid, argval) {
     console.debug('crackTree:', argval);
     var keys = splitNoEmpty(argval, ',');
@@ -1015,6 +1042,8 @@
         transform(doTreeGroupBy, argval);
       } else if (argkey == 'finishtree') {
         transform(doFinishTree, argval);
+      } else if (argkey == 'inverttree') {
+        transform(doInvertTree, argval);
       } else if (argkey == 'cracktree') {
         transform(doCrackTree, argval);
       } else if (argkey == 'pivot') {
