public void doReproduction() {
    	// We first put the new bacteria into a list and add them afterwards.
    	// That way the new bacteria won't be run in the loop.
    	ArrayList<Bacteria> newBacteria = new ArrayList<Bacteria>();

    	for (Bacteria b : bacteriaList) {
    		// If it meets the reproduction criteria and isn't dead, then reproduce.
    		if (b.getAge() >= Constants.reproductionAge && b.getEnergy() >= Constants.reproductionEnergy && !b.isDead() && !b.isDying()) {
    	    	++reproductionsDone;
    	    	
    			Genetics[] newGens = makeNewGenetics(b.getGenetics());
    			newBacteria.add(new Bacteria(newGens[0], b.getXpos()-10, b.getYpos()));
    			newBacteria.add(new Bacteria(newGens[1], b.getXpos()+10, b.getYpos()));
    			
    			// Kills the old bacteria
    			b.setDead(true);
    		}
    	}
    	
    	// Add the new bacteria to the bacteria list
    	for (Bacteria b : newBacteria) {
    		bacteriaList.add(b);
    	}
    }