moved up yi's code, added remove item, added crossover code