public void mutate() {
		// work on card basis
		for ( int i = 0; i < ga.getCardList().size(); i++ ) {
			if ( Math.random() < 0.1 ) {
				// find a seller with available stock
				ArrayList<Integer> poolOfSeller = new ArrayList<Integer>();
				for ( int j = 0; j < this.genome.length; j++ ) {
					if ( this.availableStock[j][i] > 0 )
						poolOfSeller.add( j );
				}

				ArrayList<Integer> poolOfOrders = new ArrayList<Integer>();
				for ( int j = 0; j < this.genome.length; j++ ) {
					if ( this.genome[j][i] > 0 )
						poolOfOrders.add( j );
				}

				if ( !poolOfSeller.isEmpty() && !poolOfOrders.isEmpty() ) {
					// choose a seller
					int seller = Random.random( 0, poolOfSeller.size() - 1 );
					int order = Random.random( 0, poolOfOrders.size() - 1 );

					this.genome[poolOfOrders.get( order )][i]++;
					this.availableStock[poolOfSeller.get( seller )][i]--;
				}
			}
		}
	}