public void bearOff(Color player, int source) {
		if (canBearOff(player)){
			Integer dist = 0; // if this doesn't get changed below, something seriously bad is hapened
			if (player == this.getPlayer1()) {
				dist = 25 - source;
			} else if (player == this.getPlayer2()) {
				dist = source;
			}
			if (this.getState().movesLeft.contains(dist)) {
				BackgammonState newState = new BackgammonState(this.getState());
				// "use" the move
				newState.movesLeft.remove(dist);
				// move the piece
				newState.move(newState.points.get(source - 1), newState.homes.get(player));
				// push the undo state
				this.state.add(newState);
			}
		} else {
		
		}
	}