public static Living Born(Family parentage) { Living living = new Living { Gender = random.NextDouble() > 0.5D ? Sex.FEMALE : Sex.MALE, BirthYear = Program.Year, Parentage = parentage, FamilyName = parentage.Father.FamilyName }; switch (living.Gender) { case Sex.MALE: living.GivenName = Naming.BoyName(); return(new Boy(living)); case Sex.FEMALE: living.GivenName = Naming.GirlName(); return(new Girl(living)); default: throw new Exception("Genderless agent!"); } }