public void Register(Genes genes) { foreach (Entry x in species) { float d = genes.Difference(x.genes); if (d < cSpeciesOffset) { // found it! x.count++; x.maxCount++; genes.species = x.id; genes.isFounder = false; return; } } // a new species, hurray! Entry y = new Entry(); y.id = speciesId++; y.genes = genes.Clone(); // can we have a clone plz? y.count = 1; genes.species = y.id; genes.isFounder = true; species.Add(y); }