diff --git a/backbone.js b/backbone.js
index <HASH>..<HASH> 100644
--- a/backbone.js
+++ b/backbone.js
@@ -420,6 +420,7 @@
       var i, l;
       options || (options = {});
       if (!_.isArray(models)) models = [models];
+      models = slice.call(models);
       for (i = 0, l = models.length; i < l; i++) {
         models[i] = this._add(models[i], options);
       }
diff --git a/test/collection.js b/test/collection.js
index <HASH>..<HASH> 100644
--- a/test/collection.js
+++ b/test/collection.js
@@ -417,4 +417,12 @@ $(document).ready(function() {
     equals(fired, true);
   });
 
+  test("Collection: add does not alter arguments", function(){
+    var attrs = {};
+    var models = [attrs];
+    new Backbone.Collection().add(models);
+    equal(models.length, 1);
+    ok(attrs === models[0]);
+  });
+
 });
collection.add should not alter models array