update cross over function