added reproduction and mutation methods