diff --git a/devTools/types/FC/facilities.d.ts b/devTools/types/FC/facilities.d.ts
index f23ff65ff79ffb163c71e94a300633834c31d356..7b929abb66ec91cbb3e7d1e1a5e424c50bec8c29 100644
--- a/devTools/types/FC/facilities.d.ts
+++ b/devTools/types/FC/facilities.d.ts
@@ -21,13 +21,5 @@ declare namespace FC {
 			/** The virginities of the loser not allowed to be taken. */
 			virginities: "neither" | "vaginal" | "anal" | "all"
 		}
-
-		class Animal {
-			name: string;
-			species: string;
-			type: "canine" | "hooved" | "feline";
-			rarity: "domestic" | "exotic";
-			articleAn: boolean;
-		}
 	}
 }
diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index e97a735901b220709bb25156a90b5b3a2a9f2adf..2a18ab6fb7d50560c8323dab5a39b3b4b3967f2e 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -681,64 +681,10 @@ App.Data.resetOnNGPlus = {
 	farmyardStables: 0,
 	farmyardKennels: 0,
 	farmyardCages: 0,
-	activeCanine: null,
-	activeHooved: null,
-	activeFeline: null,
-	animalsBought: {
-		canine: {
-			domestic: {
-				beagle: false,
-				bulldog: false,
-				frenchBulldog: false,
-				germanShepherd: false,
-				goldenRetriever: false,
-				labradorRetriever: false,
-				poodle: false,
-				rottweiler: false,
-				siberianHusky: false,
-				yorkshireTerrier: false,
-			},
-			exotic: {
-				dingo: false,
-				fox: false,
-				jackal: false,
-				wolf: false,
-			},
-		},
-		hooved: {
-			domestic: {
-				bull: false,
-				horse: false,
-				pig: false,
-			},
-			exotic: {
-				zebra: false,
-				elephant: false,
-			},
-		},
-		feline: {
-			domestic: {
-				abbysinian: false,
-				bengal: false,
-				birman: false,
-				maineCoon: false,
-				orientalShorthair: false,
-				persian: false,
-				ragdoll: false,
-				russianBlue: false,
-				siamese: false,
-				sphynx: false,
-			},
-			exotic: {
-				cougar: false,
-				jaguar: false,
-				leopard: false,
-				lion: false,
-				lynx: false,
-				puma: false,
-				tiger: false,
-			},
-		},
+	active: {
+		canine: null,
+		hooved: null,
+		feline: null,
 	},
 	canines: [],
 	hooved: [],
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index bf22323b35ec1413f9388da998a0532d798a6143..d1ae4db683e72406cd566f00ea223be589407238 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -292,75 +292,8 @@ App.Update.globalVariables = function(node) {
 		};
 	}
 
-	if (typeof V.animalsBought !== "object") {
-		V.animalsBought = {
-			canine: {
-				domestic: {
-					beagle: false,
-					bulldog: false,
-					frenchBulldog: false,
-					germanShepherd: false,
-					goldenRetriever: false,
-					labradorRetriever: false,
-					poodle: false,
-					rottweiler: false,
-					siberianHusky: false,
-					yorkshireTerrier: false,
-				},
-				exotic: {
-					dingo: false,
-					fox: false,
-					jackal: false,
-					wolf: false,
-				},
-			},
-			hooved: {
-				domestic: {
-					bull: false,
-					horse: false,
-					pig: false,
-				},
-				exotic: {
-					zebra: false,
-					elephant: false,
-				},
-			},
-			feline: {
-				domestic: {
-					abbysinian: false,
-					bengal: false,
-					birman: false,
-					maineCoon: false,
-					orientalShorthair: false,
-					persian: false,
-					ragdoll: false,
-					russianBlue: false,
-					siamese: false,
-					sphynx: false,
-				},
-				exotic: {
-					cougar: false,
-					jaguar: false,
-					leopard: false,
-					lion: false,
-					lynx: false,
-					puma: false,
-					tiger: false,
-				},
-			},
-		};
-	}
-
-	if (V.canines.some(e => typeof e !== "string")) {
-		V.canines = V.canines.filter(e => typeof e === "string");
-	}
-
-	if (V.hooved.some(e => typeof e !== "string")) {
-		V.hooved = V.hooved.filter(e => typeof e === "string");
-	}
-
-	if (V.felines.some(e => typeof e !== "string")) {
-		V.felines = V.felines.filter(e => typeof e === "string");
+	if (V.animalsBought) {
+		delete V.animalsBought;
 	}
 
 	// Pit
diff --git a/src/facilities/farmyard/animals/animals.js b/src/facilities/farmyard/animals/animals.js
index a9f285193040e742cf9afa7ba051b88111a79e32..5e867b92e54e4456fca3697ce18933c0bdf62ee5 100644
--- a/src/facilities/farmyard/animals/animals.js
+++ b/src/facilities/farmyard/animals/animals.js
@@ -194,6 +194,40 @@ App.Facilities.Farmyard.animals = function() {
 	}
 };
 
+App.Facilities.Farmyard.animals.init = function() {
+	class Animal {
+		constructor(name, species, type, rarity) {
+			this.name = name;
+			this.species = species;
+			this.type = type;
+			this.rarity = rarity;
+		}
+
+		get purchased() {
+			return V[this.type].includes(this);
+		}
+
+		purchase() {
+			V[this.type].push(this);
+		}
+	}
+
+	/** @type {Animal[]} */
+	const canine = [];
+	const hooved = [];
+	const feline = [];
+
+	App.Data.animals.canine.domestic.forEach(c => {
+		canine.push(new Animal(c.name, c.species, "canines", "domestic"));
+	});
+
+	canine.forEach(c => {
+		c.purchase();
+	});
+
+	console.log(canine, canine[0].purchased);
+};
+
 App.Data.animals = {
 	canine: {
 		domestic: [
@@ -202,10 +236,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.beagle;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.beagle = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -214,10 +247,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.bulldog;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.bulldog = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -226,10 +258,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.frenchBulldog;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.frenchBulldog = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -238,10 +269,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.germanShepherd;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.germanShepherd = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -250,10 +280,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.goldenRetriever;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.goldenRetriever = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -262,10 +291,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.labradorRetriever;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.labradorRetriever = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -274,10 +302,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.poodle;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.poodle = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -286,10 +313,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.rottweiler;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.rottweiler = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -298,10 +324,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.siberianHusky;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.siberianHusky = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -310,10 +335,9 @@ App.Data.animals = {
 				species: "dog",
 
 				get purchased() {
-					return V.animalsBought.canine.domestic.yorkshireTerrier;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.domestic.yorkshireTerrier = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -324,10 +348,9 @@ App.Data.animals = {
 				species: "dingo",
 
 				get purchased() {
-					return V.animalsBought.canine.exotic.dingo;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.exotic.dingo = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -336,10 +359,9 @@ App.Data.animals = {
 				species: "fox",
 
 				get purchased() {
-					return V.animalsBought.canine.exotic.fox;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.exotic.fox = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -348,10 +370,9 @@ App.Data.animals = {
 				species: "jackal",
 
 				get purchased() {
-					return V.animalsBought.canine.exotic.jackal;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.exotic.jackal = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -360,10 +381,9 @@ App.Data.animals = {
 				species: "wolf",
 
 				get purchased() {
-					return V.animalsBought.canine.exotic.wolf;
+					return V.canines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.canine.exotic.wolf = true;
 					V.canines.push(this.name);
 				}
 			},
@@ -376,10 +396,9 @@ App.Data.animals = {
 				species: "bull",
 
 				get purchased() {
-					return V.animalsBought.hooved.domestic.bull;
+					return V.hooved.includes(this);
 				},
 				purchase() {
-					V.animalsBought.hooved.domestic.bull = true;
 					V.hooved.push(this.name);
 				}
 			},
@@ -388,10 +407,9 @@ App.Data.animals = {
 				species: "horse",
 
 				get purchased() {
-					return V.animalsBought.hooved.domestic.horse;
+					return V.hooved.includes(this);
 				},
 				purchase() {
-					V.animalsBought.hooved.domestic.horse = true;
 					V.hooved.push(this.name);
 				}
 			},
@@ -400,10 +418,9 @@ App.Data.animals = {
 				species: "pig",
 
 				get purchased() {
-					return V.animalsBought.hooved.domestic.pig;
+					return V.hooved.includes(this);
 				},
 				purchase() {
-					V.animalsBought.hooved.domestic.pig = true;
 					V.hooved.push(this.name);
 				}
 			},
@@ -414,10 +431,9 @@ App.Data.animals = {
 				species: "zebra",
 
 				get purchased() {
-					return V.animalsBought.hooved.exotic.zebra;
+					return V.hooved.includes(this);
 				},
 				purchase() {
-					V.animalsBought.hooved.exotic.zebra = true;
 					V.hooved.push(this.name);
 				}
 			},
@@ -426,10 +442,9 @@ App.Data.animals = {
 				species: "elephant",
 
 				get purchased() {
-					return V.animalsBought.hooved.exotic.elephant;
+					return V.hooved.includes(this);
 				},
 				purchase() {
-					V.animalsBought.hooved.exotic.elephant = true;
 					V.hooved.push(this.name);
 				}
 			},
@@ -442,10 +457,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.abbysinian;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.abbysinian = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -454,10 +468,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.bengal;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.bengal = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -466,10 +479,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.birman;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.birman = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -478,10 +490,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.maineCoon;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.maineCoon = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -490,10 +501,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.orientalShorthair;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.orientalShorthair = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -502,10 +512,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.persian;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.persian = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -514,10 +523,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.ragdoll;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.ragdoll = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -526,10 +534,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.russianBlue;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.russianBlue = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -538,10 +545,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.siamese;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.siamese = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -550,10 +556,9 @@ App.Data.animals = {
 				species: "cat",
 
 				get purchased() {
-					return V.animalsBought.feline.domestic.sphynx;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.domestic.sphynx = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -564,10 +569,9 @@ App.Data.animals = {
 				species: "cougar",
 
 				get purchased() {
-					return V.animalsBought.feline.exotic.cougar;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.exotic.cougar = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -576,10 +580,9 @@ App.Data.animals = {
 				species: "jaguar",
 
 				get purchased() {
-					return V.animalsBought.feline.exotic.jaguar;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.exotic.jaguar = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -588,10 +591,9 @@ App.Data.animals = {
 				species: "leopard",
 
 				get purchased() {
-					return V.animalsBought.feline.exotic.leopard;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.exotic.leopard = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -600,10 +602,9 @@ App.Data.animals = {
 				species: "lion",
 
 				get purchased() {
-					return V.animalsBought.feline.exotic.lion;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.exotic.lion = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -612,10 +613,9 @@ App.Data.animals = {
 				species: "lynx",
 
 				get purchased() {
-					return V.animalsBought.feline.exotic.lynx;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.exotic.lynx = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -624,10 +624,9 @@ App.Data.animals = {
 				species: "puma",
 
 				get purchased() {
-					return V.animalsBought.feline.exotic.puma;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.exotic.puma = true;
 					V.felines.push(this.name);
 				}
 			},
@@ -636,10 +635,9 @@ App.Data.animals = {
 				species: "tiger",
 
 				get purchased() {
-					return V.animalsBought.feline.exotic.tiger;
+					return V.felines.includes(this);
 				},
 				purchase() {
-					V.animalsBought.feline.exotic.tiger = true;
 					V.felines.push(this.name);
 				}
 			},
diff --git a/src/facilities/farmyard/farmyard.js b/src/facilities/farmyard/farmyard.js
index 1af2048b324695190029b18dbe5641d10e9bea67..4d5597854b9d34d712acc70e20807f43e5940229 100644
--- a/src/facilities/farmyard/farmyard.js
+++ b/src/facilities/farmyard/farmyard.js
@@ -824,19 +824,12 @@ App.Facilities.Farmyard.farmyard = function() {
 	}
 
 	function clearAnimalsPurchased() {
-		Object.keys(V.animalsBought.canine.domestic).forEach(e => V.animalsBought.canine.domestic[e] = false);
-		Object.keys(V.animalsBought.canine.exotic).forEach(e => V.animalsBought.canine.exotic[e] = false);
-		Object.keys(V.animalsBought.hooved.domestic).forEach(e => V.animalsBought.hooved.domestic[e] = false);
-		Object.keys(V.animalsBought.hooved.exotic).forEach(e => V.animalsBought.hooved.exotic[e] = false);
-		Object.keys(V.animalsBought.feline.domestic).forEach(e => V.animalsBought.feline.domestic[e] = false);
-		Object.keys(V.animalsBought.feline.exotic).forEach(e => V.animalsBought.feline.exotic[e] = false);
-
 		V.canines = [];
 		V.hooved = [];
 		V.felines = [];
 
-		V.activeCanine = null;
-		V.activeHooved = null;
-		V.activeFeline = null;
+		V.active.canine = null;
+		V.active.hooved = null;
+		V.active.feline = null;
 	}
 };