new diploid functions