diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index b141fc4fc44a6d931ae03aaf0e0ffc012ebd09a0..0328e4f4fdea745167cad591b43fb7a96f12399f 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -5,6 +5,7 @@
 	0
 	-dispensary broken down into pharm fabricator, organ farm, implant manufactory and gene lab
 	-lots of SF work
+	-better naming support in childgen
 	-fixes
 	-cleaning
 
diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index 32841e6e974da1fff508ad3f4a679f3faf7e8fb0..ec79cb2935bddd140e5add90a315a3f549b0e0ea 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -10643,7 +10643,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -10714,7 +10733,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -10843,7 +10881,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -10915,7 +10972,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 9eae092daedcc9049add703ac88cd8f09e5d710d..e6e8af97ca57f73aad18054ed553266fad633242 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -1008,6 +1008,7 @@ DairyRestraintsSetting($dairyRestraintsSetting)
 <<set $prostheticsUpgrade = 0>>
 <<set $geneticMappingUpgrade = 0>>
 <<set $pregnancyMonitoringUpgrade = 0>>
+<<set $cloningSystem = 0>>
 
 <<set $surgeryUpgrade = 0>>
 
diff --git a/src/js/generateGenetics.tw b/src/js/generateGenetics.tw
index eeee9419b8e916b89d4d6c6f1bbcbc705279bf62..7de1243a7b0049d50d69f4a2ea2141229a78a6a5 100644
--- a/src/js/generateGenetics.tw
+++ b/src/js/generateGenetics.tw
@@ -574,7 +574,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -645,7 +664,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -774,7 +812,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
@@ -846,7 +903,26 @@ window.generateChild = function(mother, ova, destination) {
 					}
 				}
 			} else {
-				child.slaveName = genes.name;
+				let childName = genes.name;
+				if (childName.indexOf("ovum") == 0) {
+					if (genes.mother == -1) {
+						if (genes.father <= 0) {
+							child.slaveName = "Your son";
+						} else {
+							child.slaveName = `Your and ${genes.fatherName}'s son`;
+						}
+					} else {
+						if (genes.father == -1) {
+							child.slaveName = `${genes.motherName} and your son`;
+						} else if (genes.father > 0) {
+							child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						} else {
+							child.slaveName = `${genes.motherName}'s bastard son`;
+						}
+					}
+				} else {
+					child.slaveName = genes.name;
+				}
 				if (genes.mother == -1) {
 					child.slaveSurname = V.PC.surname;
 				} else {
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index bc9fa5881f2f1710191fb24009f8d86ff6e13551..89f29527b3bf2888f4706a11105a562bcd773f46 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -444,7 +444,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 				Reproduction management systems are offline; $he will undergo normal puberty.
 			<</if>>
 		<</if>>
-		<br>Rename $him: <<textbox "_tempName" _tempName >> [[Apply |incubator][$tanks[$i].slaveName = _tempName]] // Given name only //
+		<br>Rename $him: <<textbox "_tempName" _tempName >> [[Apply |Incubator][$tanks[$i].slaveName = _tempName]] // Given name only //
 		<<if $cheatMode == 1>>
 			<br>''Cheatmode:''
 			<<link "Retrieve immediately">>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 38d97b0ba24e087458561c2f0259a9033947d08c..fbc141b5a20ab8b9190702da77cb9b096e2779ff 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -2264,6 +2264,9 @@ Setting missing global variables:
 <<if ndef $animalMpreg>>
 	<<set $animalMpreg = 0>>
 <</if>>
+<<if ndef $cloningSystem>>
+	<<set $cloningSystem = 0>>
+<</if>>
 
 <<if ndef $pregInventor>>
 	<<set $pregInventor = 0>>