title: backbone.js adding model to collection adds to all models in collection
body: <p>Playing around with backbone.js, so far I've created models and collections for a deck of cards and two players. The problem is when I try move a card from the deck and add it to the player's hand the card gets added to all players hands. </p>
  
  <p>Here's my offending code, hopefully a boffin will spot the mistake straight away:</p>
  
  <pre><code>//the first card goes to player1
  var topCard = deck.at(0); //A of hearts
  deck.remove(topCard);
  var hand = players.at(0).get("hand");
  hand.add(topCard);
  
  //the second card goes to player2
  topCard = deck.at(0); //2 of hearts
  deck.remove(topCard);
  hand = players.at(1).get("hand");
  hand.add(topCard);
  </code></pre>
  
  <p>I end up with both players having both the "A of hearts" and the "2 of hearts" when it should be one card each.</p>
  
  <p>full code:</p>
  
  <pre><code>var game = {};
  
  game.Durak = Backbone.Model.extend({
    initialize : function() {
      var deck = new game.Deck();
      var player1 = new game.Player();
      player1.name = "Dave";
  
      var player2 = new game.Player();
  
      var players = new game.Players();
      players.add(player1);
      players.add(player2);
  
      deck.deal(players);
  
    }
  });
  
  game.Card = Backbone.Model.extend({
    defaults: {
      "suit" : "spades",
      "rank" : "A"
    }
  });
  
  game.Deck = Backbone.Collection.extend({
    model: game.Card,
    initialize : function() {
      var suits = ['hearts', 'spades', 'clubs', 'diamonds'],
      ranks = ['A', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K'];
  
      _.each(suits, function(s) {
        _.each(ranks, function(r) {
          this.add({
            suit: s, 
            rank: r
          });
        }, this);
      }, this);
    },
    shuffle : function() {
      this.reset(_.shuffle(this.models));    
    },
    deal : function(players) {
  
  
      // this bit makes me sad!
  
  
      var topCard = this.at(0);
      this.remove(topCard);    
      var hand = players.at(0).get("hand");
      hand.add(topCard);
  
      topCard = this.at(0);
      this.remove(topCard);
      hand = players.at(1).get("hand");
      hand.add(topCard);
    }
  
  
    // that bit made me sad
  
  
  });
  
  game.Hand = Backbone.Collection.extend({
    model : game.Card
  })
  
  game.Player = Backbone.Model.extend({
    defaults : {
      name : "",
      hand : new game.Hand()
    }
  });
  
  game.Players = Backbone.Collection.extend({
    model: game.Player
  });
  
  new game.Durak();
  </code></pre>