diff --git a/lib/js/src/thrift.js b/lib/js/src/thrift.js
index 9bd1198..af45d9c 100644
--- a/lib/js/src/thrift.js
+++ b/lib/js/src/thrift.js
@@ -1203,7 +1203,7 @@
         r.size = list.shift();
 
         this.rpos.push(this.rstack.length);
-        this.rstack.push(list.shift());
+        this.rstack.push(list);
 
         return r;
     },
@@ -1439,69 +1439,3 @@
 
 
 
-var copyList, copyMap;
-
-copyList = function(lst, types) {
-
-  if (!lst) {return lst; }
-
-  var type;
-
-  if (types.shift === undefined) {
-    type = types;
-  }
-  else {
-    type = types[0];
-  }
-  var Type = type;
-
-  var len = lst.length, result = [], i, val;
-  for (i = 0; i < len; i++) {
-    val = lst[i];
-    if (type === null) {
-      result.push(val);
-    }
-    else if (type === copyMap || type === copyList) {
-      result.push(type(val, types.slice(1)));
-    }
-    else {
-      result.push(new Type(val));
-    }
-  }
-  return result;
-};
-
-copyMap = function(obj, types){
-
-  if (!obj) {return obj; }
-
-  var type;
-
-  if (types.shift === undefined) {
-    type = types;
-  }
-  else {
-    type = types[0];
-  }
-  var Type = type;
-
-  var result = {}, val;
-  for(var prop in obj) {
-    if(obj.hasOwnProperty(prop)) {
-      val = obj[prop];
-      if (type === null) {
-        result[prop] = val;
-      }
-      else if (type === copyMap || type === copyList) {
-        result[prop] = type(val, types.slice(1));
-      }
-      else {
-        result[prop] = new Type(val);
-      }
-    }
-  }
-  return result;
-};
-
-Thrift.copyMap = copyMap;
-Thrift.copyList = copyList;
