diff --git a/pregelix/pregelix-dataflow-std/src/main/java/edu/uci/ics/pregelix/dataflow/util/CopyUpdateUtil.java b/pregelix/pregelix-dataflow-std/src/main/java/edu/uci/ics/pregelix/dataflow/util/CopyUpdateUtil.java
index c71da7a..0ff3f04 100644
--- a/pregelix/pregelix-dataflow-std/src/main/java/edu/uci/ics/pregelix/dataflow/util/CopyUpdateUtil.java
+++ b/pregelix/pregelix-dataflow-std/src/main/java/edu/uci/ics/pregelix/dataflow/util/CopyUpdateUtil.java
@@ -18,12 +18,10 @@
 import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
 import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
-import edu.uci.ics.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor;
 import edu.uci.ics.hyracks.storage.am.btree.impls.RangePredicate;
 import edu.uci.ics.hyracks.storage.am.common.api.IIndexAccessor;
 import edu.uci.ics.hyracks.storage.am.common.api.IIndexCursor;
 import edu.uci.ics.hyracks.storage.am.common.api.IndexException;
-import edu.uci.ics.hyracks.storage.common.buffercache.ICachedPageInternal;
 
 public class CopyUpdateUtil {
 
@@ -32,23 +30,6 @@
             IIndexCursor cursor, RangePredicate rangePred, boolean scan, StorageType type) throws HyracksDataException,
             IndexException {
         if (cloneUpdateTb.getSize() > 0) {
-            if (type == StorageType.TreeIndex) {
-                int[] fieldEndOffsets = cloneUpdateTb.getFieldEndOffsets();
-                int srcStart = fieldEndOffsets[0];
-                int srcLen = fieldEndOffsets[1] - fieldEndOffsets[0]; // the updated vertex size
-                int frSize = frameTuple.getFieldLength(1); // the vertex binary size in the leaf page
-                if (srcLen <= frSize) {
-                    System.arraycopy(cloneUpdateTb.getByteArray(), srcStart, frameTuple.getFieldData(1),
-                            frameTuple.getFieldStart(1), srcLen);
-                    cloneUpdateTb.reset();
-
-                    BTreeRangeSearchCursor btreeCursor = (BTreeRangeSearchCursor) cursor;
-                    ICachedPageInternal page = (ICachedPageInternal) btreeCursor.getPage();
-                    //IMPORTANT: mark the page to be dirty
-                    page.markDirty();
-                    return;
-                }
-            }
             if (!updateBuffer.appendTuple(cloneUpdateTb)) {
                 tempTupleReference.reset(frameTuple.getFieldData(0), frameTuple.getFieldStart(0),
                         frameTuple.getFieldLength(0));
