From aa2094cf31f0e2435751f4eece55d87aad13b95d Mon Sep 17 00:00:00 2001
From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com>
Date: Wed, 18 Dec 2024 11:38:22 +0300
Subject: [PATCH 01/23] [MIRROR] New non lethal gun - P207 + Fixes to the
 pepperball gun logistics (#5246)

* New non lethal gun - P207 + Fixes to the pepperball gun logistics (#4658)

* Initial Commit

* Fixes the Light and Manufacturer, and adds Trelus as coauthor

Co-Authored-By: Trelus <140990718+trelus@users.noreply.github.com>

* Fixed typos and review errors!

* adds the base icon to the dmi's to stop some issues with CI

* New sprites by the spriter, should fix the ongoing issues

* doing a workaround because git can be funny with filename case

* minor adjustments, review and unified name to type207 so future generations dont hate me.

* Changed name due to creator request and fixed a typo before extramrdo notes it

* fatfingered ctrl z before ctrl s

* adjust decay on bounce to 10% per bounce

* Update modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/magazine.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/magazine.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* lower case modular ammo boxes

* Revert "lower case modular ammo boxes"

This reverts commit b4fce35efdebdbec6ec25a493930df3c21c1d447.

---------

Co-authored-by: Trelus <140990718+trelus@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* [MIRROR] New non lethal gun - P207 + Fixes to the pepperball gun logistics

---------

Co-authored-by: OrbisAnima <orbisanima@gmail.com>
Co-authored-by: Trelus <140990718+trelus@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: StealsThePRs <StealsThe@Email.com>
---
 code/__DEFINES/~nova_defines/projectiles.dm   |   6 ++-
 .../code/armament_datums/sol_defense.dm       |   7 +++
 .../code/armament_datums/vitezstvi_ammo.dm    |   3 ++
 .../modules/modular_vending/code/security.dm  |   8 +++
 .../modular_weapons/code/autolathe_design.dm  |   6 +++
 .../bolt_fabrications/ammo.dm                 |  49 ++++++++++++++++++
 .../bolt_fabrications/magazine.dm             |  41 +++++++++++++++
 .../bolt_fabrications/pistol.dm               |  27 ++++++++++
 .../modular_weapons/code/pepperball_gun.dm    |  10 ++--
 .../bolt_fabrications/guns_lefthand.dmi       | Bin 0 -> 363 bytes
 .../bolt_fabrications/guns_righthand.dmi      | Bin 0 -> 363 bytes
 .../bolt_fabrications/riotrubberbullet.dmi    | Bin 0 -> 363 bytes
 .../bolt_fabrications/stingstopbox.dmi        | Bin 0 -> 460 bytes
 .../bolt_fabrications/stingtop.dmi            | Bin 0 -> 488 bytes
 .../bolt_fabrications/type207.dmi             | Bin 0 -> 503 bytes
 .../bolt_fabrications/type207magazine.dmi     | Bin 0 -> 385 bytes
 tgstation.dme                                 |   4 ++
 17 files changed, 157 insertions(+), 4 deletions(-)
 create mode 100644 modular_nova/modules/modular_weapons/code/autolathe_design.dm
 create mode 100644 modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm
 create mode 100644 modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/magazine.dm
 create mode 100644 modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/pistol.dm
 create mode 100644 modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_lefthand.dmi
 create mode 100644 modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_righthand.dmi
 create mode 100644 modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/riotrubberbullet.dmi
 create mode 100644 modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingstopbox.dmi
 create mode 100644 modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingtop.dmi
 create mode 100644 modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207.dmi
 create mode 100644 modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207magazine.dmi

diff --git a/code/__DEFINES/~nova_defines/projectiles.dm b/code/__DEFINES/~nova_defines/projectiles.dm
index d3341e2a58e..bf93eb26ee7 100644
--- a/code/__DEFINES/~nova_defines/projectiles.dm
+++ b/code/__DEFINES/~nova_defines/projectiles.dm
@@ -16,4 +16,8 @@
 #define CALIBER_585TRAPPISTE ".585 Trappiste"
 
 /// Caliber used by the pepperball gun
-#define CALIBER_PEPPERBALL "pepperball"
+#define CALIBER_PEPPERBALL "Pepper Ball"
+
+/// Caliber used by the kinetic gun
+#define CALIBER_KINETICBALL "Kinetic Ball"
+
diff --git a/modular_nova/modules/company_imports/code/armament_datums/sol_defense.dm b/modular_nova/modules/company_imports/code/armament_datums/sol_defense.dm
index d9c18d4f95d..5b2a47993c8 100644
--- a/modular_nova/modules/company_imports/code/armament_datums/sol_defense.dm
+++ b/modular_nova/modules/company_imports/code/armament_datums/sol_defense.dm
@@ -96,6 +96,10 @@
 	item_type = /obj/item/gun/ballistic/automatic/pistol/sol
 	cost = PAYCHECK_COMMAND * 4
 
+/datum/armament_entry/company_import/sol_defense/sidearm/type207
+	item_type = /obj/item/gun/ballistic/automatic/pistol/type207
+	cost = PAYCHECK_COMMAND * 4
+
 /datum/armament_entry/company_import/sol_defense/sidearm/skild
 	item_type = /obj/item/gun/ballistic/automatic/pistol/trappiste
 	cost = PAYCHECK_COMMAND * 6
@@ -158,6 +162,9 @@
 /datum/armament_entry/company_import/sol_defense/magazines/sol_rifle_short
 	item_type = /obj/item/ammo_box/magazine/c40sol_rifle/starts_empty
 
+/datum/armament_entry/company_import/sol_defense/magazines/kineticballs
+	item_type = /obj/item/ammo_box/magazine/kineticballs/starts_empty
+
 /datum/armament_entry/company_import/sol_defense/magazines/sol_rifle_standard
 	item_type = /obj/item/ammo_box/magazine/c40sol_rifle/standard/starts_empty
 	cost = PAYCHECK_COMMAND
diff --git a/modular_nova/modules/company_imports/code/armament_datums/vitezstvi_ammo.dm b/modular_nova/modules/company_imports/code/armament_datums/vitezstvi_ammo.dm
index 43755100cad..5e75cb70fbe 100644
--- a/modular_nova/modules/company_imports/code/armament_datums/vitezstvi_ammo.dm
+++ b/modular_nova/modules/company_imports/code/armament_datums/vitezstvi_ammo.dm
@@ -117,6 +117,9 @@
 /datum/armament_entry/company_import/vitezstvi/ammo_boxes/trappiste585_hollowpoint
 	item_type = /obj/item/ammo_box/c585trappiste/hollowpoint
 
+/datum/armament_entry/company_import/vitezstvi/ammo_boxes/kineticballs
+	item_type = /obj/item/ammo_box/advanced/kineticballs
+
 // Revolver speedloaders
 
 /datum/armament_entry/company_import/vitezstvi/speedloader
diff --git a/modular_nova/modules/modular_vending/code/security.dm b/modular_nova/modules/modular_vending/code/security.dm
index 02dbca5e4ce..fa79ef5f60f 100644
--- a/modular_nova/modules/modular_vending/code/security.dm
+++ b/modular_nova/modules/modular_vending/code/security.dm
@@ -2,4 +2,12 @@
 	products_nova = list(
 		/obj/item/storage/pouch/ammo = 2,
 		/obj/item/storage/barricade = 4,
+		/obj/item/ammo_box/magazine/kineticballs = 10,
+		/obj/item/ammo_box/advanced/kineticballs = 5,
+		/obj/item/ammo_box/magazine/pepperball = 4,
+		/obj/item/ammo_box/advanced/pepperballs = 2,
+	)
+	premium_nova = list(
+		/obj/item/gun/ballistic/automatic/pistol/type207 = 5,
+		/obj/item/gun/ballistic/automatic/pistol/pepperball = 2,
 	)
diff --git a/modular_nova/modules/modular_weapons/code/autolathe_design.dm b/modular_nova/modules/modular_weapons/code/autolathe_design.dm
new file mode 100644
index 00000000000..dacc19508f6
--- /dev/null
+++ b/modular_nova/modules/modular_weapons/code/autolathe_design.dm
@@ -0,0 +1,6 @@
+/datum/techweb_node/basic_arms/New()
+	design_ids += list(
+		"kineticballs",
+		"pepperballs",
+	)
+	return ..()
diff --git a/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm
new file mode 100644
index 00000000000..8f32e353253
--- /dev/null
+++ b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/ammo.dm
@@ -0,0 +1,49 @@
+/obj/projectile/bullet/kineticball
+	name = "kinetic orb"
+	icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/riotrubberbullet.dmi'
+	icon_state = "riotrubberbullet"
+	// Used the hive shot stats, with 0 colateral damage, the advantage is that its not weak against armor, and its supposed to bounce a lot.
+	damage = 0
+	stamina = 30
+	shrapnel_type = null
+	sharpness = NONE
+	embed_data = null
+	impact_effect_type = /obj/effect/temp_visual/impact_effect
+	ricochet_incidence_leeway = 0
+	ricochets_max = 5
+	ricochet_chance = 200
+	ricochet_auto_aim_angle = 60
+	ricochet_auto_aim_range = 8
+	ricochet_decay_damage = 0.9
+	ricochet_decay_chance = 1
+	wound_bonus = -30
+	bare_wound_bonus = -10
+
+/obj/item/ammo_casing/kineticball
+	name = "kinetic ball casing"
+	desc = "A kinetic ball casing."
+	icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingtop.dmi'
+	icon_state = "stingstop"
+	ammo_stack_type = /obj/item/ammo_box/magazine/ammo_stack/kineticball
+	caliber = CALIBER_KINETICBALL
+	projectile_type = /obj/projectile/bullet/kineticball
+	harmful = FALSE
+
+/obj/item/ammo_box/magazine/ammo_stack/kineticball
+	name = "kinetic ball casings"
+	desc = "A stack of kinetic ball cartridges."
+	caliber = CALIBER_KINETICBALL
+	ammo_type = /obj/item/ammo_casing/kineticball
+	max_ammo = 9
+	casing_x_positions = list(
+		-7,
+		-5,
+		-3,
+		-1,
+		0,
+		1,
+		3,
+		5,
+		7,
+	)
+	casing_y_padding = 6
diff --git a/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/magazine.dm b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/magazine.dm
new file mode 100644
index 00000000000..0537adea4c4
--- /dev/null
+++ b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/magazine.dm
@@ -0,0 +1,41 @@
+/obj/item/ammo_box/magazine/kineticballs
+	name = "kinetic balls pistol magazine"
+	desc = "A gun magazine filled with balls. The kind that makes makes people stop, holds eight rounds."
+	icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207magazine.dmi'
+	icon_state = "type207mag"
+	ammo_type = /obj/item/ammo_casing/kineticball
+	caliber = CALIBER_KINETICBALL
+	max_ammo = 8
+	custom_price = PAYCHECK_CREW * 2
+	multiple_sprites = AMMO_BOX_FULL_EMPTY
+
+/obj/item/ammo_box/magazine/kineticballs/starts_empty
+	start_empty = TRUE
+
+/datum/design/kineticballs
+	name = "Ammo Box (Kinetic Balls)"
+	id = "kineticballs"
+	build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
+	materials = list(
+		/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3,
+		/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3,
+	)
+	build_path = /obj/item/ammo_box/advanced/kineticballs
+	category = list(
+		RND_CATEGORY_INITIAL,
+		RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO,
+	)
+	departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+
+/obj/item/ammo_box/advanced/kineticballs
+	name = "ammo box (kinetic balls)"
+	icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingstopbox.dmi'
+	icon_state = "stingstopbox"
+	desc = "A box of kinetic balls rounds, holds twenty seven rounds."
+	custom_price = PAYCHECK_CREW * 2
+	ammo_type = /obj/item/ammo_casing/kineticball
+	custom_materials = list(
+		/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2,
+		/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2,
+	)
+	max_ammo = 27
diff --git a/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/pistol.dm b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/pistol.dm
new file mode 100644
index 00000000000..808c243f71a
--- /dev/null
+++ b/modular_nova/modules/modular_weapons/code/company_and_or_faction_based/bolt_fabrications/pistol.dm
@@ -0,0 +1,27 @@
+/obj/item/gun/ballistic/automatic/pistol/type207
+	name = "\improper Type 207 Kinetic Pistol"
+	desc = "A completly non lethal sidearm used by Sol Fed Peacekeeping forces. It uses kinetic rounds to temporarily disable adversaries, it's also a popular weapon for trick shot competitions."
+	icon = 'modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207.dmi'
+	icon_state = "type207"
+	lefthand_file = 'modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_lefthand.dmi'
+	righthand_file = 'modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_righthand.dmi'
+	inhand_icon_state = "type207"
+	w_class = WEIGHT_CLASS_SMALL
+	accepted_magazine_type = /obj/item/ammo_box/magazine/kineticballs
+	can_suppress = FALSE
+	fire_delay = 0.3 SECONDS
+	fire_sound = 'sound/effects/pop_expl.ogg'
+	rack_sound = 'sound/items/weapons/gun/pistol/rack.ogg'
+	lock_back_sound = 'sound/items/weapons/gun/pistol/slide_lock.ogg'
+	bolt_drop_sound = 'sound/items/weapons/gun/pistol/slide_drop.ogg'
+	fire_sound_volume = 70
+	custom_premium_price = PAYCHECK_COMMAND * 5
+
+/obj/item/gun/ballistic/automatic/pistol/type207/give_manufacturer_examine()
+	AddElement(/datum/element/manufacturer_examine, COMPANY_BOLT)
+
+/obj/item/gun/ballistic/automatic/pistol/type207/add_seclight_point()
+	AddComponent(/datum/component/seclite_attachable, \
+		starting_light = new /obj/item/flashlight/seclite(src), \
+		is_light_removable = FALSE, \
+		)
diff --git a/modular_nova/modules/modular_weapons/code/pepperball_gun.dm b/modular_nova/modules/modular_weapons/code/pepperball_gun.dm
index 0e7dbcb1516..0a4f2c3c9b2 100644
--- a/modular_nova/modules/modular_weapons/code/pepperball_gun.dm
+++ b/modular_nova/modules/modular_weapons/code/pepperball_gun.dm
@@ -4,6 +4,7 @@
 	icon = 'modular_nova/modules/modular_weapons/icons/obj/pepperball/pepperball.dmi'
 	icon_state = "peppergun"
 	w_class = WEIGHT_CLASS_SMALL
+	custom_premium_price = PAYCHECK_COMMAND * 4
 	accepted_magazine_type = /obj/item/ammo_box/magazine/pepperball
 	can_suppress = FALSE
 	fire_sound = 'sound/effects/pop_expl.ogg'
@@ -20,11 +21,12 @@
 
 /obj/item/ammo_box/magazine/pepperball
 	name = "pistol magazine (pepperball)"
-	desc = "A gun magazine filled with balls."
+	desc = "A gun magazine filled with balls, the kind that make your face itch. Holds eight rounds."
 	icon = 'modular_nova/modules/modular_weapons/icons/obj/pepperball/pepperball.dmi'
 	icon_state = "pepperball"
 	ammo_type = /obj/item/ammo_casing/pepperball
 	caliber = CALIBER_PEPPERBALL
+	custom_price = PAYCHECK_CREW * 2
 	max_ammo = 8
 	multiple_sprites = AMMO_BOX_FULL_EMPTY
 
@@ -59,7 +61,7 @@
 /datum/design/pepperballs
 	name = "Pepperball Ammo Box"
 	id = "pepperballs"
-	build_type = AUTOLATHE | PROTOLATHE
+	build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
 	materials = list(
 		/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3,
 	)
@@ -74,8 +76,10 @@
 	name = "pepperball ammo box"
 	icon = 'modular_nova/modules/modular_weapons/icons/obj/pepperball/ammoboxes.dmi'
 	icon_state = "box10x24"
+	desc = "A box of pepper ball rounds, holds eighteen rounds."
+	custom_price = PAYCHECK_CREW * 2
 	ammo_type = /obj/item/ammo_casing/pepperball
 	custom_materials = list(
 		/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3,
 	)
-	max_ammo = 15
+	max_ammo = 18
diff --git a/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_lefthand.dmi b/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_lefthand.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..e1650c906ed8c1088aeaf1277f4c3b20b9192b68
GIT binary patch
literal 363
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|el>na**8>L*xY*lO)ifz8DT{lG
zYwGA(7#RrZ2zY9UTUuF5%gEX)@mrj@E(%o7SQ6wH%;50sMjDWlQxy_X;*wgNT$EW*
zl9`{!z)&$KIIN(k^!u0Kf{$OHXnE^uojY?rctfbcMdJsLbk6%|o@6NM>D^&r9Atdi
z*h^u~qe(|5g(w8CT(U{w>WKp}o!!Q&n^#CI>FqXNt6^v^dc^EWP*}m&Vn%5mhO`E$
z%*}IcKLPEn^>lFz@#suWkYHWh;G@8?a0W|(rhyn!upZ+M5rcLM22ZoXIb0Tpjy615
z6KZkyz|pN)OcPQJ5^gj&w=#<Ron4$D(!*rbsG!Jt;ZA?FrOJ2b#zlt9m^|LKGl+#V
z`>;;9!_U~cly}A_kDc?2uQst(#Bj54&yeI;A;Fr#!0>>HuWMVO^iiNg7(8A5T-G@y
GGywn&{(boX

literal 0
HcmV?d00001

diff --git a/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_righthand.dmi b/modular_nova/modules/modular_weapons/icons/mob/company_and_or_faction_based/bolt_fabrications/guns_righthand.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..a578c62f923aaeae59cd26dc0c3204abe79d6742
GIT binary patch
literal 363
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|el>na**8>L*xY*lO)ifz8DQoKJ
ziF=9*=?GXD8F*@lOUuYwT3OpF@n@D69R;dqED7=pW^j0RBMr#OsS1fGaY-#sF3Kz@
z$;{7VV5pcA99B?N`u$6A!N;#pw7hk-&Yd|Qydl)!qVa=AI_G^fPcjts^zN`Q4l=%M
z?4>a0(WE1jLKK2mF4?4T^~8ag&TeDX%_}69^mZGs)i5*{J!1AGD6HUXF{3mOLt2AW
z=H|J!pMdt(db&7<cyuNwNU$z$a5<pS;OxZVWXLJ~AmD)%!!oD2g_3X8_>^uQwJFei
zFlQ%&$GSNuJ7cSun;9e8CNoYKb~~sc!Fq+YX@-+VYRe+SWlU+#tQNCPS)%hyIa`gn
zgQYfTWO(W{Y}%3LH>1JzV9U(S4}8+td_*Hy-5EI<81!odBK4a8T?RUY!PC{xWt~$(
F697nbeTx79

literal 0
HcmV?d00001

diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/riotrubberbullet.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/riotrubberbullet.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..c7a8fd02ec94f3aa88dda449700b349aa73ff8fc
GIT binary patch
literal 363
zcmV-x0hIoUP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80001XdQ@0+L}hbh
za%pgMX>V=-0C=1w$1x6rFboCIIX=Y~?5NPLS*jqE0q#JA+gO4kIi_5nf$hB-?|z6A
z!Wik#T4evh<JCOKow8Vl$Fn1sS-#os6q}9VQK{^vM@p>eSXZ`++#*`w(USY<yz%WC
z{S*+!NEf_B9@D)fSn&V=0I*3!K~z|UV?1!+0K-56rUA8m)B&Ro7<Is?14bP%<Q<Su
zvgv<9$)^7U;(&ybP5%?)^BC0COc|1E&ywv3ibCMn@#72(3=9l!pB^XM3>I=Vet7qY
z;m%`eiY#YfpdbX^_dKkHS^mD~VJ*4lkR1a585qvOEdI~HaF$$i20R;*9Rdst4EJ!b
zNdiMU1Q-}7@Hq?&cnFZ~fI~vvH?gtl<^XDeQ3o)N_6<k80|0G|GMMn^9CrW!002ov
JPDHLkV1oP=nz{f0

literal 0
HcmV?d00001

diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingstopbox.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingstopbox.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..30d1da3854ca044238c99f7c5f11bd89ebc057c7
GIT binary patch
literal 460
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e^#Gp`*8>L*c=~&)XsE=c#;Wjb
zW47cm3%n!lCQwkFuM#3Vb@60VOH-hl9Y?G*fLa(!g8YIR9G=}s19BRxLLy3BQj3#|
zG7CyF^Ya)OD&_=-6%>_z{}NpA@#_;UZ(Xf(XU+$22sOB9{NRz!c^}P_3`IS?J1mTY
zj4vB|Da?5^>ByuIh2WJtRE+ia?oipUpt;}4+;sbbB|)9t#;TiFNN8l9I65<I%8c1u
ziOJU|h0U7mJc%!+YpQ6>-<Sh&3=ALrY~_>OVlDw4bIjAlF~p<u?G#(CLk<FN$E8y?
za~!;+?XzZ$N;-$!0hxogjV#~U<{dberP%x6>6w2#GbCMef==wq{3b2uvsK<9&FqTD
z#5mVeE;puU_gb@V2;lwYdNV8M(u4r{0L|W5k)CzCEmT7OUOe8r(eXz3-p*uCi}*(^
zM=$w&)>yMHcTTjxt<1LL-0ytb4&HmqX?tzglunHY4YwaC@0!Btu6~HwZqA96fBYBO
zWiGNiJ*ZV+xd&w(`1vc+Ri2~q`@!?-M#djmBATZ!+_RIt5a=TYPgg&ebxsLQ0GRx}
Ae*gdg

literal 0
HcmV?d00001

diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingtop.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/stingtop.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..316b8a17ee34c8564f43e333c82aa1dff4968daa
GIT binary patch
literal 488
zcmV<E0T=#>P)<h;3K|Lk000e1NJLTq003YB003YF0{{R35VmRy0000LP)t-sz`(#H
zB#}c+*9HbY9zF*zSsFWtB;bhDmjD0&0d!JMQvg8b*k%9#0FQc9Sad{Xb7OL8aCB*J
zZU6vyoKseCa&`CgQ*iP1<SI)oD$dN$Q?OMq(KF!UEYD0S$pCVUjkq{7QZv&tN+6u#
zlEji!AXBNhBr`9)xFo+oHz%_!Ro6m^i!&v&s2C_^$i<mfl$e_eVdK(ZPO1hoQZ<;8
zs=<U*4aTHuFd|+9iALj6uB_nd=K_vk0OZY))GNlxJ^%m!=1D|BR9J=WmP-nQFc^e?
zY1~T$_uim_2S}-QZ9#ei?|+3RArCWRvgpD^|C!Y{<V6;l5V2SnstPW#OJw6+VwVhe
zZz`}$W~KemRuows*xCl4MO${VTPU(gQnt3iq_l@|7~P7NO_H*8ysEI@E;+y0`Pqd1
z9GjDzPk6oiWIxU3B-tIZ%wn-vKMDH)kr1&D2+#)su@4B)2La*rj{%Gb2(Nz(U_`*f
z>whQ%>;@K##rjJ%l>c~E$bHpkCrDWD*52Cegk3vWiB+sgQ2M#oTfHR#{?w7hB&H<5
eHsE$(U9T@G+e;*9@NBUF0000<MNUMnLSTZ^vCv2W

literal 0
HcmV?d00001

diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..c8bc131af9a5b824f8760b75523a6fa6baca21be
GIT binary patch
literal 503
zcmV<T0SNwyP)<h;3K|Lk000e1NJLTq002M$002M;0{{R3owtGP0000#P)t-sz`(#R
zC?_T-C@(WLS5Z(ENfmf_c#V&htgWy~OH4sIHyBqKA0QzUG!b%3GD#;7S1lMc84V~S
zBMuP`9v&Q0Q<>`k0004WQchC<K<3zH0001kdQ@0+L}hbha%pgMX>V=-0C=2JR&a84
z_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5sid+X
z)yTkHiHkEOv#1y-V#vjrR+N~V3SpzGi%-hWDIrO5d`^CHc4`XIdU6xfaj8{SaP@Nm
z`w{>;BtzEAiV`sZ007rXL_t(oh3%Eg4uc>NMUlZr5dmBO|64nQrV%wFvS`}OSr|2*
zJA<1m1jGCo)ydN#5@ckkYN4+2qRtbVw(H;lk*}223g4@~*K~g#(6nu|L4^iEF&Ka(
z&maNJDnR4f!CQ{7^Cb=pfEflelbW#`X|2Vvw73DxgQODUtoPm-L4$LLe|$e0vSs@7
zJ>%jV{1110T)^6}z)eDcyYJ5@C=Mt%0R=c$5+I&|f&hkLm_T;-Z~d(9Kk`HOW20Q^
t{sTX|`!@l}?q?Wg#S59HZ*TFJyaAE32*6j2!@~do002ovPDHLkV1m1F&RPHf

literal 0
HcmV?d00001

diff --git a/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207magazine.dmi b/modular_nova/modules/modular_weapons/icons/obj/company_and_or_faction_based/bolt_fabrications/type207magazine.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..7a32aab72f8f177e52295779a1faac2b4671abbc
GIT binary patch
literal 385
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e^#Gp`*8>L*$jQkFMhFU<7P;8l
ziHeHY+PN4Q7zoSpir9*Xdy4Z3@&VPX3T^NJYGEu1@(X5gcy=QV$Z4nwi70VNElw`V
zEGWs$&tqVym=hdUP*nQ;OK`!*uTQkRb+yi&IUl?s)Zn7=gGV~&eKb!p6!rA(urLlX
zzHIEJFz3;vBa=cDf>$otq;U1b0UL9}So5_e>h7K0#;TiFNN6OVI65<I%8c1uiOGTf
zO+k0B+-aKR6(co8H0E#2fj)Ky-!m4*4kbd%fo`esba4#v=uA$KU~T5%(0csbxTAyZ
z!BgXoB@mJw$SzrzbKvyz8K%to^BXU&715v1#pQB`>BA?<BNu8~&#A9T`2Oy$^oNh`
z2Q?O03#cq%SZs43pdn5!LBruZ#|wtNHV*6(PZ_NaoH%<Wydh9-0dvnAzfDaSKQS<<
XzEv%Fw7hQ;&>ak(u6{1-oD!M<hFg>D

literal 0
HcmV?d00001

diff --git a/tgstation.dme b/tgstation.dme
index 05f6328a235..c6f74322e8b 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -8248,6 +8248,7 @@
 #include "modular_nova\modules\modular_vending\code\tool.dm"
 #include "modular_nova\modules\modular_vending\code\vending.dm"
 #include "modular_nova\modules\modular_vending\code\wardrobes.dm"
+#include "modular_nova\modules\modular_weapons\code\autolathe_design.dm"
 #include "modular_nova\modules\modular_weapons\code\conversion_kits.dm"
 #include "modular_nova\modules\modular_weapons\code\gun_launches_little_guys_element.dm"
 #include "modular_nova\modules\modular_weapons\code\gun_racks.dm"
@@ -8257,6 +8258,9 @@
 #include "modular_nova\modules\modular_weapons\code\pepperball_gun.dm"
 #include "modular_nova\modules\modular_weapons\code\cargo_crates\armory_guns.dm"
 #include "modular_nova\modules\modular_weapons\code\cargo_crates\surplus_crates.dm"
+#include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\bolt_fabrications\ammo.dm"
+#include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\bolt_fabrications\magazine.dm"
+#include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\bolt_fabrications\pistol.dm"
 #include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\carwo_defense_systems\advert.dm"
 #include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\carwo_defense_systems\grenade_launcher.dm"
 #include "modular_nova\modules\modular_weapons\code\company_and_or_faction_based\carwo_defense_systems\gunsets.dm"

From d64ef78595c3345068307a7427d53b7fd40492e6 Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Wed, 18 Dec 2024 11:38:49 +0300
Subject: [PATCH 02/23] Automatic changelog for PR #5246 [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5246.yml | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 html/changelogs/AutoChangeLog-pr-5246.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5246.yml b/html/changelogs/AutoChangeLog-pr-5246.yml
new file mode 100644
index 00000000000..69eb1c7c88f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5246.yml
@@ -0,0 +1,6 @@
+author: "OrbisAnima"
+delete-after: True
+changes:
+  - rscadd: "Added the new P207 to both cargo sol imports and security vendors, its a completly non lethal pistol that shoots bouncy balls that are more effective against armor than the usual rubber ammunition, comparable to regular ammo.  It's ammo its easy enough to produce that autolathes and sec lathes can print it out from start."
+  - qol: "Added two pepperball guns to security vendors along with its ammo, increased how much the ammo box holds to 18 and fixed the issue that prevented it from being printable on the sec lathe."
+  - bugfix: "Lower cases the text of ammo boxes to be consistent."
\ No newline at end of file

From eabee93b43a978a913563d98508fec6741a82a25 Mon Sep 17 00:00:00 2001
From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com>
Date: Wed, 18 Dec 2024 14:41:26 +0300
Subject: [PATCH 03/23] [MIRROR] Unprotects Akula Lore (#5248)

* Unprotects Akula Lore (#4687)

Unprotects Akulas

* [MIRROR] Unprotects Akula Lore

---------

Co-authored-by: OrbisAnima <orbisanima@gmail.com>
Co-authored-by: StealsThePRs <StealsThe@Email.com>
---
 .../modules/mob/living/carbon/human/species/akula.dm             | 1 -
 1 file changed, 1 deletion(-)

diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm
index 26eb79fed58..7ed4bbfb863 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm
@@ -9,7 +9,6 @@
 	name = "Akula"
 	plural_form = "Akulae"
 	id = SPECIES_AKULA
-	lore_protected = TRUE
 	offset_features = list(
 		OFFSET_GLASSES = list(0, 1),
 		OFFSET_EARS = list(0, 2),

From 0947264853bdacc943914fdc3819b936a9532bf1 Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Wed, 18 Dec 2024 14:41:54 +0300
Subject: [PATCH 04/23] Automatic changelog for PR #5248 [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5248.yml | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 html/changelogs/AutoChangeLog-pr-5248.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5248.yml b/html/changelogs/AutoChangeLog-pr-5248.yml
new file mode 100644
index 00000000000..2d752c8f1f2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5248.yml
@@ -0,0 +1,4 @@
+author: "OrbisAnima"
+delete-after: True
+changes:
+  - bugfix: "Removed the variable that made Akula not being able to use subspecies or custom lore."
\ No newline at end of file

From 1df5d3999d4aafa089663ec8b765ba702e498de4 Mon Sep 17 00:00:00 2001
From: "tgstation-ci[bot]"
 <179393467+tgstation-ci[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2024 12:38:16 +0000
Subject: [PATCH 05/23] Automatic changelog compile [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5246.yml |  6 ------
 html/changelogs/AutoChangeLog-pr-5248.yml |  4 ----
 html/changelogs/archive/2024-12.yml       | 11 +++++++++++
 3 files changed, 11 insertions(+), 10 deletions(-)
 delete mode 100644 html/changelogs/AutoChangeLog-pr-5246.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-5248.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5246.yml b/html/changelogs/AutoChangeLog-pr-5246.yml
deleted file mode 100644
index 69eb1c7c88f..00000000000
--- a/html/changelogs/AutoChangeLog-pr-5246.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: "OrbisAnima"
-delete-after: True
-changes:
-  - rscadd: "Added the new P207 to both cargo sol imports and security vendors, its a completly non lethal pistol that shoots bouncy balls that are more effective against armor than the usual rubber ammunition, comparable to regular ammo.  It's ammo its easy enough to produce that autolathes and sec lathes can print it out from start."
-  - qol: "Added two pepperball guns to security vendors along with its ammo, increased how much the ammo box holds to 18 and fixed the issue that prevented it from being printable on the sec lathe."
-  - bugfix: "Lower cases the text of ammo boxes to be consistent."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-5248.yml b/html/changelogs/AutoChangeLog-pr-5248.yml
deleted file mode 100644
index 2d752c8f1f2..00000000000
--- a/html/changelogs/AutoChangeLog-pr-5248.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "OrbisAnima"
-delete-after: True
-changes:
-  - bugfix: "Removed the variable that made Akula not being able to use subspecies or custom lore."
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-12.yml b/html/changelogs/archive/2024-12.yml
index 71b9232e7ce..06f16b74c2f 100644
--- a/html/changelogs/archive/2024-12.yml
+++ b/html/changelogs/archive/2024-12.yml
@@ -790,6 +790,17 @@
   OrbisAnima:
   - balance: Bitrunning - Reverted Domain points to 1x from 2x, and reduced BitRunner
       points to 1.5x from 2x
+  - bugfix: Removed the variable that made Akula not being able to use subspecies
+      or custom lore.
+  - rscadd: Added the new P207 to both cargo sol imports and security vendors, its
+      a completly non lethal pistol that shoots bouncy balls that are more effective
+      against armor than the usual rubber ammunition, comparable to regular ammo.  It's
+      ammo its easy enough to produce that autolathes and sec lathes can print it
+      out from start.
+  - qol: Added two pepperball guns to security vendors along with its ammo, increased
+      how much the ammo box holds to 18 and fixed the issue that prevented it from
+      being printable on the sec lathe.
+  - bugfix: Lower cases the text of ammo boxes to be consistent.
   Stalkeros:
   - rscadd: Syndicate Assault SNPCs, now 'assumedly' Counter-Bitrunners, have been
       provided with appropriate MODsuits and Cybersun-manufactured weaponry.

From 53c98d249be839ce7cf74fa3853cd3a9d2d85ecb Mon Sep 17 00:00:00 2001
From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com>
Date: Wed, 18 Dec 2024 15:46:49 +0300
Subject: [PATCH 06/23] [MIRROR] Allows Felinids to shower (#5249)

* Allows Felinids to shower (#4686)

sets to 0 stamina damage of water haters when in water instead of being damaged (compared to being recovered for regular people)

* [MIRROR] Allows Felinids to shower

* Fix conflict

* Fix conflict 2

---------

Co-authored-by: OrbisAnima <orbisanima@gmail.com>
Co-authored-by: StealsThePRs <StealsThe@Email.com>
Co-authored-by: Feenie <62373791+FeenieRU@users.noreply.github.com>
---
 code/datums/status_effects/neutral.dm | 47 ++++++++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm
index f8814c56f14..90f9a3c3097 100644
--- a/code/datums/status_effects/neutral.dm
+++ b/code/datums/status_effects/neutral.dm
@@ -610,11 +610,56 @@
 	SIGNAL_HANDLER
 	qdel(src)
 
-/atom/movable/screen/alert/status_effect/shower_regen
+/datum/status_effect/washing_regen
+	id = "shower_regen"
+	duration = STATUS_EFFECT_PERMANENT
+	status_type = STATUS_EFFECT_UNIQUE
+	alert_type = /atom/movable/screen/alert/status_effect/washing_regen
+	///The screen alert shown if you hate water
+	var/hater_alert = /atom/movable/screen/alert/status_effect/washing_regen/hater
+	/// How much stamina we regain from washing
+	var/stamina_heal_per_tick = -4
+	/// How much brute, tox and fie damage we heal from this
+	var/heal_per_tick = 0
+
+/datum/status_effect/washing_regen/on_apply()
+	. = ..()
+	if(HAS_TRAIT(owner, TRAIT_WATER_HATER) && !HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION))
+		alert_type = hater_alert
+
+/datum/status_effect/washing_regen/tick(seconds_between_ticks)
+	. = ..()
+	var/water_adaptation = HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION)
+	var/water_hater = HAS_TRAIT(owner, TRAIT_WATER_HATER)
+	var/stam_recovery = (water_hater && !water_adaptation ? -stamina_heal_per_tick : stamina_heal_per_tick) * seconds_between_ticks
+	var/recovery = heal_per_tick
+	if(water_adaptation)
+		recovery -= 1
+		stam_recovery *= 1.5
+	else if(water_hater)
+		recovery *= 0
+		stam_recovery = 0 // NOVA EDIT ADDITIION - null the stamina damage.
+	recovery *= seconds_between_ticks
+
+	var/healed = 0
+	if(recovery) //very mild healing for those with the water adaptation trait (fish infusion)
+		healed += owner.adjustOxyLoss(recovery * (water_adaptation ? 1.5 : 1), updating_health = FALSE, required_biotype = MOB_ORGANIC)
+		healed += owner.adjustFireLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
+		healed += owner.adjustToxLoss(recovery, updating_health = FALSE, required_biotype = MOB_ORGANIC)
+		healed += owner.adjustBruteLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
+	healed += owner.adjustStaminaLoss(stam_recovery, updating_stamina = FALSE)
+	if(healed)
+		owner.updatehealth()
+
+/atom/movable/screen/alert/status_effect/washing_regen
 	name = "Washing"
 	desc = "A good wash fills me with energy!"
 	icon_state = "shower_regen"
 
+/atom/movable/screen/alert/status_effect/washing_regen/hater
+	desc = "Waaater... Fuck this WATER!!"
+	icon_state = "shower_regen_catgirl"
+
 /atom/movable/screen/alert/status_effect/shower_regen/hater
 	name = "Washing"
 	desc = "Waaater... Fuck this WATER!!"

From 28cd3acb1a90eab90eaff53e039a9421db9c6afb Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Wed, 18 Dec 2024 15:47:17 +0300
Subject: [PATCH 07/23] Automatic changelog for PR #5249 [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5249.yml | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 html/changelogs/AutoChangeLog-pr-5249.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5249.yml b/html/changelogs/AutoChangeLog-pr-5249.yml
new file mode 100644
index 00000000000..9a16a38c5e7
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5249.yml
@@ -0,0 +1,4 @@
+author: "OrbisAnima"
+delete-after: True
+changes:
+  - qol: "Allows those with the Water Hater Quirk (Felinids, Tajarans, etc) to bathe or shower without getting stamina damage. They still get a negative Moodlet and dont heal as others do."
\ No newline at end of file

From 3e1349b2e1b98b188adaa9c87c2e2f8c91ef9e81 Mon Sep 17 00:00:00 2001
From: Feenie <62373791+FeenieRU@users.noreply.github.com>
Date: Wed, 18 Dec 2024 22:08:05 +0300
Subject: [PATCH 08/23] Streletz collection (#5245)

---
 tff_modular/modules/redsec/code/vending.dm    |   2 +
 tff_modular/modules/streletz/code/clothing.dm |  46 ++++++++++++++++++
 .../modules/streletz/icons/mob/hat.dmi        | Bin 0 -> 1947 bytes
 .../modules/streletz/icons/mob/suit.dmi       | Bin 0 -> 3989 bytes
 .../modules/streletz/icons/obj/hat.dmi        | Bin 0 -> 1089 bytes
 .../modules/streletz/icons/obj/suit.dmi       | Bin 0 -> 2174 bytes
 tgstation.dme                                 |   1 +
 7 files changed, 49 insertions(+)
 create mode 100644 tff_modular/modules/streletz/code/clothing.dm
 create mode 100644 tff_modular/modules/streletz/icons/mob/hat.dmi
 create mode 100644 tff_modular/modules/streletz/icons/mob/suit.dmi
 create mode 100644 tff_modular/modules/streletz/icons/obj/hat.dmi
 create mode 100644 tff_modular/modules/streletz/icons/obj/suit.dmi

diff --git a/tff_modular/modules/redsec/code/vending.dm b/tff_modular/modules/redsec/code/vending.dm
index 18679a0c432..c1a22c6ca06 100644
--- a/tff_modular/modules/redsec/code/vending.dm
+++ b/tff_modular/modules/redsec/code/vending.dm
@@ -26,6 +26,8 @@
 				/obj/item/clothing/suit/toggle/jacket/sec/old = 5,
 				/obj/item/clothing/suit/armor/vest/alt/sec/redsec = 2,
 				/obj/item/storage/backpack/waistbag/redsec = 3,
+				/obj/item/clothing/suit/armor/vest/alt/caftan = 3,
+				/obj/item/clothing/head/berendeyka = 3,
 			),
 		),
 		list(
diff --git a/tff_modular/modules/streletz/code/clothing.dm b/tff_modular/modules/streletz/code/clothing.dm
new file mode 100644
index 00000000000..82acd9ef563
--- /dev/null
+++ b/tff_modular/modules/streletz/code/clothing.dm
@@ -0,0 +1,46 @@
+/obj/item/clothing/suit/armor/vest/alt/caftan
+	name = "security caftan"
+	desc = "This is a long and quite comfortable outfit, sitting tightly on the shoulders. Looks like it's from times of troubles."
+	icon = 'tff_modular/modules/streletz/icons/obj/suit.dmi'
+	worn_icon = 'tff_modular/modules/streletz/icons/mob/suit.dmi'
+	icon_state = "caftan_red"
+	uses_advanced_reskins = TRUE
+	unique_reskin = list(
+		"Red Variant" = list(
+			RESKIN_ICON_STATE = "caftan_red",
+			RESKIN_WORN_ICON_STATE = "caftan_red"
+		),
+		"Blue Variant" = list(
+			RESKIN_ICON_STATE = "caftan_blue",
+			RESKIN_WORN_ICON_STATE = "caftan_blue"
+		),
+		"White Variant" = list(
+			RESKIN_ICON_STATE = "caftan_white",
+			RESKIN_WORN_ICON_STATE = "caftan_white"
+		),
+	)
+
+/obj/item/clothing/head/berendeyka
+	name = "security beanie with band"
+	desc = "Soft and armored beanie that toggles its order."
+	icon = 'tff_modular/modules/streletz/icons/obj/hat.dmi'
+	worn_icon = 'tff_modular/modules/streletz/icons/mob/hat.dmi'
+	icon_state = "berendeyka_red"
+	uses_advanced_reskins = TRUE
+	armor_type = /datum/armor/head_helmet
+	strip_delay = 60
+	//supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
+	unique_reskin = list(
+		"Red Variant" = list(
+			RESKIN_ICON_STATE = "berendeyka_red",
+			RESKIN_WORN_ICON_STATE = "berendeyka_red"
+		),
+		"Blue Variant" = list(
+			RESKIN_ICON_STATE = "berendeyka_blue",
+			RESKIN_WORN_ICON_STATE = "berendeyka_blue"
+		),
+		"White Variant" = list(
+			RESKIN_ICON_STATE = "berendeyka_white",
+			RESKIN_WORN_ICON_STATE = "berendeyka_white"
+		),
+	)
diff --git a/tff_modular/modules/streletz/icons/mob/hat.dmi b/tff_modular/modules/streletz/icons/mob/hat.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..0391e33b067cb339158063feef5b1651581afb3e
GIT binary patch
literal 1947
zcma*odpr~BAHeZvY-Z`;6xE^Hlnv$Dh%V+fg~L*#_T!WZHFr&><gz$U<g!ePms~p3
zWWR)JE^#=lMrjo~NIP!JUE7Y#*y!xMe&_Z2{c(PO{Qh{J@AG;+&!6wt=gIUY9Q|g4
z-Ua}`H|}ou6Us?fF0#6sa(|zY;I1536MRS)@gcE6)X<oVq0vzQT)IO%8AFX*{z8nA
zED85~Z?=cu^M+XKYxxd4I&S*L)1(_vvvV5luqUv6SP#^laVD4PgCd%kJT<nlKtJ7g
z$m$nk8`sP%Ec$WPw#wox>_cNKTV3vcZuMakmUV&7(x>l=&~`S)dmC4q==K1plMb~N
z3{)WjP<!u=ck;P(XQ9N4vcp%07u`#8a6S=~fzz*kXN|CSrkrl9{V~GNb<gbmCsAjO
zclD=MX&7XgHmf&QDbKgGAJ;9Z_Lp#qx6QsNA!}HzWvGQesa!EW{=jTPVI*q#-L~j*
ztSI<%@#WYzT0b2U@q_tIQ;Lz2?v|n}a~LC|baP~D;-J$|{0K(UH`37BJb<%5&PpmT
ztc(nhI^Flf8HPR!B$FNIv^1jxWAov=<qa_zOd_l1%v+lCDSEAobn4^)-f;=D8O1|b
zp`H!vMHj4`^Mg|5zkUphQTR?&FGNfQ?I>NUc)ffpyR0RtbFaneA{%qMi_4>%^Qtn`
zFr%+xCY9_0ZYuH$QeJWxIVorH(0-b8E+nDDZaln7$1+7k7e+UwWKqJyb$K;r84dc;
z*MpXdpG!Hs=Qhh&4m^`w;cnnSTbPgK#6KL;`<I_og)YoL7B$l-{|z08-DrV`*O2Vy
zAKn`t7mQ54%f-280bV61-;7%hO}rl1Fm8)+143?nxZ=H+R|ulfF7`m}RyPk|7L|&m
zgdzl@)$yN6Klts(&>MbF?9AKjh5oRxJi&g{=I#S5T4f#0968MC(-l!ld4&J>fU5Gg
zYl0D_do;OqkMN)e-SdPB3fUpW7A0!mgwkp9HMb9NZu^MTGT<VYg$9m<u1wA9eD{6Z
z3e5f37uK(-E8?i_V`U}|3SRCXt}wHE)$2U(9K2<>cLDnx=2<^$0py#Tf>(hMlBPyG
zl>}~es?=`ZLjP0?Os~Pn2mX7d*GqGR38uD$$apm`g&g=Om!0Piu?$l_G+I;{>{=<y
z#4M_idzj%6aXQ($X$#owH7QaZ^}jPUM}IPWa`709wN~1G#N8hhi6B2$r5m0vB8eX9
zCM+jJS6VmV3{P%Z|1vxIrYtk=-*$+@;??Pca+bsPnpqhTrg=V1bnE3vT~W*txiIQ#
zi2u>sx1pwn8~Vy6!N?nH<>iKm<}g2U);!aK<S7S2X;9v<g}mxICu|j&{5D*8`bus_
z)6jR1YAhE^P7&55w<QwD5zWsQLvXPZCm@HYf&c+PJTf#9GR!Dl{pfbgG15r5t=uTP
zPlJ-9MHg<}8M;YepEG`Y24Rq(=F0Y`iA);HPPw*e6K<$86AoSaN-QCyy!)+1{~{E0
z8<lP7^LoL9J8o*OqYAtdk6(&ETR&ScXcYSGXkkCC-X=ij%-u$A9easp3HA19kGAC|
z4q!tNg$EBI2Q>`QbpGpQyM>3Z@5<MHsoiBRPz)3TLQ8Dd-&lg?dm6emwd<CL;v$zd
zQeSq8a*Hn8|3CnGLl?-Tp3<GV)E#I?Ot%Cw>N1#&$=6C{g11p^NX!ekxWT?>>kdgM
zL+fuT-F-5keYK6CdC7(c&rk~4iEO8atrJj>tz<mZ|G`2jhPe3{Y*7X#yCSvPGf(Yq
zP$Bn|Atb^i?1q$0ysX6W4-{e<IQL+MmD-nlj9gJ^M(<e$$NQa`k3CHx*$l>&=*ll&
zzGTeIgg%O*P$&X@lRdM!`Rz{@Ug5fANtS|j503AG?KI6PEiH{dJx!Te<Z|)dCh-Cp
zKqwm$sK2XxwH#%bzTJpRpKqSKw>mZ!Sb+mgYbew8>W<#e5WZKE#cI5R*?s<+_dXo$
zk03!O_XvkE+6k{`#1UE0mBy&rRwh#`#qjH<vV*1K`!%=cyRF3XDi8a0;|NLG%!HNi
z;rnJO$s@6)5{oujk32gef-%w(L+RJ>93gOw)!lF_Pr}a!gx=gpL?N^d<~!h~!DSvE
zKE1RMeH~R(F%0*-j-7<0PgVt-@sr-X#+<CNeO<8k@%VU8$Qumm+fnRnoxrdjd}7WM
zXUYgTM2zQ<+DlZxXa)bm(=%E;Yl-!F`|YbM3YY{h(li)I_cB2K<k5hZI}zW*oj5av
z?g2jrHq*k`*$!i3m!<Xe>ZI+j{;C9J!{vKfj_5hp>kt~HwY9Zm|AAg9H!ltE(vDv^
zuL9k&OTC&EN1RaAf%!_)bCe(|CR7U*ww^E!GBSV-A1yXtNlV#S|34G)k9ychd}2N@
z2vbELr9koOo?eqKs8Ca8W}gMXeJw`+C8Og%xd~p!0frX&R*wdl=0}nql$x+GQ148;
daq?%eL$l`Wueaj*Wy;?cxVsYYHO}PJKLNwzr7{2j

literal 0
HcmV?d00001

diff --git a/tff_modular/modules/streletz/icons/mob/suit.dmi b/tff_modular/modules/streletz/icons/mob/suit.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..a28c149e44eb5fbeb0475711cc3f9dfe041cfee8
GIT binary patch
literal 3989
zcmZ{nc{J1u8^?cR##qOQWUjGi%aW0OH^@?129;~6=_(=Xpkl-{mh6P0j4df5q-+Ue
zDSNotX~;H~tdnIJyzV{kd(L~_^WHzc&-3^5ob!Cn=ZUelG=;GXumb=9GdDA~Iqrnx
zU|FHZbuc*C{J1>`wzCf~zUA+NbN3B!_wfdR`y|^dzPP}hU$(v*TeGqk6=c75_u7_U
zM)fOCP0ROQI@1B*;uC5#lx>v1DPIsJO{cV`*ooSn(NuaXp`_R#qk29jPFeDOA>w6f
zobp>4C3U`5wN~rrX|~TVl#Ff0ck_^9pYS;yIFS>fK<9v3%@l`|I{<KfGdD)t-6yR$
zd&Toz{Y{U<e$2b7nqwsj&cAIU8VR{u`Ni%uQL1mV#k!y%!>kZ}{$ycgk+p={^C&`s
zNt4+Lvy0YUR}~UYd^o^d;Tg+Ni@f|h__A6GGqGYk63hPZ8dbBd_b0yhYnHb14yjH~
z+3H*^EhwA%iK@GXpYN`}=V8Yts25T*AXc2Ai@*CtKbq0<ra9$CySP6g?est8DOmoX
zGoM-BFKLvi^QbwT2G%T}R1LFJ7&I=}O8g0kc6@(kYk#S^+@*?utNU0tShyElf0)%K
zLgV*z(NC<q%OoHe*h9@E(IP<;eFk;Xe(fjbEXj6rCH=M>&gviIwp-S9*S6g9jUdAh
zU-Qc=GNuX?RQ*1uF?D9z*1Q^flw@m*4<5*dm!1@2Sv%e0aWGRwXG0(oq2b^{Wdmvm
zoh&z`*%Dw4))q<n+>aRov3gBitS+iT-j3U*(hd^z!7%Fu%nF7B_K<XXN6<QKsp1YU
z`;<>U)#0e4Z+@k1BX`;B22`lL&gdNo@nn-uaVwvp^OLkdcwH|p@6z|Yt?1E{1PZ)G
zEkWSz{9sa_1PX$$lW6lJJ)-q<c&QL)Z;v|VjAn35Bn3KMRjLJ+iJM`1ex$vzbuHC4
zf5QRfR{DuPNeTX%Jdi^!+t|w?85tx9dkL`@&mV}qQ-;Uuq?E>82(s)O`i_K&LS{8W
z=Q~*+G-!Rxci_FOlyTJlEbe1^@A8b;-mq!0(f8p4n%71qR!Cb1**BFGa7Ix!U?0;Y
zsWF6>_I$JErRRn|s8sl458J^CC>rXaC6n%diSXNC<3VKfW4D}nf2nPE(R`f`vNVO5
zYg(C0r5k^n4kw=!qr0R+4LnRof&0J!(#b7(QeR8n&pF?XygAUOHHb{wG11i0ue8oA
z(&WrL15m1}y)%Lp?!|f3kCgf&KZ)d?wuT_ts6RrSuDU0&PQMN}@7n+}8B(Z2I<2*C
zunL*Z5+6ypm1*KI$I)EclBxpFhX<m0KQJ${8@aJ#Ejc>9c0xDaG#+mI#K{TYbr#H+
zTR559LUGIDVa?j-BY|~)l&BtxlJvg+C_DX2ZD^k1_3Hw^yD1T4=>b>|OKc^m{xL`P
z*!X#GFf4I$X05T9zBZ-|+8z*vJm`|NtVsjc1#KNPbWyG+>T|uk;$eJYF|@2rQDodK
z91ys*{HAy*`}NW9F4sh&3MW~ogU0zo3fC8ZOIUiXkH79S^K@jObwx%%d=lE(uOWb6
zeshT5xRoijMZLYI<CtI_D{^ged>k*fQ#Z|$Om(~*w)Ze^+%$=nRpD?3JAA{Z!1ZQM
z)cf;+s;W<oUfc#n1FZW_<qG~Ocd$P<w%~GM{rQJzCh-$ljT54SP>J+-qWR-?kT?Eb
ziZIx>>8`_i0_H$BwB_X@bI`@Tl{W9duSXlbhmNlWD0hvFlB){M7%J=JQirg|1}eUw
zt8*sIw%kB|W&#|gSl8-UHtC$^u>c8(s7b}X6U^<%i1@*pX4nVTKzx9uIVK37;&Yw3
zibUL}S(fl9JQg$v4nuImlG9N(79}!(44mQmLFtEwz{o6uo$Q<uw4Y_{`12$=M)X(c
z#2$*>_b5EBYyowP*XZpIxMU5BHkrKeK|%nW5rIPnSzFqT5WCB6FiOQ>R^?RP;lLsK
z3>Jq)$w<#!aF=`3{`6adEGyA9zxzN<jDExSeSc9CUt_l8!o|oCZi)OnT&p8{bgWN(
zB0Xs=6n26BZ3EL4GYf=11l10z)Wn%1QXA{nimpG7(i19`ddR472QT_6C3qXLe9^41
z{UBWuHfRifV#$1!7j4^QUIuT$4(sn<@$JN%W42qSb{xTLo_S$rDsY%)$1!@oXwerL
z#_#NAn&(*lIe%!9cN#yG6C_ua91Z9fse0UuBM2pQn1QLZ<9#xuT>&QC?2gci{4Bw#
z?aCojO`Dcf4gDn)e869vzQ<AZPNdCQ8w5-INZIe-_)2dEyxnrYr)u1MdBjqPRIcyq
z3oLTe=L|c%o?h86MqDOS`QOSjymwshSP5V#BWHGsIU-#=c4too&h$Ju-`1qfXn6EL
zG@RI25_z*3@I<TdVOCPx^g=Wvk{hv`mD*-!G+gxJpkhNY{&~q4OLt7Cw&EG$e3>rG
zK#t5l>FTz<Raa1vSH;qI_-ZmvmU)SVW%-w2GK^f<>bBm(zoQk%v>iMqIN@|#Iy$`K
z3{Wo;B@~3WRITh@lHA~IqMYsU6Fk2CU(Gi!%lGtF)KW%NG=24l{IX!7M6QCBa<{ij
z-q#AhS~XlB{y#Ka22fI*FclS*UFa)bYu4=<4Fc_!PYGnUac@$1(63~WD#ky2yga{b
zi%{OFkG?;M^LZ`(YzRIlqKnW-4x^9B;)A&$r!PRqhtBeHlNL1!65_0q$>exwb=Ycg
zFmit`sAlza^@IaPv2|-!-6(`RL)>$Nx56~fbIR%Z^L$z!I{Uu2<KqKQ^ixfjCc~}N
z2lxQz(WwDLuUGS^2ovD`_`s@>M|Y9_n=b0n3xA{z?4Nn(UK?yTC^D&ym4}1`jcOH#
zphs#OFVj#Hw)`q+$K+B}1Q*k@Z$#Yq8|I$Fy;tdprVVGgx^Yw3XdOZTQ=-)Zq-r;O
zeOo*0P|L9Fc4!!~{!f2{WfD(3?z2EzPU6fTWOZV*Aq&fui^9(f96noZxmql3T_WhJ
z%BHM?10V#LPq;qoKt$SR(w(*aITxfmw?RI`V_DhbkU_UxW4cmekI7KJofy2?w!fw3
z9b;jEs}uY;*pN>oxl@co&$fC+)G!3Od2o$#p+L~J7-24>;Vhkb?OT;LfHu;1)Xme@
zMN=a96oHjc-pf3GPP!KQMK~v8zr1n%>@5_*%$RyFkSZotd-LR_SYxif&?0mas0OR8
zkg@sfb7)e|Avu=#X)Aa;<`Ie3oAvlxe|mLGANNZISss0uQ}vwc{{>mGm+twZC`$v=
zXl=GrU7*>UaPkS6$Xu3o#!X(CY5`q&*_2BkM<7tjC*ES?ixMo!6cMN~cvdprj#rKy
z=ma<Z=5?v&IaEzEipiJXl@co5e`^2UAPHx@ww9B1XI(lv`**#zV3}EGQ%#masT9ll
zF(N5EcO_M{A3>H#8+T*)^Xb6knHTN;;@LOhrtEv0R&^wOE-4mhIPP3&S`{u@5Y%0}
zn>#Aw-)LbLs=MQ@qNQ3hy_V_NR}>8=7K+9EkYj!!4vh%V`~66RCK}_))MEYi8QJFR
z0#3@>LsY-k*+TCLQ9<aPAelKzAdDNjug*C8_<@|p90CO`r~5Bv7Eo&#LEG4t#Ut=d
z#9q6NLFZ%5f6j?6(E9YWP1!~GF^q1MnNjb2ciuD|w6U;rSZn73cp6?!{LQJ5^V$?>
zY~ZJcY>q0rrSq_*L3n;CJtWn?0kv*1{Q=MONM4&Sp8hk4HqS>1nQ`kcwnukX+Z#oM
z;I|*-Fwz|AgDWfB@{#J^^4%m&TOm!H@ekUlh?o4IOcd$Hx-tDkt4s!jlk?hukU>^K
zR66{V%@fn+0koN}U!d`!AuEj2G`XF+j}(FRLd{}xS!A-oOIA-|3Q{AxH|8K>U*B^N
zS!s#p+vrUqVRv<oh_=$$ve!LLJ%Lpi!L&f&SE${`f`apko)8m=dEyKtcqPy1k!<LQ
z1f8u^U0uC+rY#9RGRe|&{Y0(7b%_DNu!C{79{f-HwRF@JHzDpGUuN>!c~?_{)EJW&
z_$_AT+7JlKki7VGp&2dS<VODTnw12<596-=V{Z4}>O_%THEym`TnP7oHs5nduiCXJ
zPjm~>5?u0mC3$tqo~1vU5n%lO!3)t}N1)_8223+8HM<Zt&iE*U&tV6d{9Aw9m(aDF
zP91A=e!BD?ZV`xybcaZ$3Sgt%2}O8de0=lJ9?Prchm(K}`0299NxPYdn2)8Nz8-mM
zw*CmiHKr-A<%XTKv3D!!u|Lwp(i06%cuE|*sGoCzu6T3~mlV1U?75j~&^q4eljJ~u
z>%)cM039!(x|2V`{o5;d;b*J4%+GTb%&sB~Z3*4#QW_|5w>9!_<w7w7f3j)l<?)V8
z!<!es3H^m2&boysXa7u$&}?_zHFZuMP#;P+R1$5W#_&oHJXLUH9CW2C4rjAPz&^<y
zFiFutT1@09#kT83QZG+_I+wlwuIC{_py2&`+sewyL1P7VuEHDBtuc{KXJ4OEaClj*
zw2e~r(~ga5=S2%9w5+@RRJ}8_%TeXW8RsdHnatQV&i8-3@4NwSr}3av1hRE2o}VFn
zs@Mou`Hx8jI+c4(5H*><2#;6$?C>Y<v48_~a{pVT5`}f&v;j`#S*J>_H&T*NEO24@
zb|v!a_qr^a&-ag)|I4HP{0>8^K~_zVJ?bwvy25@54J3F|?wwY|y8y4Xj>o;C!kT7D
z0Nu#>(thky;y``k)c@#|xs<af6WE6mbNPj23fOE74t~M3$z$>+hL0JTd)R0<Af|D7
z1t)6X^Uf0S7m09E{ipDpe=AjlxCv;r%^B33X2DrWfw$l04hQ}AK(0T<joXc<(`&Zr
zLN@d%(;B{Oqb^ECrzyMo?ur97DZJxhQ!Xi9uHdbpIGm}+1ok|EU90!h&018==)%BM
zY@?5Lf$a$qNQaxfm+$K50rKK*;hZrJz)TS)JOn1@PmkCz=EKE`nwT3gcOS#rS5nl?
z{&Faad7$0a5h!ZfXT#Y&R*O$(q*3&110M;eaS%qxWLAG~amX^T_vC)=U0KZWpADFw
Lw=^y_#1j7nQKETg

literal 0
HcmV?d00001

diff --git a/tff_modular/modules/streletz/icons/obj/hat.dmi b/tff_modular/modules/streletz/icons/obj/hat.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..2edd27c6455bd66a27c0d3b11194f089b6394a1e
GIT binary patch
literal 1089
zcmV-H1it%;P)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF0001idQ@0+L}hbh
za%pgMX>V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+
z(=$pSoZ^zil2jm5DJiumH7_N#GCMK8C^bcii!&v&s2C_=$i<mfl$e_eVPjLClvA2Y
ziu&@5%o3a$loee4T)-Xx00qiBwjU!4b^rhadr3q=RCt{2n$K$!K@`Vde^{ikP18^t
zEiKiW22`jPL8%gQQAD(Q@*tE{@Fe&T<lukcNht_I2;Op1PokF?BuGUN#X}-NQHs@)
zrfI2)KUni-J7JS<HnVXzFPqE<%1htQcIJKe&2%#R03;HLMAE)=BoYbI0fa&!(*8S1
zdv5}|MH-oXO4M0phPKauwiiHX3TWZ!{o>jUMe9Ft?{){;MlEWS!MU>jGs*iM_52;v
z0w5UtsO!%*9~Z%H#-?YL(Q$u;cTTBC1k+PMFL(rfcduMmbZ)T}eDeOo$F}!h6vTJv
zjOqS`G62&aQyXnDNOqf^2vfaX0DBMOAZ*Ko_1stZ3~IoY^m~T^iXtq(dm`MwkN^t{
z3ox;7T*2TmNFMyn^&iZ-2i$7IK7hjC4OqN7uVg=bv~-gd+_PKB3?5-Y^5B0zy~C_;
ztdCi5@n?B;115`YlV83Gi6AruUcFpY4*2&&dU!|4cdN4p(1*bf4SAUlE&h)F>7!GY
zO$Q7<c-jZSUD=Y)n~nkcF!;%Ui}}#v@94jLd_t&y;YDy|B?pDI0zj9lHv0@}(0HxV
z^6OTSNpHgPrwxFu%x9lL4H~aiT7JD2hH1+GrD6J`UCrm=Z0`v3J^sD~gC0-Sd$DbP
zt-#Vyqz@x71JEwz)?w2hWIosXB#e0btKNfcv%h}UoCZPyAf5p?8w3wZ>(fKq4yo3U
z=)Pg1XD91R8x;5HArd@NbD^?gWAncmU?+8LglgfWFGIrn0L18NIVor@@<4>N_a;CJ
zKs^9zqyW?dphgNnJpgLjUVw(2;Tb`_5o`MlkOEK-fEp<P^#G{pwsRGx{;Dg2<tIW;
z2wF?qPXS>8oc3fzF;yYbiXzlqACO9=%Fg6xW@bwD0V0Q}%|cy^AO;@}hs%7iSWMv}
zI0@4N=mn3UFA|B^`fA(`gcd=b(rDA^G(K(Jc7Z?ug|NLy!b+-U0M-O(!55^_Xp{%Z
ze8E#EnJv`^fcn<>dGZ;n53pmvR%5C@;O(2&CEtbf=NeWYU?=A51GZ>%eSlq5eKm$t
zARdpi&)WKc*^8H$@6p2t!u0`0P@f11WdP1+UJFoM0JT90*9SB!4XF<>!Vwu@mX_NI
zwsL(yO#!rlIW<Tl<aq$~0H~1yP!E6_DFF2VsF4Ct4}h9~n5$@tmw!}}00000NkvXX
Hu0mjflL+d`

literal 0
HcmV?d00001

diff --git a/tff_modular/modules/streletz/icons/obj/suit.dmi b/tff_modular/modules/streletz/icons/obj/suit.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..03ab094c46939dcfd8fcae0d899c699f33808e1f
GIT binary patch
literal 2174
zcmV-^2!Z#BP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF0001edQ@0+L}hbh
za%pgMX>V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+
z(=$pSoZ^zil2jm5DLFB%Brz|(C^bcii!&v&s2C_{$i<mfl$e_eVWTTe$|+4HR&9Ak
zW(iKk$_lQ2E?`Fk0LW@KuXgNB-v9syyh%hsRCt{2T5oI=MHGJ(!r!!4+E{2ywHJX}
z6KRQw5>N_XE?{E86r~B#s*RF<Feb(j@Qd-2gcuWp+F(+(@}-S5mYR^}zCa-oG%>VQ
zsHGShj<&R<SFWT*8_2o8DQ~;Co!QyFUawc+muz-t=FQIh-n=*SW_O4l;SnBcq^Sx{
zpFXXu^y;piQB~Q<tw@@z?$)haJ$1~f{p!GWW&8h3{OhUxg>E~<FIbW3i)O7@;UpS0
zWTl;$3Ap{I7A=Y9XJ@DdhrPA$S^<ES{OZxA)5@=B+#$cekmzdftSG@s{z7!+wDJvU
zgY?{ne50_>b^DLGX&BlEdB49<q-Eq)^%4QR2jm4gl9P|OeXRoUlCtb#rOz=i`o2t`
znMNI4GgSiWr>}Ze+df8r)f4Gv8g+2#+ILg{lP``&L^^USB1nR)6;|?)0Z<3mOq9Un
zbJvxM^o?t`1xb*#!b%=80P5h<DZz0LK<D3EO%xi-ru8E}>Ky48`9cX4q43BEVNO6A
z#E}NpFUT{d!U(-oU??SID8zVA+i;h1#ZdvBe?IUU4Gj%ZZ`N94g6k3aLJ8Lfsc(3c
zFee}l;z$EShHS2JFDP8guZrHj@u#$XtqX+47E;0TyW;t)C-cOeM;QQVPNSS<7=>Bc
z?iot}@;Ny<lkckhSloG(0g&c2%2|f7c$tr!;A$0s5{T}K`@0L$O@&a#Qi&W1+1T{V
z0413BlGmpcqL5RiW$@g?m4Vw73Z^T|25n`%;b9}(avlXQC|g6+c12EXvMe_5zwwAv
zmZ4Pu2(TFoGQn&?^qIh(7`aQqMnT?67|)R<nMN<PleiKfz-El+wktkCw7R-FMy{@|
zPLQ_}#`EZK?1X8DQUM(9<}J&QAqDe?1q=pH+G<R?MsIj3N02wrd9Po@5eSntd`%$S
zg`tlQ=aMz<gZaY(+78xDtAnyo@00?Vd``HBa*Q|vVY0oBqXl4wZyo8Q?S>LCiXb$x
zd7KJ<l?Or-o9|GhIn$JF9q$wQet#idz1r){SOU!OeLZJrl(v|Jiq~Txa-{Ob8AEjO
zK557<H|hcip#HefC#|D(0d&6A=)73k48Y8tT!84FNP|2tku$+$=g-hs*5r}~GcQ{+
zq;vrW$nz5E1f>FgZa$I5ZU7>P0rDtc>jE9)u~x?M0p8~&AgT+trtz*%#Q#PNFqWOG
zb%C3q%Q1NzAK-nm_O;t#RsvhVTYK)%A_o`vp>e7Vz7K#r=ebn^x6eu#x^DqhyUVC+
zRP6%w$J@*_d>;ULRr{_dC2L6hLggZ<3;fnFVWzu`N%PaDTF=B)u!h6|V;+#XK(KRa
z0vx#9PQNr9(YEh74nTN&wjpAWJti*;Ij_6+Evi?=AiNEB_E7MHFQjFm-X2fwD-~cB
z{G_5rjQ(Uia90rh_WG18_6v5vRZ!1r1%Ou<0A8tlUyMG-10ec)@F%kz`vp7TDyV0*
z0$Ka6z6aO=@_CEX%!`$Q(D&`{-ViPlY+e@6t6c%)mm3ozU#tv-zKvggC|u<Dsmq$T
zOv1AQbn*SEk50zS1&M|(zJK#z>|CIOYXu;%5fPzF1a^(PmUROJHoCapirw4Rxsr>^
z1!Q2$*!KC$v+e>iux0%CS+yq@@VpABc6V$Y-@kKASWCYV4%;WdL_lQ)oWI9d9bheE
z!vkcW0A=u`0N&ilc6VmkEW&ALr`z?Z;7S1)Ni1oY@frP!EiUILa`Z8hSkf@#Gcdw3
zaK4+-2R!{5f)a4If8VoyHC7Q%#GfH30eAcNJ?mFv74bxUqJM-34GEv6y&}=S&%7dG
zalm}VL$3f=yFojWaXuhfm^bGGW(%HNz)Jq{m8+&*fZtyz<WhCS?TG7q0F!l7FV*4d
ze89$y8@0c7ZVujv`2>zSxKdpS+VcS*QC?my(tJJuWUa80=Rd`$gDcgQ;5Z4Q^G!`n
z)X~vFMNbz~_upM2pOv6G9{^dPs;Y`#6+M6c{G10}GH6!;kS{4I5zl{JyhK}G+&t}k
z00ZSfMMZ^~S6W(1EiEkx>u{psY8iwQ_<rQ;Z%l=#<W%WYgy%0pH8nL<TU+b8ti8QG
zzMdrsS_Oar%$T1+5JY`GA7y1_iTrRlOp!=LlvxSmxx2f2mb#u8XwL_97Zt_i!~9hi
zfHJEBm^>y=ujd1j1?~BOmJ`iXzH^sIgV3f;o9NuRb5ePf@sbBw)CK(h_|69;1KL2y
z?=Lio02qA`-LYc_?cKXqTzE#F)iO{A3Pk->hU@bIFykV_9ds_x*w`487w`FiWWn|M
z01j>j1_m5mAUAjF%Pj{^PUi#Wde^A5082-?^JYj4qOw(B-@bijeFQ)89E?adJjVf+
z@K#z@UtjN7f38Q|4p;vL4jecjMj!D2M}gLG7yAVUE8ytSqrx2y9Xcf1P+7oSD<rOO
zf*_9xkuO#TLf>F8NDU1QDQog}cvgTezTdxpKUG#%#@(T0!}T1%Q5}cHI>5B8D?+Lw
zVV}j>G7cX;Jg;29^D3a)-En>(5D?aaizmQTh9?C$?d(#0*QbIj1z;qx6c$-_hAP6G
zKOaUPaBTss1U%cn@8R3wd?U`7^Ulu8K<Gij|4pC$kc)fqcmMzZ07*qoM6N<$g8sq>
AEdT%j

literal 0
HcmV?d00001

diff --git a/tgstation.dme b/tgstation.dme
index c6f74322e8b..ea343b72702 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -8900,6 +8900,7 @@
 #include "tff_modular\modules\silicon_laws_tweaks\code\upload.dm"
 #include "tff_modular\modules\smites\femboyfication.dm"
 #include "tff_modular\modules\snowfall\snowfall.dm"
+#include "tff_modular\modules\streletz\code\clothing.dm"
 #include "tff_modular\modules\timed_citations\crime.dm"
 #include "tff_modular\modules\toys\code\loadout_datum_toys.dm"
 #include "tff_modular\modules\toys\code\plushes.dm"

From da3d1f0f69c5c43872684a7be4690a004b05d87c Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Wed, 18 Dec 2024 22:08:33 +0300
Subject: [PATCH 09/23] Automatic changelog for PR #5245 [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5245.yml | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 html/changelogs/AutoChangeLog-pr-5245.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5245.yml b/html/changelogs/AutoChangeLog-pr-5245.yml
new file mode 100644
index 00000000000..13e48b32b45
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5245.yml
@@ -0,0 +1,4 @@
+author: "FeenieRU"
+delete-after: True
+changes:
+  - rscadd: "Streletz suit in security vends."
\ No newline at end of file

From 5558fdf3121a655db48b01fdef57e910b058d69a Mon Sep 17 00:00:00 2001
From: "tgstation-ci[bot]"
 <179393467+tgstation-ci[bot]@users.noreply.github.com>
Date: Thu, 19 Dec 2024 01:26:47 +0000
Subject: [PATCH 10/23] Automatic changelog compile [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5245.yml | 4 ----
 html/changelogs/AutoChangeLog-pr-5249.yml | 4 ----
 html/changelogs/archive/2024-12.yml       | 7 +++++++
 3 files changed, 7 insertions(+), 8 deletions(-)
 delete mode 100644 html/changelogs/AutoChangeLog-pr-5245.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-5249.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5245.yml b/html/changelogs/AutoChangeLog-pr-5245.yml
deleted file mode 100644
index 13e48b32b45..00000000000
--- a/html/changelogs/AutoChangeLog-pr-5245.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "FeenieRU"
-delete-after: True
-changes:
-  - rscadd: "Streletz suit in security vends."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-5249.yml b/html/changelogs/AutoChangeLog-pr-5249.yml
deleted file mode 100644
index 9a16a38c5e7..00000000000
--- a/html/changelogs/AutoChangeLog-pr-5249.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "OrbisAnima"
-delete-after: True
-changes:
-  - qol: "Allows those with the Water Hater Quirk (Felinids, Tajarans, etc) to bathe or shower without getting stamina damage. They still get a negative Moodlet and dont heal as others do."
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-12.yml b/html/changelogs/archive/2024-12.yml
index 06f16b74c2f..3582022d51c 100644
--- a/html/changelogs/archive/2024-12.yml
+++ b/html/changelogs/archive/2024-12.yml
@@ -810,3 +810,10 @@
   klushy225:
   - rscadd: Added the Half Bob hairstyle
   - image: Added the hair_bob_half state to hair.dmi
+2024-12-19:
+  FeenieRU:
+  - rscadd: Streletz suit in security vends.
+  OrbisAnima:
+  - qol: Allows those with the Water Hater Quirk (Felinids, Tajarans, etc) to bathe
+      or shower without getting stamina damage. They still get a negative Moodlet
+      and dont heal as others do.

From eda651230b829a9fe22213b1adf47a3589ca2376 Mon Sep 17 00:00:00 2001
From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com>
Date: Thu, 19 Dec 2024 09:00:15 +0300
Subject: [PATCH 11/23] [MIRROR] Tinypaks, backpacks, but tiny [SLIGHTLY LESS
 MODULAR] (#5251)

* Tinypaks, backpacks, but tiny [SLIGHTLY LESS MODULAR] (#4651)

* Add files via upload

* Create tinypacks

* Update flavor_misc.dm

* Update tgstation.dme

* Rename tinypacks to tinypacks.dm

* Update clothing.dm

* Update _job.dm

* Update tinypacks.dm

* Update tinypacks.dm

* Update _job.dm

* Apply suggestions from code review

Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>

* Update modular_nova/modules/clothing_improvements/code/tinypacks.dm

Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>

* [MIRROR] Tinypaks, backpacks, but tiny [SLIGHTLY LESS MODULAR]

---------

Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>
Co-authored-by: StealsThePRs <StealsThe@Email.com>
---
 code/_globalvars/lists/flavor_misc.dm         |  10 ++++++
 code/modules/client/preferences/clothing.dm   |  14 ++++++++-
 code/modules/jobs/job_types/_job.dm           |   8 +++++
 .../clothing_improvements/code/clothing.dmi   | Bin 0 -> 590 bytes
 .../code/clothing_worn.dmi                    | Bin 0 -> 507 bytes
 .../clothing_improvements/code/tinypacks.dm   |  29 ++++++++++++++++++
 tgstation.dme                                 |   1 +
 7 files changed, 61 insertions(+), 1 deletion(-)
 create mode 100644 modular_nova/modules/clothing_improvements/code/clothing.dmi
 create mode 100644 modular_nova/modules/clothing_improvements/code/clothing_worn.dmi
 create mode 100644 modular_nova/modules/clothing_improvements/code/tinypacks.dm

diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm
index 00b26e7703d..bb799e0c0cb 100644
--- a/code/_globalvars/lists/flavor_misc.dm
+++ b/code/_globalvars/lists/flavor_misc.dm
@@ -106,6 +106,11 @@ GLOBAL_LIST_INIT(security_depts_prefs, sort_list(list(
 #define GSATCHEL "Grey Satchel"
 #define GMESSENGER "Grey Messenger Bag"
 #define LSATCHEL "Leather Satchel"
+/// NOVA EDIT ADDITION START - Adds tpacks, tiny backpacks
+#define TPACKB "Beltpack"
+#define TPACKA "Waistpack"
+#define TPACKC "Chest pack"
+// NOVA EDIT ADDITION END
 GLOBAL_LIST_INIT(backpacklist, list(
 	DBACKPACK,
 	DDUFFELBAG,
@@ -116,6 +121,11 @@ GLOBAL_LIST_INIT(backpacklist, list(
 	GSATCHEL,
 	GMESSENGER,
 	LSATCHEL,
+	// NOVA EDIT ADDITION START
+	TPACKB,
+	TPACKA,
+	TPACKC,
+	// NOVA EDIT ADDITION END
 ))
 
 	//Suit/Skirt
diff --git a/code/modules/client/preferences/clothing.dm b/code/modules/client/preferences/clothing.dm
index a595af615e8..8ac6951a390 100644
--- a/code/modules/client/preferences/clothing.dm
+++ b/code/modules/client/preferences/clothing.dm
@@ -31,8 +31,12 @@
 		DSATCHEL,
 		DDUFFELBAG,
 		DMESSENGER,
+		// NOVA EDIT ADDITION START
+		TPACKB,
+		TPACKA,
+		TPACKC,
+		// NOVA EDIT ADDITION END
 	)
-
 /datum/preference/choiced/backpack/create_default_value()
 	return DBACKPACK
 
@@ -48,6 +52,14 @@
 			return /obj/item/storage/backpack/duffelbag
 		if (GMESSENGER)
 			return /obj/item/storage/backpack/messenger
+		// NOVA EDIT ADDITION START
+		if (TPACKB)
+			return /obj/item/storage/backpack/tinypakb
+		if (TPACKA)
+			return /obj/item/storage/backpack/tinypaka
+		if (TPACKC)
+			return /obj/item/storage/backpack/tinypakc
+		// NOVA EDIT ADDITION END
 
 		// In a perfect world, these would be your department's backpack.
 		// However, this doesn't factor in assistants, or no high slot, and would
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index 8731a1397b1..c95102d9b0e 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -398,6 +398,14 @@
 				back = duffelbag //Department duffel bag
 			if(DMESSENGER)
 				back = messenger //Department messenger bag
+			// NOVA EDIT ADDITION START - Tinypaks
+			if(TPACKB)
+				back = /obj/item/storage/backpack/tinypakb
+			if(TPACKA)
+				back = /obj/item/storage/backpack/tinypaka
+			if(TPACKC)
+				back = /obj/item/storage/backpack/tinypakc
+			// NOVA EDIT ADDITION START
 			else
 				back = backpack //Department backpack
 
diff --git a/modular_nova/modules/clothing_improvements/code/clothing.dmi b/modular_nova/modules/clothing_improvements/code/clothing.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..b347b9cd0356d6f5dc3b97a9be1c0e7f10345304
GIT binary patch
literal 590
zcmV-U0<ryxP)<h;3K|Lk000e1NJLTq002M$002M)0{{R3SVwH_0000XP)t-s0000Z
zA}BgHK3-d35)v1Rik|E1>%zgw!otaki=9YGTT+WmZvX%Q0d!JMQvg8b*k%9#0Cjp)
zSad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1<SI)oD$dN$Q?OMq(KF!UEYD0S$pCVU
zjkq{7QZv&tN+6u#lEji!AXBL%Gq18BF*`|#i!&v&s2C_@$i<mfl$e_eVWTTdBvxTE
zE``bpu6{0Hw*mmU(=%-;6*Im700CM_L_t(YiS1P}Qp7L}bbNlm$+)45Wfcrv;yfVM
zso(|hl6wI!fH&|^9CALmxrquYU{IH6wY!#O+nApney`^tMK#}HP$;}HF`CkER*wJ)
zj2*V}Fy@?K-)))j!veU8cKkMAiaGm3+?F6hWRB-$qGe;K#|9`NAeIsufz9N4J9F+&
zKSaXgv4}K+gtI|34x1+%<mo5{S^?r@5&Hu+jYJ><oSP))>Z!WQw0?I(kQ#Pw070tN
z6Qi66R&!HRsNy6!3*%a{?!ay&^9h)liQEa07xTM}XN9U^7?Dg<_%P0wy>lYxf@QIt
znC<Ys@4oV1MVAH-O1@4j=+pWizdQ=)1K>hN^+xMBkLrv#f2UIvdete)J*SI<as}`a
zpU0p9@HUOGP2m9F>iO3I9vKye+DW8B+xbcXj1OujpwNrf30JR1uf8x&ibTcbvZF@3
cH2!+L1Bak9Hz3H=^#A|>07*qoM6N<$g6Ks3^Z)<=

literal 0
HcmV?d00001

diff --git a/modular_nova/modules/clothing_improvements/code/clothing_worn.dmi b/modular_nova/modules/clothing_improvements/code/clothing_worn.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..b39cc1e40dcb1d094e1134ae408650857405397a
GIT binary patch
literal 507
zcmV<X0R;YuP)<h;3K|Lk000e1NJLTq004jh003YF0{{R3Csb#80000LP)t-s0000Z
zA}A6P7dkgSURz+o!pVt?omISbdH?_b0d!JMQvg8b*k%9#0Cjp)Sad{Xb7OL8aCB*J
zZU6vyoKseCa&`CgQ*iP1<SI)oD$dN$Q?OMq(KF!UEYD0S$pCVUjkq{7QZv&tN+6u#
zlEji!AXBL%Gq18BF*`|#i!&v&s2HS=i!-e#F*g;&HpEbvNUXwSTnd#HT>V_YZUq3m
z95Z%fC8ZJo009$8L_t(oh3%J7YQr!LhGli_bCUT0cH9GGVS8_B4^Vc3vHKsQNg1_d
zD;cHiVeo$th-Cl2WxvQK0sw$N#Ra0MG8^Bh3CBSTeB)aY`>ySzVj4@zup4j5EJ!i!
zg&@WAF$J;SB+)fac5;Q(6AJ+`k0Xn4Bm*V*`7(WwkqV>;00000Ca$xxt(CO#Z^3YV
zS9g-8o{@>Yk>r?Nd7;DKE3hsQEGpoJS1WL)y}T6dPiuMr001SM=j7bWx9qSuZ;|vF
zeyhgi-?~ZghkS<;9g6W;vAxUOMf=Usw{A`^g~43XE*pGNxlMjm1=Oc7$o@6=xnh^D
xY_G14wLx(V^{K2j(~5FEJM|!sl>oqh=L)tW4ope;AeI0C002ovPDHLkV1l_E)M@|#

literal 0
HcmV?d00001

diff --git a/modular_nova/modules/clothing_improvements/code/tinypacks.dm b/modular_nova/modules/clothing_improvements/code/tinypacks.dm
new file mode 100644
index 00000000000..0cf29707ba5
--- /dev/null
+++ b/modular_nova/modules/clothing_improvements/code/tinypacks.dm
@@ -0,0 +1,29 @@
+/obj/item/storage/backpack/tinypakb
+	name = "storage belt"
+	desc = "A small belt coated from front to back in pouches."
+	icon_state = "tinypakb"
+	inhand_icon_state = "messenger"
+	icon = 'modular_nova/modules/clothing_improvements/code/clothing.dmi'
+	worn_icon = 'modular_nova/modules/clothing_improvements/code/clothing_worn.dmi'
+	lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi'
+	righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi'
+
+/obj/item/storage/backpack/tinypaka
+	name = "waistpack"
+	desc = "A small, waist-mounted pack for... well, storing stuff!"
+	icon_state = "tinypaka"
+	inhand_icon_state = "messenger"
+	icon = 'modular_nova/modules/clothing_improvements/code/clothing.dmi'
+	worn_icon = 'modular_nova/modules/clothing_improvements/code/clothing_worn.dmi'
+	lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi'
+	righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi'
+
+/obj/item/storage/backpack/tinypakc
+	name = "chest pouch"
+	desc = "Like a fannypack, but for your chest! ...Seems to hold alot more, though."
+	icon_state = "tinypakc"
+	inhand_icon_state = "messenger"
+	icon = 'modular_nova/modules/clothing_improvements/code/clothing.dmi'
+	worn_icon = 'modular_nova/modules/clothing_improvements/code/clothing_worn.dmi'
+	lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi'
+	righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi'
diff --git a/tgstation.dme b/tgstation.dme
index ea343b72702..3a7331b8b9b 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -7347,6 +7347,7 @@
 #include "modular_nova\modules\clothing_improvements\code\chaplain.dm"
 #include "modular_nova\modules\clothing_improvements\code\functional_toggle.dm"
 #include "modular_nova\modules\clothing_improvements\code\holsters.dm"
+#include "modular_nova\modules\clothing_improvements\code\tinypacks.dm"
 #include "modular_nova\modules\colony_fabricator\code\cargo_packs.dm"
 #include "modular_nova\modules\colony_fabricator\code\colony_fabricator.dm"
 #include "modular_nova\modules\colony_fabricator\code\looping_sounds.dm"

From cfa48fe9ac1b67c7b0591a7e659fa4ec19647d82 Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Thu, 19 Dec 2024 09:00:41 +0300
Subject: [PATCH 12/23] Automatic changelog for PR #5251 [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5251.yml | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 html/changelogs/AutoChangeLog-pr-5251.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5251.yml b/html/changelogs/AutoChangeLog-pr-5251.yml
new file mode 100644
index 00000000000..33784ebb4cd
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5251.yml
@@ -0,0 +1,4 @@
+author: "RatFromTheJungle"
+delete-after: True
+changes:
+  - rscadd: "Adds tinypaks, smaller backpacks to the loadout that are less 'visually disruptive.'"
\ No newline at end of file

From ea60e1c838ffca7f681a5b077c5e22deb92a7895 Mon Sep 17 00:00:00 2001
From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com>
Date: Thu, 19 Dec 2024 09:01:04 +0300
Subject: [PATCH 13/23] [MIRROR] civil defense symptom kitis now available for
 purchase (#5250)

* civil defense symptom kitis now available for purchase (#4692)

ok...

* [MIRROR] civil defense symptom kitis now available for purchase

---------

Co-authored-by: Kocma-san <112967882+Kocma-san@users.noreply.github.com>
Co-authored-by: StealsThePRs <StealsThe@Email.com>
---
 .../company_imports/code/armament_datums/deforest_medical.dm    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm b/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm
index 9373b32c2bb..e165fd476cd 100644
--- a/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm
+++ b/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm
@@ -7,7 +7,7 @@
 /datum/armament_entry/company_import/deforest/first_aid_kit
 	subcategory = "First-Aid Kits"
 
-/datum/armament_entry/deforest/first_aid_kit/civil_defense/comfort
+/datum/armament_entry/company_import/deforest/first_aid_kit/comfort
 	item_type = /obj/item/storage/medkit/civil_defense/comfort/stocked
 	cost = PAYCHECK_COMMAND * 2
 

From d4b5bca9628b09e9963332f9050fb3f9e15557c4 Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Thu, 19 Dec 2024 09:01:37 +0300
Subject: [PATCH 14/23] Automatic changelog for PR #5250 [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5250.yml | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 html/changelogs/AutoChangeLog-pr-5250.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5250.yml b/html/changelogs/AutoChangeLog-pr-5250.yml
new file mode 100644
index 00000000000..e29090f29a5
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5250.yml
@@ -0,0 +1,4 @@
+author: "Kocma-san"
+delete-after: True
+changes:
+  - bugfix: "civil defense symptom kitis now available for purchase"
\ No newline at end of file

From d7a41162d426ad935525e2fbe0cb959f998c762c Mon Sep 17 00:00:00 2001
From: "tgstation-ci[bot]"
 <179393467+tgstation-ci[bot]@users.noreply.github.com>
Date: Thu, 19 Dec 2024 12:37:40 +0000
Subject: [PATCH 15/23] Automatic changelog compile [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5250.yml | 4 ----
 html/changelogs/AutoChangeLog-pr-5251.yml | 4 ----
 html/changelogs/archive/2024-12.yml       | 5 +++++
 3 files changed, 5 insertions(+), 8 deletions(-)
 delete mode 100644 html/changelogs/AutoChangeLog-pr-5250.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-5251.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5250.yml b/html/changelogs/AutoChangeLog-pr-5250.yml
deleted file mode 100644
index e29090f29a5..00000000000
--- a/html/changelogs/AutoChangeLog-pr-5250.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Kocma-san"
-delete-after: True
-changes:
-  - bugfix: "civil defense symptom kitis now available for purchase"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-5251.yml b/html/changelogs/AutoChangeLog-pr-5251.yml
deleted file mode 100644
index 33784ebb4cd..00000000000
--- a/html/changelogs/AutoChangeLog-pr-5251.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "RatFromTheJungle"
-delete-after: True
-changes:
-  - rscadd: "Adds tinypaks, smaller backpacks to the loadout that are less 'visually disruptive.'"
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-12.yml b/html/changelogs/archive/2024-12.yml
index 3582022d51c..d3a8ea2f477 100644
--- a/html/changelogs/archive/2024-12.yml
+++ b/html/changelogs/archive/2024-12.yml
@@ -813,7 +813,12 @@
 2024-12-19:
   FeenieRU:
   - rscadd: Streletz suit in security vends.
+  Kocma-san:
+  - bugfix: civil defense symptom kitis now available for purchase
   OrbisAnima:
   - qol: Allows those with the Water Hater Quirk (Felinids, Tajarans, etc) to bathe
       or shower without getting stamina damage. They still get a negative Moodlet
       and dont heal as others do.
+  RatFromTheJungle:
+  - rscadd: Adds tinypaks, smaller backpacks to the loadout that are less 'visually
+      disruptive.'

From d80d064e7bb7eb8f542d43616f51274f1f9e54e6 Mon Sep 17 00:00:00 2001
From: Oxotnak <107066254+Oxotnak@users.noreply.github.com>
Date: Thu, 19 Dec 2024 18:46:23 +0300
Subject: [PATCH 16/23] GAS carry build late game (#4957)

* agro-grab

* noslip + tackle resist

* movespeed raise

* eyes slot + offset

* agrograb's qol spans

* faster scythes + remove comment

* no glasses actually + exceptions

* exceptions + icon name fix

* [Drish] fix huds nabber

* scythes_stop_standing

* aaa

* aaa2

* lategaming

* aaa2.1

* aaa1.1

* stash valid

* tabulation missed

* Update tff_modular/modules/nabbers/code/_nabbers.dm

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>

* Update tff_modular/modules/nabbers/code/_nabbers.dm

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>

* Update tff_modular/modules/nabbers/code/_nabbers.dm

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>

* Update tff_modular/modules/nabbers/code/_nabbers.dm

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>

* Update tff_modular/modules/nabbers/code/_nabbers.dm

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>

* Update tff_modular/modules/nabbers/code/_nabbers.dm

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>

* Update tff_modular/modules/nabbers/code/nabber_bolaimmunity.dm

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>

* Update tff_modular/modules/nabbers/code/nabber_language.dm

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>

* Update tff_modular/modules/nabbers/code/nabber_language.dm

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>

* eyes fix

* qol, fix, blacklist update

* language fix

---------

Co-authored-by: SuperDrish <59139863+Microvolnovka19@users.noreply.github.com>
---
 code/modules/clothing/glasses/hud.dm          |  14 ++
 code/modules/mob/living/living_say.dm         |  12 ++
 .../research/techweb/nodes/cyborg_nodes.dm    |   1 +
 .../modules/huds/code/glasses/HUD_Glasses.dm  |   4 +
 .../meson_scouter/code/meson_scouter.dm       |  10 +-
 tff_modular/modules/nabbers/code/_nabbers.dm  | 178 +++++++++++++++++-
 .../modules/nabbers/code/abilites/agrograb.dm |  25 +++
 .../code/abilites/nabber_combat_effect.dm     |   2 +-
 .../code/abilites/nabber_welding_eyes.dm      |   2 +-
 .../nabbers/code/abilites/toggle_arms.dm      |  55 ++++--
 .../modules/nabbers/code/nabber_bodyparts.dm  |   6 +
 .../nabbers/code/nabber_bolaimmunity.dm       |  57 ++++++
 .../modules/nabbers/code/nabber_huds.dm       |  90 +++++++++
 .../modules/nabbers/code/nabber_language.dm   | 122 ++++++++++++
 .../modules/nabbers/code/nabber_organs.dm     |  21 ++-
 tgstation.dme                                 |   4 +
 16 files changed, 571 insertions(+), 32 deletions(-)
 create mode 100644 tff_modular/modules/nabbers/code/abilites/agrograb.dm
 create mode 100644 tff_modular/modules/nabbers/code/nabber_bolaimmunity.dm
 create mode 100644 tff_modular/modules/nabbers/code/nabber_huds.dm
 create mode 100644 tff_modular/modules/nabbers/code/nabber_language.dm

diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index 332aba8a719..97ed81c630e 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -38,6 +38,7 @@
 	icon_state = "healthhud"
 	clothing_traits = list(TRAIT_MEDICAL_HUD)
 	glass_colour_type = /datum/client_colour/glass_colour/lightblue
+	species_exception = list(/datum/species/nabber) // FF ADDITION
 
 /obj/item/clothing/glasses/hud/medsechud
 	name = "health scanner security HUD"
@@ -57,6 +58,7 @@
 	glass_colour_type = /datum/client_colour/glass_colour/lightgreen
 	actions_types = list(/datum/action/item_action/toggle_nv)
 	forced_glass_color = TRUE
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/health/night/update_icon_state()
 	. = ..()
@@ -82,6 +84,7 @@
 	flags_cover = GLASSESCOVERSEYES
 	tint = 1
 	glass_colour_type = /datum/client_colour/glass_colour/blue
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/health/sunglasses/Initialize(mapload)
 	. = ..()
@@ -98,6 +101,7 @@
 	icon_state = "diagnostichud"
 	clothing_traits = list(TRAIT_DIAGNOSTIC_HUD)
 	glass_colour_type = /datum/client_colour/glass_colour/lightorange
+	species_exception = list(/datum/species/nabber) // FF ADDITION
 
 /obj/item/clothing/glasses/hud/diagnostic/night
 	name = "night vision diagnostic HUD"
@@ -111,6 +115,7 @@
 	glass_colour_type = /datum/client_colour/glass_colour/lightyellow
 	actions_types = list(/datum/action/item_action/toggle_nv)
 	forced_glass_color = TRUE
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/diagnostic/night/update_icon_state()
 	. = ..()
@@ -124,6 +129,7 @@
 	flash_protect = FLASH_PROTECTION_FLASH
 	flags_cover = GLASSESCOVERSEYES
 	tint = 1
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/diagnostic/sunglasses/Initialize(mapload)
 	. = ..()
@@ -140,12 +146,14 @@
 	icon_state = "securityhud"
 	clothing_traits = list(TRAIT_SECURITY_HUD)
 	glass_colour_type = /datum/client_colour/glass_colour/red
+	species_exception = list(/datum/species/nabber) // FF ADDITION
 
 /obj/item/clothing/glasses/hud/security/chameleon
 	name = "chameleon security HUD"
 	desc = "A stolen security HUD integrated with Syndicate chameleon technology. Provides flash protection."
 	flash_protect = FLASH_PROTECTION_FLASH
 	actions_types = list(/datum/action/item_action/chameleon/change/glasses/no_preset)
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch
 	name = "eyepatch HUD"
@@ -153,6 +161,7 @@
 	icon_state = "hudpatch"
 	base_icon_state = "hudpatch"
 	actions_types = list(/datum/action/item_action/flip)
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch/attack_self(mob/user, modifiers)
 	. = ..()
@@ -167,6 +176,7 @@
 	flags_cover = GLASSESCOVERSEYES
 	tint = 1
 	glass_colour_type = /datum/client_colour/glass_colour/darkred
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/security/sunglasses/Initialize(mapload)
 	. = ..()
@@ -188,6 +198,7 @@
 	glass_colour_type = /datum/client_colour/glass_colour/lightred
 	actions_types = list(/datum/action/item_action/toggle_nv)
 	forced_glass_color = TRUE
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/security/night/update_icon_state()
 	. = ..()
@@ -206,6 +217,7 @@
 	attack_verb_simple = list("slice")
 	hitsound = 'sound/items/weapons/bladeslice.ogg'
 	sharpness = SHARP_EDGED
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/security/sunglasses/gars/giga
 	name = "giga HUD gar glasses"
@@ -213,6 +225,7 @@
 	icon_state = "gigagar_sec"
 	force = 12
 	throwforce = 12
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/toggle
 	name = "Toggle HUD"
@@ -251,6 +264,7 @@
 	color_cutoffs = list(25, 8, 5)
 	glass_colour_type = /datum/client_colour/glass_colour/red
 	clothing_traits = list(TRAIT_SECURITY_HUD)
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/toggle/thermal/attack_self(mob/user)
 	..()
diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm
index c935989a580..e72899d482d 100644
--- a/code/modules/mob/living/living_say.dm
+++ b/code/modules/mob/living/living_say.dm
@@ -278,6 +278,18 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list(
 	if((SEND_SIGNAL(src, COMSIG_MOVABLE_PRE_HEAR, args) & COMSIG_MOVABLE_CANCEL_HEARING) || !GET_CLIENT(src))
 		return FALSE
 
+// FLUFFY EDIT START Converts scrambled nabber's msg into emote for people
+	if(ispath(message_language, /datum/language/nabber) && speaker != src)
+		var/gbs_translation_check = translate_language(speaker, message_language, raw_message, spans, message_mods)
+		if(raw_message != gbs_translation_check)
+			message_mods[MODE_CUSTOM_SAY_EMOTE] = gbs_translation_check
+			message_mods[MODE_CUSTOM_SAY_ERASE_INPUT] = TRUE
+
+	if(ispath(message_language, /datum/language/nabber) && isnabber(src))
+		message_mods[MODE_CUSTOM_SAY_EMOTE] = null
+		message_mods[MODE_CUSTOM_SAY_ERASE_INPUT] = FALSE
+	// FLUFFY EDIT END
+
 	var/deaf_message
 	var/deaf_type
 
diff --git a/code/modules/research/techweb/nodes/cyborg_nodes.dm b/code/modules/research/techweb/nodes/cyborg_nodes.dm
index fad15b6f019..bc5b7efc0be 100644
--- a/code/modules/research/techweb/nodes/cyborg_nodes.dm
+++ b/code/modules/research/techweb/nodes/cyborg_nodes.dm
@@ -149,6 +149,7 @@
 		"implanter",
 		"locator",
 		"c38_trac",
+		"implant_gasspeech",
 	)
 	research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
 	announce_channels = list(RADIO_CHANNEL_SECURITY, RADIO_CHANNEL_MEDICAL)
diff --git a/modular_nova/modules/huds/code/glasses/HUD_Glasses.dm b/modular_nova/modules/huds/code/glasses/HUD_Glasses.dm
index 13d25055eb8..3945298af98 100644
--- a/modular_nova/modules/huds/code/glasses/HUD_Glasses.dm
+++ b/modular_nova/modules/huds/code/glasses/HUD_Glasses.dm
@@ -4,6 +4,7 @@
 	icon = 'modular_nova/modules/huds/icons/huds.dmi'
 	icon_state = "glasses_healthhud"
 	worn_icon = 'modular_nova/modules/huds/icons/hudeyes.dmi'
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/health/prescription/Initialize(mapload)
 	clothing_traits += list(TRAIT_NEARSIGHTED_CORRECTED)
@@ -15,6 +16,7 @@
 	icon = 'modular_nova/modules/huds/icons/huds.dmi'
 	icon_state = "glasses_diagnostichud"
 	worn_icon = 'modular_nova/modules/huds/icons/hudeyes.dmi'
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/diagnostic/prescription/Initialize(mapload)
 	clothing_traits += list(TRAIT_NEARSIGHTED_CORRECTED)
@@ -26,6 +28,7 @@
 	icon = 'modular_nova/modules/huds/icons/huds.dmi'
 	icon_state = "glasses_securityhud"
 	worn_icon = 'modular_nova/modules/huds/icons/hudeyes.dmi'
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/hud/security/prescription/Initialize(mapload)
 	clothing_traits += list(TRAIT_NEARSIGHTED_CORRECTED)
@@ -51,6 +54,7 @@
 /obj/item/clothing/glasses/meson/prescription
 	name = "prescription optical meson scanner"
 	desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting conditions. This one has prescription lens fitted in."
+	species_exception = list() // FF ADDITION
 
 /obj/item/clothing/glasses/meson/prescription/Initialize(mapload)
 	clothing_traits += list(TRAIT_NEARSIGHTED_CORRECTED)
diff --git a/modular_nova/modules/meson_scouter/code/meson_scouter.dm b/modular_nova/modules/meson_scouter/code/meson_scouter.dm
index 08931499aa3..3c6fd5792eb 100644
--- a/modular_nova/modules/meson_scouter/code/meson_scouter.dm
+++ b/modular_nova/modules/meson_scouter/code/meson_scouter.dm
@@ -1,4 +1,5 @@
 /obj/item/clothing/glasses/meson
+	species_exception = list(/datum/species/nabber) // FF ADDITION
 	uses_advanced_reskins = TRUE
 	unique_reskin = list(
 		"Meson Glasses" = list(
@@ -11,12 +12,12 @@
 			RESKIN_ICON = 'modular_nova/modules/meson_scouter/icons/meson_scouter.dmi',
 			RESKIN_ICON_STATE = "meson_scouter",
 			RESKIN_WORN_ICON = 'modular_nova/modules/meson_scouter/icons/meson-scouter_mob.dmi',
-			RESKIN_WORN_ICON_STATE = "meson_scouter"
 		),
 	)
 
 /obj/item/clothing/glasses/meson/night/Initialize(mapload)
 	. = ..()
+	species_exception = list() // FF ADDITION
 	unique_reskin -= list(
 		"Meson Glasses" = list(
 			RESKIN_ICON = 'icons/obj/clothing/glasses.dmi',
@@ -34,6 +35,7 @@
 
 /obj/item/clothing/glasses/meson/gar/Initialize(mapload)
 	. = ..()
+	species_exception = list() // FF ADDITION
 	unique_reskin -= list(
 		"Meson Glasses" = list(
 			RESKIN_ICON = 'icons/obj/clothing/glasses.dmi',
@@ -51,6 +53,7 @@
 
 /obj/item/clothing/glasses/meson/prescription/Initialize(mapload)
 	. = ..()
+	species_exception = list() // FF ADDITION
 	unique_reskin -= list(
 		"Meson Glasses" = list(
 			RESKIN_ICON = 'icons/obj/clothing/glasses.dmi',
@@ -67,6 +70,7 @@
 	)
 
 /obj/item/clothing/glasses/meson/engine
+	species_exception = list(/datum/species/nabber) // FF ADDITION
 	uses_advanced_reskins = TRUE
 	unique_reskin = list(
 		"Engine Glasses" = list(
@@ -83,6 +87,7 @@
 
 /obj/item/clothing/glasses/meson/engine/tray/Initialize(mapload)
 	. = ..()
+	species_exception = list() // FF ADDITION
 	unique_reskin -= list(
 		"Engine Glasses" = list(
 			RESKIN_ICON = 'icons/obj/clothing/glasses.dmi',
@@ -98,6 +103,7 @@
 
 /obj/item/clothing/glasses/meson/engine/shuttle/Initialize(mapload)
 	. = ..()
+	species_exception = list() // FF ADDITION
 	unique_reskin -= list(
 		"Engine Glasses" = list(
 			RESKIN_ICON = 'icons/obj/clothing/glasses.dmi',
@@ -113,6 +119,7 @@
 
 /obj/item/clothing/glasses/meson/engine/atmos_imaging/Initialize(mapload)
 	. = ..()
+	species_exception = list() // FF ADDITION
 	unique_reskin -= list(
 		"Engine Glasses" = list(
 			RESKIN_ICON = 'icons/obj/clothing/glasses.dmi',
@@ -128,6 +135,7 @@
 
 /obj/item/clothing/glasses/meson/engine/prescription/Initialize(mapload)
 	. = ..()
+	species_exception = list() // FF ADDITION
 	unique_reskin -= list(
 		"Engine Glasses" = list(
 			RESKIN_ICON = 'icons/obj/clothing/glasses.dmi',
diff --git a/tff_modular/modules/nabbers/code/_nabbers.dm b/tff_modular/modules/nabbers/code/_nabbers.dm
index cd906b2be98..a41e631eaac 100644
--- a/tff_modular/modules/nabbers/code/_nabbers.dm
+++ b/tff_modular/modules/nabbers/code/_nabbers.dm
@@ -16,21 +16,25 @@
 		TRAIT_MUTANT_COLORS,
 		TRAIT_NO_UNDERWEAR,
 		TRAIT_HARD_SOLES,
-		TRAIT_NO_BLOOD_OVERLAY
+		TRAIT_NO_BLOOD_OVERLAY,
+		TRAIT_NO_SLIP_WATER,
+		TRAIT_BRAWLING_KNOCKDOWN_BLOCKED,
+		TRAIT_PERSONALSPACE, // Нет жопы :с
 	)
 	body_size_restricted = TRUE
 	digitigrade_customization = DIGITIGRADE_NEVER
-	no_equip_flags = ITEM_SLOT_FEET | ITEM_SLOT_OCLOTHING | ITEM_SLOT_SUITSTORE | ITEM_SLOT_EYES
+	no_equip_flags = ITEM_SLOT_FEET | ITEM_SLOT_OCLOTHING | ITEM_SLOT_SUITSTORE | ITEM_SLOT_EYES | ITEM_SLOT_LEGCUFFED
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
 	mutanttongue = /obj/item/organ/internal/tongue/nabber
-	always_customizable = FALSE
+	always_customizable = TRUE
 	hair_alpha = 0
 	facial_hair_alpha = 0
 	payday_modifier = 0.75
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
+	species_cookie = /obj/item/food/grown/cabbage
 	bodytemp_heat_damage_limit = (BODYTEMP_HEAT_DAMAGE_LIMIT - 10)
 	mutantbrain = /obj/item/organ/internal/brain/nabber
-	mutanteyes = /obj/item/organ/internal/eyes/robotic/nabber
+	mutanteyes = /obj/item/organ/internal/eyes/nabber
 	mutantlungs = /obj/item/organ/internal/lungs/nabber
 	mutantheart = /obj/item/organ/internal/heart/nabber
 	mutantliver = /obj/item/organ/internal/liver/nabber
@@ -56,6 +60,11 @@
 	var/datum/action/cooldown/toggle_arms/arms
 	var/datum/action/cooldown/optical_camouflage/camouflage
 	var/datum/action/cooldown/nabber_threat/threat_mod
+	placeholder_description = "Giant armoured serpentids (GAS), also known as Nabbers, or snake-bugs, are a massive predatory species who are trained by a company to work with humans. Physically, although they look intimidating, they're unlikely to harm a human except in times of great stress. If you see them getting their large attack arms ready, it's telling you to back off."
+	placeholder_lore = "https://fluffy-frontier.ru/osobye-rasy"
+
+	species_language_holder = /datum/language_holder/nabber
+	language_prefs_whitelist = list(/datum/language/nabber)
 
 /datum/species/nabber/on_species_gain(mob/living/carbon/human/C, datum/species/old_species, pref_load)
 	. = ..()
@@ -66,9 +75,16 @@
 	threat_mod = new(C)
 	threat_mod.Grant(C)
 
-	// Предохраняемся от получения проклятого квирка. Ломающего ГБС
-	if(C.has_quirk(/datum/quirk/oversized))
-		C.remove_quirk(/datum/quirk/oversized)
+	var/is_dummy = istype(C, /mob/living/carbon/human/dummy)
+
+	if(!is_dummy)
+		C.uncuff()
+		if(!C.legcuffed)
+			var/obj/item/restraints/legcuffs/gas_placeholder/anti_cuffs = new()
+			C.equip_to_slot(anti_cuffs, ITEM_SLOT_LEGCUFFED, initial = TRUE)
+
+		var/obj/item/implant/gas_sol_speaker/imp_in = new()
+		imp_in.implant(C)
 
 /datum/species/nabber/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
 	. = ..()
@@ -77,6 +93,10 @@
 	threat_mod.Destroy()
 
 /datum/species/nabber/spec_life(mob/living/carbon/human/H, seconds_per_tick, times_fired)
+	// Вызываем это перед проверкой на смерть, чтобы даже у мёртвых ГБСов была заглушка
+	if(H.num_legs >= 2 && !H.legcuffed && !QDELETED(H))
+		var/obj/item/restraints/legcuffs/gas_placeholder/anti_cuffs = new()
+		H.equip_to_slot(anti_cuffs, ITEM_SLOT_LEGCUFFED, initial = TRUE)
 	. = ..()
 	if(isdead(H))
 		return
@@ -125,7 +145,7 @@
 	))
 
 	perk_descriptions += list(list(
-		SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK,
+		SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK,
 		SPECIES_PERK_ICON = "dna",
 		SPECIES_PERK_NAME = "Robust chitin",
 		SPECIES_PERK_DESC = "GAS possess durable chitinous exoskeletons and can withstand a lot of brute damage."
@@ -169,3 +189,145 @@
 
 /mob/living/carbon/human/species/nabber
 	race = /datum/species/nabber
+
+/mob/living/carbon/human/Destroy()
+	if(isnabber(src) && !QDELETED(legcuffed))
+		QDEL_NULL(legcuffed)
+	. = ..()
+
+// Отображение для других наличия повреждений у голосового импланта
+/mob/living/carbon/human/examine(mob/user)
+	. = ..()
+
+	if(isnabber(src))
+		var/is_really_borked = FALSE
+		for(var/obj/item/implant/gas_sol_speaker/imp in implants)
+			var/is_borked = imp.emp_damage
+			if (is_borked > 0)
+				is_really_borked = TRUE
+		if(is_really_borked)
+			. += span_notice("[user.p_Their()] speech synthesizer emits constant silent white noise.") + "\n"
+
+// Не заковывается при наличии кос
+/mob/living/carbon/human/canBeHandcuffed()
+	if(isnabber(src))
+		var/obj/item/held = get_active_held_item()
+		var/obj/item/inactive = get_inactive_held_item()
+		if(istype((inactive || held), /obj/item/melee/nabber_blade))
+			return FALSE
+	. = ..()
+
+// В режиме кос агро грабы не будут замедлять
+/mob/living/carbon/human/add_movespeed_modifier(datum/movespeed_modifier/type_or_datum, update = TRUE)
+	if(isnabber(src) && type_or_datum == /datum/movespeed_modifier/grab_slowdown/aggressive)
+		var/datum/species/nabber/our_nabber = src.dna.species
+		var/datum/action/cooldown/toggle_arms/arms = our_nabber.arms
+		if(arms.button_icon_state == "arms_on")
+			return FALSE
+	return ..()
+
+// ЧС квирков
+/mob/living/carbon/human/add_quirk(datum/quirk/quirktype, client/override_client)
+	var/bad_nabber_quirks = list(
+		// негативные
+		/datum/quirk/oversized,
+		/datum/quirk/prosthetic_limb,
+		/datum/quirk/quadruple_amputee,
+		/datum/quirk/item_quirk/addict/junkie,
+		/datum/quirk/item_quirk/addict/smoker,
+		/datum/quirk/item_quirk/addict/alcoholic,
+		/datum/quirk/all_nighter,
+		/datum/quirk/item_quirk/allergic, // До введения системы дыхания
+		/datum/quirk/badback,
+		/datum/quirk/bighands,
+		/datum/quirk/item_quirk/blindness,
+		/datum/quirk/blooddeficiency,
+		/datum/quirk/body_purist,
+		/datum/quirk/item_quirk/brainproblems,
+		/datum/quirk/item_quirk/chronic_illness,
+		/datum/quirk/clumsy,
+		/datum/quirk/item_quirk/deafness,
+		/datum/quirk/item_quirk/family_heirloom,
+		/datum/quirk/item_quirk/food_allergic,
+		/datum/quirk/frail,
+		/datum/quirk/glass_jaw,
+		/datum/quirk/hemiplegic,
+		/datum/quirk/indebted,
+		/datum/quirk/insanity,
+		/datum/quirk/light_drinker,
+		/datum/quirk/mute,
+		/datum/quirk/item_quirk/nearsighted,
+		/datum/quirk/nonviolent,
+		/datum/quirk/numb,
+		/datum/quirk/nyctophobia,
+		/datum/quirk/paraplegic,
+		/datum/quirk/photophobia,
+		/datum/quirk/prosopagnosia,
+		/datum/quirk/pushover,
+		/datum/quirk/social_anxiety,
+		/datum/quirk/softspoken,
+		/datum/quirk/tin_man,
+		/datum/quirk/touchy,
+		/datum/quirk/narcolepsy,
+		/datum/quirk/fragile,
+		/datum/quirk/alexithymia,
+		// Нейтральные
+		/datum/quirk/item_quirk/bald,
+		/datum/quirk/item_quirk/borg_ready,
+		/datum/quirk/deviant_tastes,
+		/datum/quirk/foreigner,
+		/datum/quirk/gamer,
+		/datum/quirk/no_taste,
+		/datum/quirk/item_quirk/photographer,
+		/datum/quirk/pineapple_hater,
+		/datum/quirk/pineapple_liker,
+		/datum/quirk/snob,
+		/datum/quirk/transhumanist,
+		/datum/quirk/vegetarian,
+		/datum/quirk/canine_aspect,
+		/datum/quirk/feline_aspect,
+		/datum/quirk/avian_aspect,
+		/datum/quirk/water_aspect,
+		/datum/quirk/webbing_aspect,
+		/datum/quirk/floral_aspect,
+		/datum/quirk/ash_aspect,
+		/datum/quirk/sparkle_aspect,
+		/datum/quirk/excitable,
+		/datum/quirk/personalspace, // Встроен
+		/datum/quirk/item_quirk/joker,
+		/datum/quirk/overweight,
+		/datum/quirk/echolocation,
+		/datum/quirk/equipping/entombed,
+		/datum/quirk/hydra,
+		/datum/quirk/possessive,
+		/datum/quirk/kleptomaniac,
+		/datum/quirk/masochism,
+		/datum/quirk/sadism,
+		/datum/quirk/ropebunny,
+		/datum/quirk/rigger,
+		/datum/quirk/telepathic,
+		/datum/quirk/burr,
+		/datum/quirk/item_quirk/underworld_connections,
+		/datum/quirk/unsteady,
+		// Позитивные
+		/datum/quirk/alcohol_tolerance,
+		/datum/quirk/bilingual,
+		/datum/quirk/drunkhealing,
+		/datum/quirk/light_step, // Встроен
+		/datum/quirk/item_quirk/musician,
+		/datum/quirk/item_quirk/settler,
+		/datum/quirk/item_quirk/signer,
+		/datum/quirk/item_quirk/pet_owner,
+		/datum/quirk/skittish,
+		/datum/quirk/spacer_born,
+		/datum/quirk/item_quirk/spiritual,
+		/datum/quirk/hard_soles, // Встроен
+		/datum/quirk/linguist,
+		/datum/quirk/sharpclaws,
+		/datum/quirk/water_breathing,
+		/datum/quirk/no_appendix, // Нет аппендикса
+		/datum/quirk/shapeshifter,
+	)
+	if(isnabber(src) && (quirktype in bad_nabber_quirks))
+		return FALSE
+	. = ..()
diff --git a/tff_modular/modules/nabbers/code/abilites/agrograb.dm b/tff_modular/modules/nabbers/code/abilites/agrograb.dm
new file mode 100644
index 00000000000..8f043043e17
--- /dev/null
+++ b/tff_modular/modules/nabbers/code/abilites/agrograb.dm
@@ -0,0 +1,25 @@
+#define MARTIALART_NABBER "scythes grab"
+
+/datum/martial_art/nabber_grab
+	name = "scythes grab"
+	id = MARTIALART_NABBER
+
+/datum/martial_art/nabber_grab/grab_act(mob/living/attacker, mob/living/defender)
+	if(attacker == defender)
+		return MARTIAL_ATTACK_INVALID
+
+	var/old_grab_state = attacker.grab_state
+	defender.grabbedby(attacker, TRUE)
+	if(old_grab_state == GRAB_PASSIVE)
+		defender.drop_all_held_items()
+		attacker.setGrabState(GRAB_AGGRESSIVE) //Instant aggressive grab if on grab intent
+		log_combat(attacker, defender, "grabbed", addition="aggressively")
+		defender.visible_message(
+			span_warning("[attacker] grabs [defender] in his scythes!"),
+			span_userdanger("You're grabbed in scythes by [attacker]!"),
+			span_hear("You hear sounds of aggressive fondling!"),
+			COMBAT_MESSAGE_RANGE,
+			attacker,
+		)
+		to_chat(attacker, span_danger("You grab [defender] in your scythes!"))
+	return MARTIAL_ATTACK_SUCCESS
diff --git a/tff_modular/modules/nabbers/code/abilites/nabber_combat_effect.dm b/tff_modular/modules/nabbers/code/abilites/nabber_combat_effect.dm
index 8b64d239d3d..92f116940f6 100644
--- a/tff_modular/modules/nabbers/code/abilites/nabber_combat_effect.dm
+++ b/tff_modular/modules/nabbers/code/abilites/nabber_combat_effect.dm
@@ -51,7 +51,7 @@
 
 /datum/movespeed_modifier/nabber_combat
 	blacklisted_movetypes = FLYING
-	multiplicative_slowdown = -0.25
+	multiplicative_slowdown = -0.40
 
 #undef NABBER_THREAT_ICON
 #undef NABBER_THREAT_ICON_STATE
diff --git a/tff_modular/modules/nabbers/code/abilites/nabber_welding_eyes.dm b/tff_modular/modules/nabbers/code/abilites/nabber_welding_eyes.dm
index 1f6253a79e1..60a8dd241d3 100644
--- a/tff_modular/modules/nabbers/code/abilites/nabber_welding_eyes.dm
+++ b/tff_modular/modules/nabbers/code/abilites/nabber_welding_eyes.dm
@@ -2,7 +2,7 @@
 	name = "Toggle welding shield"
 	desc = "Toggle your eyes welding shield"
 
-	var/obj/item/organ/internal/eyes/robotic/nabber/eyes
+	var/obj/item/organ/internal/eyes/nabber/eyes
 
 /datum/action/toggle_welding/Trigger(trigger_flags)
 	. = ..()
diff --git a/tff_modular/modules/nabbers/code/abilites/toggle_arms.dm b/tff_modular/modules/nabbers/code/abilites/toggle_arms.dm
index f83866ad337..9d28e0bf5b1 100644
--- a/tff_modular/modules/nabbers/code/abilites/toggle_arms.dm
+++ b/tff_modular/modules/nabbers/code/abilites/toggle_arms.dm
@@ -1,3 +1,5 @@
+var/datum/martial_art/martial_to_learn = new /datum/martial_art/nabber_grab()
+
 /obj/item/melee/nabber_blade
 	name = "Mantis arm"
 	desc = "A grotesque matn made out of bone and flesh that cleaves through people as a hot knife through butter."
@@ -46,12 +48,18 @@
 	desc = "Pump blood from manipulating arms into mantis arms, becoming a menace in close combat but loosing ability to interact."
 	cooldown_time = 5 SECONDS
 
+	var/obj/item/restraints/handcuffs/stored_handcuffs = null //Переменная для сохранения наручников
+
 	button_icon = 'tff_modular/modules/nabbers/icons/actions.dmi'
 
 /datum/action/cooldown/toggle_arms/New(Target, original)
 	. = ..()
 	button_icon_state = "arms_off"
 
+/datum/action/cooldown/toggle_arms/Destroy()
+	stored_handcuffs = null
+	. = ..()
+
 /datum/action/cooldown/toggle_arms/Activate(atom/target)
 	var/mob/living/carbon/human/nabber = owner
 
@@ -59,8 +67,9 @@
 		return FALSE
 
 	if(isdead(nabber) || nabber.incapacitated)
-		nabber.balloon_alert(nabber, "Incapacitated!")
-		return FALSE
+		if(!nabber.handcuffed)
+			nabber.balloon_alert(nabber, "Incapacitated!")
+			return FALSE
 
 	if(nabber.num_hands < 2)
 		nabber.balloon_alert(nabber, "Need both hands!")
@@ -89,11 +98,19 @@
 	nabber.visible_message(span_warning("[nabber] starts to pump blood into their mantis arms!"), span_warning("You start pumping blood into your mantis arms and emmitting defensive screech! Stay still!"), span_hear("You hear ramping up screech!"))
 	playsound(nabber, 'tff_modular/modules/nabbers/sounds/nabberscream.ogg', 70)
 
-	if(!do_after(nabber, 5 SECONDS, nabber))
+	if(!do_after(nabber, 2 SECONDS, nabber, IGNORE_USER_LOC_CHANGE))
 		StartCooldown()
-		nabber.balloon_alert(nabber, "Stand still!")
 		return FALSE
 
+	//"Сохраняет" наручники надетые на ГБСа в ЕГО ТЕЛО и позволяет пользоваться косами + открепляет его от стула и подобного
+	if(nabber.handcuffed)
+		stored_handcuffs = nabber.handcuffed
+		nabber.handcuffed.forceMove(nabber)
+		nabber.set_handcuffed(null)
+		if(nabber.buckled?.buckle_requires_restraints)
+			nabber.buckled.unbuckle_mob(nabber)
+		nabber.update_handcuffed()
+
 	nabber.balloon_alert(nabber, "Arms rised!")
 	nabber.visible_message(span_warning("[nabber] raised their mantis arms ready for combat!"), span_warning("You raise your mantis arms, ready for combat."), span_hear("You hear terrible a screech!"))
 	playsound(nabber, 'tff_modular/modules/nabbers/sounds/nabberscream.ogg', 70)
@@ -107,8 +124,9 @@
 
 	nabber.put_in_active_hand(active_hand)
 	nabber.put_in_inactive_hand(inactive_hand)
+	martial_to_learn.teach(nabber)
 
-	RegisterSignal(owner, COMSIG_CARBON_REMOVE_LIMB, PROC_REF(on_lose_hand))
+	RegisterSignal(owner, COMSIG_CARBON_POST_REMOVE_LIMB, PROC_REF(on_lose_hand))
 	button_icon_state = "arms_on"
 	nabber.update_action_buttons()
 
@@ -117,7 +135,10 @@
 
 	nabber.visible_message(span_notice("[nabber] starts to pump blood out their mantis arms!"), span_notice("You start pumping blood out your mantis arms. Stay still!"), span_hear("You hear ramping up screech!"))
 
-	if(force)
+	if(force) //Типикал бьонд код
+		if(stored_handcuffs)
+			stored_handcuffs.forceMove(stored_handcuffs.drop_location())
+			stored_handcuffs = null
 		nabber.Stun(5 SECONDS)
 		for(var/obj/item/held in nabber.held_items)
 			if(istype(held, /obj/item/melee/nabber_blade))
@@ -128,8 +149,7 @@
 
 	nabber.balloon_alert(nabber, "Starting pumping blood out!")
 
-	if(!do_after(nabber, 5 SECONDS, nabber))
-		nabber.balloon_alert(nabber, "Stand still!")
+	if(!do_after(nabber, 2 SECONDS, nabber, IGNORE_USER_LOC_CHANGE))
 		return	FALSE
 
 	playsound(nabber, 'tff_modular/modules/nabbers/sounds/nabberscream.ogg', 70)
@@ -137,17 +157,23 @@
 		if(istype(held, /obj/item/melee/nabber_blade))
 			qdel(held)
 
-	UnregisterSignal(owner, COMSIG_CARBON_REMOVE_LIMB)
+	UnregisterSignal(owner, COMSIG_CARBON_POST_REMOVE_LIMB)
+	martial_to_learn.remove(nabber)
 	nabber.balloon_alert(nabber, "Arms down!")
 	button_icon_state = "arms_off"
 	nabber.update_action_buttons()
 
+	// Надевает наручники обратно если они были до перехода в косы
+	if(stored_handcuffs)
+		nabber.equip_to_slot(stored_handcuffs, ITEM_SLOT_HANDCUFFED)
+		stored_handcuffs = null
+
 /datum/action/cooldown/toggle_arms/proc/on_lose_hand()
 	SIGNAL_HANDLER
 	var/mob/living/carbon/human/nabber = owner
 
-	if(!(nabber.num_hands < 2))
-		return	FALSE
+	if(nabber.num_hands >= 2)
+		return FALSE
 
 	nabber.visible_message(span_notice("[nabber] starts to pump blood out their mantis arms!"), span_notice("You start pumping blood out your mantis arms. Stay still!"), span_hear("You hear ramping up screech!"))
 	playsound(nabber, 'tff_modular/modules/nabbers/sounds/nabberscream.ogg', 70)
@@ -157,5 +183,12 @@
 		if(istype(held, /obj/item/melee/nabber_blade))
 			qdel(held)
 
+	martial_to_learn.remove(nabber)
 	button_icon_state = "arms_off"
 	nabber.update_action_buttons()
+
+	if(stored_handcuffs)
+		stored_handcuffs.forceMove(stored_handcuffs.drop_location())
+		stored_handcuffs = null
+
+	UnregisterSignal(owner, COMSIG_CARBON_POST_REMOVE_LIMB)
diff --git a/tff_modular/modules/nabbers/code/nabber_bodyparts.dm b/tff_modular/modules/nabbers/code/nabber_bodyparts.dm
index 04587b7ae9b..65c059e9f10 100644
--- a/tff_modular/modules/nabbers/code/nabber_bodyparts.dm
+++ b/tff_modular/modules/nabbers/code/nabber_bodyparts.dm
@@ -30,6 +30,12 @@
 		feature_key = OFFSET_FACEMASK,
 		offset_y = list("north" = 7, "south" = 7, "east" = 7, "west" = 7),
 	)
+	worn_glasses_offset = new(
+		attached_part = src,
+		feature_key = OFFSET_GLASSES,
+		offset_y = list("north" = 10, "south" = 10, "east" = 10, "west" = 10),
+		offset_x = list("north" = 1, "south" = 1, "east" = 1, "west" = -1)
+	)
 	return ..()
 
 
diff --git a/tff_modular/modules/nabbers/code/nabber_bolaimmunity.dm b/tff_modular/modules/nabbers/code/nabber_bolaimmunity.dm
new file mode 100644
index 00000000000..ec6f41597b8
--- /dev/null
+++ b/tff_modular/modules/nabbers/code/nabber_bolaimmunity.dm
@@ -0,0 +1,57 @@
+/// Special type of legcuffs that do not affect movement or doesnt show up, but block other legcuffs
+/obj/item/restraints/legcuffs/gas_placeholder
+	name = "serpentid thick tail"
+	desc = "You should not see this."
+	gender = PLURAL
+	icon_state = NONE
+	inhand_icon_state = "nabber_r_leg"
+	lefthand_file = 'tff_modular/modules/nabbers/icons/bodyparts/nabber_parts_greyscale.dmi'
+	righthand_file = 'tff_modular/modules/nabbers/icons/bodyparts/nabber_parts_greyscale.dmi'
+	w_class = WEIGHT_CLASS_TINY
+	slowdown = 0
+	item_flags = DROPDEL | ABSTRACT
+
+/obj/item/restraints/legcuffs/gas_placeholder/Initialize(mapload)
+	. = ..()
+	ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT)
+
+/obj/item/restraints/legcuffs/gas_placeholder/update_icon_state()
+	icon_state = NONE
+	return ..()
+
+/mob/living/carbon/human/cuff_resist(obj/item/cuffs, breakouttime = 1 MINUTES, cuff_break = 0)
+	if(isnabber(src))
+		if(istype(cuffs, /obj/item/restraints/legcuffs/gas_placeholder))
+			return FALSE
+	return ..()
+
+/mob/living/carbon/human/doUnEquip(obj/item/unequip_item, force, newloc, no_move, invdrop, silent)
+	if(isnabber(src))
+		if(istype(unequip_item, /obj/item/restraints/legcuffs/gas_placeholder))
+			return FALSE
+	return ..()
+
+/// У ГБСов этот слот всегда должен быть занять заглушкой, которую нельзя снять
+/mob/living/carbon/human/update_worn_legcuffs(update_obscured = TRUE)
+	if(isnabber(src))
+		return FALSE
+	else
+		return ..()
+
+/datum/species/nabber/can_equip(obj/item/I, slot, disable_warning, mob/living/carbon/human/H, bypass_equip_delay_self, ignore_equipped, indirect_action)
+	if(slot == ITEM_SLOT_LEGCUFFED)
+		return FALSE
+	. = ..()
+
+// Это ужас
+/obj/item/restraints/legcuffs/gas_placeholder/canStrip(mob/stripper, mob/owner)
+	INVOKE_ASYNC(src, PROC_REF(touch_ze_bug), stripper, owner)
+	return ..()
+
+/obj/item/restraints/legcuffs/gas_placeholder/proc/touch_ze_bug(mob/stripper, mob/owner)
+	owner.visible_message(
+						  span_purple("[stripper] лапает хвост ГБСа. Кажется зря."),
+						  span_purple("[stripper] лапает мой хвост! Кажется зря."),
+						  blind_message = span_hear("You hear lewd bug noises."),
+						)
+	playsound(get_turf(owner), 'modular_nova/modules/modular_items/lewd_items/sounds/vax2.ogg', 50, TRUE)
diff --git a/tff_modular/modules/nabbers/code/nabber_huds.dm b/tff_modular/modules/nabbers/code/nabber_huds.dm
new file mode 100644
index 00000000000..af7e5a9bd2c
--- /dev/null
+++ b/tff_modular/modules/nabbers/code/nabber_huds.dm
@@ -0,0 +1,90 @@
+#define NABBER_HUD_Y_SHIFT 12
+
+/mob/living/carbon/human/species/nabber/med_hud_set_status()
+	. = ..()
+	var/image/holder = hud_list?[STATUS_HUD]
+	if (isnull(holder))
+		return
+	holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+/mob/living/carbon/human/species/nabber/med_hud_set_health()
+	. = ..()
+	var/image/holder = hud_list?[HEALTH_HUD]
+	if (isnull(holder))
+		return
+	holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+/mob/living/carbon/human/species/nabber/sec_hud_set_ID()
+	. = ..()
+	var/image/holder = hud_list[ID_HUD]
+	if (isnull(holder))
+		return
+	holder.pixel_y += NABBER_HUD_Y_SHIFT
+	var/image/permit_holder = hud_list[PERMIT_HUD]
+	if (isnull(permit_holder))
+		return
+	permit_holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+/mob/living/carbon/human/species/nabber/sec_hud_set_security_status()
+	. = ..()
+	var/image/holder = hud_list[WANTED_HUD]
+	if (isnull(holder))
+		return
+	holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+/mob/living/carbon/human/species/nabber/sec_hud_set_implants()
+	. = ..()
+	var/image/holder
+	for(var/i in (list(IMPSEC_FIRST_HUD, IMPLOYAL_HUD, IMPSEC_SECOND_HUD) & hud_list))
+		holder = hud_list[i]
+		if(isnull(holder))
+			return
+		holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+/mob/living/carbon/human/med_hud_set_status()
+	. = ..()
+	if(isnabber(src))
+		var/image/holder = hud_list?[STATUS_HUD]
+		if (isnull(holder))
+			return
+		holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+/mob/living/carbon/human/med_hud_set_health()
+	. = ..()
+	if(isnabber(src))
+		var/image/holder = hud_list?[HEALTH_HUD]
+		if (isnull(holder))
+			return
+		holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+/mob/living/carbon/human/sec_hud_set_ID()
+	. = ..()
+	if(isnabber(src))
+		var/image/holder = hud_list[ID_HUD]
+		if (isnull(holder))
+			return
+		holder.pixel_y += NABBER_HUD_Y_SHIFT
+		var/image/permit_holder = hud_list[PERMIT_HUD]
+		if (isnull(permit_holder))
+			return
+		permit_holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+/mob/living/carbon/human/sec_hud_set_security_status()
+	. = ..()
+	if(isnabber(src))
+		var/image/holder = hud_list[WANTED_HUD]
+		if (isnull(holder))
+			return
+		holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+/mob/living/carbon/human/sec_hud_set_implants()
+	. = ..()
+	if(isnabber(src))
+		var/image/holder
+		for(var/i in (list(IMPSEC_FIRST_HUD, IMPLOYAL_HUD, IMPSEC_SECOND_HUD) & hud_list))
+			holder = hud_list[i]
+			if(isnull(holder))
+				return
+			holder.pixel_y += NABBER_HUD_Y_SHIFT
+
+#undef NABBER_HUD_Y_SHIFT
diff --git a/tff_modular/modules/nabbers/code/nabber_language.dm b/tff_modular/modules/nabbers/code/nabber_language.dm
new file mode 100644
index 00000000000..4f1dc00564c
--- /dev/null
+++ b/tff_modular/modules/nabbers/code/nabber_language.dm
@@ -0,0 +1,122 @@
+/datum/language/nabber
+	name = "Giant Armored Serpentid"
+	desc = "A complex language that contains various sounds and movements, spoken only by Serpentids."
+	key = "N"
+	syllables = null
+	special_characters = null
+	default_priority = 70
+
+	flags = NO_STUTTER | TONGUELESS_SPEECH
+	always_use_default_namelist = TRUE
+	icon_state = "animal"
+	secret = TRUE
+
+/datum/language/nabber/scramble(input)
+
+	var/scrambled_text = "[pick("ритмично", "коротко", "быстро", "громко", "мелодично", "монотонно", "резко", "характерно")] \
+						 [pick("жужжит", "щёлкает", "верещит", "стрекочет")] \
+						 [pick("пару раз" , "несколько раз", "три раза")]."
+
+	add_to_cache(input, scrambled_text)
+
+	return scrambled_text
+
+/datum/language_holder/nabber
+	understood_languages = list(
+		/datum/language/common = list(LANGUAGE_MIND),
+		/datum/language/nabber = list(LANGUAGE_MIND),
+	)
+	spoken_languages = list(
+		/datum/language/common = list(LANGUAGE_ATOM),
+		/datum/language/nabber = list(LANGUAGE_SPECIES),
+	)
+	selected_language = /datum/language/common
+
+/obj/item/implant/gas_sol_speaker
+	name = "sol speech synthesizer implant"
+	actions_types = null
+	// Implant gets damaged evevy emp_act(). If 0 - its fine. 1 - it stops working. Any more damage will give burn damage
+	// TODO: add more stages
+	var/emp_damage = 0
+
+/obj/item/implant/gas_sol_speaker/get_data()
+	return "<b>Implant Specifications:</b><BR> \
+		<b>Name:</b> Sol Government Giant Armored Serpentid Speech Synthesizer Beta v0.3<BR> \
+		<b>Life:</b> Activates upon speech attempt.<BR>\
+		<b>Important Notes:</b> Does not work on other species.<BR> \
+		<HR> \
+		<b>Implant Details:</b><BR> \
+		<b>Function:</b> Contains a small electonic speech syntesizer, similar to the borg ones and AI-processing unit, which detects GASs attempt to speak and, \
+		if enabled, will translate its neuron signals into comprehensible human language.<BR> \
+		<b>Changelog:</b> No longer causes infinite scream loop once GAS is angered.<BR>\
+		<b>Known bugs:</b> EMP tends to damage the implant power source. Will isolate it later.<BR>"
+
+/obj/item/implant/gas_sol_speaker/implant(mob/living/target, mob/user, silent = FALSE, force = FALSE)
+	. = ..()
+	if(isnabber(target) && !QDELING(target))
+		var/mob/living/carbon/human/species/nabber/our_gas = target
+		our_gas.grant_language(/datum/language/common, language_flags = SPOKEN_LANGUAGE, source = LANGUAGE_ATOM)
+
+/obj/item/implant/gas_sol_speaker/removed(mob/target, silent = FALSE, special = FALSE)
+	. = ..()
+	if(isnabber(target) && !QDELING(target))
+		var/mob/living/carbon/human/species/nabber/our_gas = target
+		our_gas.remove_language(/datum/language/common, language_flags = SPOKEN_LANGUAGE)
+		if(our_gas.has_status_effect(/datum/status_effect/speech/stutter/nabber))
+			our_gas.remove_status_effect(/datum/status_effect/speech/stutter/nabber)
+
+/obj/item/implant/gas_sol_speaker/emp_act(severity)
+	. = ..()
+	switch(emp_damage)
+		if(0)
+			emp_damage += 1
+			if(imp_in && isnabber(imp_in))
+				var/mob/living/carbon/human/species/nabber/our_gas = imp_in
+				our_gas.apply_status_effect(/datum/status_effect/speech/stutter/nabber, -1)
+				to_chat(imp_in, span_hear("You hear something inside of you zap silently."))
+		if (1)
+			emp_damage += 1
+			if(imp_in && isnabber(imp_in))
+				var/mob/living/carbon/human/species/nabber/our_gas = imp_in
+				our_gas.remove_language(/datum/language/common, language_flags = SPOKEN_LANGUAGE)
+				if(our_gas.has_status_effect(/datum/status_effect/speech/stutter/nabber))
+					our_gas.remove_status_effect(/datum/status_effect/speech/stutter/nabber)
+				to_chat(imp_in, span_hear("You hear something inside of you zap silently."))
+		if (2)
+			if (imp_in)
+				imp_in.apply_damage(5, BURN)
+				to_chat(imp_in, span_warning("You feel something burning inside you!"))
+
+/// Special type of stutter, only affecting non nabber languages
+/datum/status_effect/speech/stutter/nabber
+	id = "gas_stutter"
+	alert_type = null
+	duration = -1
+
+/datum/status_effect/speech/stutter/nabber/handle_message(datum/source, list/message_args)
+	if(isnabber(owner) && ispath(owner.get_selected_language(), /datum/language/nabber))
+		stutter_prob = 0
+	else
+		stutter_prob = 80
+	return ..()
+
+/obj/item/implanter/gas_sol_speaker
+	name = "implanter (GAS Sol speaker)"
+	imp_type = /obj/item/implant/gas_sol_speaker
+
+/obj/item/implantcase/gas_sol_speaker
+	name = "implant case - 'GAS Sol speaker'"
+	desc = "A glass case containing a sol speaker, designed for GAS."
+	imp_type = /obj/item/implant/gas_sol_speaker
+
+/datum/design/implant_gassolspeaker
+	name = "GAS Sol speaker Implant Case"
+	desc = "Makes GAS able to speak normally."
+	id = "implant_gasspeech"
+	build_type = PROTOLATHE | AWAY_LATHE
+	materials = list(/datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5)
+	build_path = /obj/item/implantcase/gas_sol_speaker
+	category = list(
+		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
+	)
+	departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
diff --git a/tff_modular/modules/nabbers/code/nabber_organs.dm b/tff_modular/modules/nabbers/code/nabber_organs.dm
index 7bb98527030..083f1c56439 100644
--- a/tff_modular/modules/nabbers/code/nabber_organs.dm
+++ b/tff_modular/modules/nabbers/code/nabber_organs.dm
@@ -13,6 +13,14 @@
 	liked_foodtypes = RAW | GORE | GRAIN
 	disliked_foodtypes = CLOTH | FRIED | TOXIC
 	toxic_foodtypes = DAIRY
+	var/static/list/languages_possible_gas = typecacheof(list(
+		/datum/language/common,
+		/datum/language/nabber,
+	))
+
+/obj/item/organ/internal/tongue/nabber/get_possible_languages()
+	RETURN_TYPE(/list)
+	return languages_possible_gas
 
 /obj/item/organ/internal/ears/nabber
 	name = "nabber ears"
@@ -30,13 +38,6 @@
 	icon_state = "brain"
 
 /obj/item/organ/internal/eyes/nabber
-	name = "nabber eyes"
-	desc = "Small orange orbs."
-	icon = ORGGAN_ICON_NABBER
-	icon_state = "eyes"
-	flash_protect = FLASH_PROTECTION_SENSITIVE
-
-/obj/item/organ/internal/eyes/robotic/nabber
 	name = "nabber eyes"
 	desc = "Small orange orbs. With pair welding shield linses."
 	icon = ORGGAN_ICON_NABBER
@@ -45,7 +46,7 @@
 	var/datum/action/toggle_welding/shield
 	var/active = FALSE
 
-/obj/item/organ/internal/eyes/robotic/nabber/Insert(mob/living/carbon/eye_recipient, special, movement_flags)
+/obj/item/organ/internal/eyes/nabber/Insert(mob/living/carbon/eye_recipient, special, movement_flags)
 	. = ..()
 	shield = new(eye_recipient)
 	shield.button_icon = ORGGAN_ICON_NABBER
@@ -53,7 +54,7 @@
 	shield.Grant(eye_recipient)
 	shield.eyes = src
 
-/obj/item/organ/internal/eyes/robotic/nabber/proc/toggle_shielding()
+/obj/item/organ/internal/eyes/nabber/proc/toggle_shielding()
 	if(!owner)
 		return
 
@@ -72,7 +73,7 @@
 	owner.update_tint()
 	owner.balloon_alert(owner, "Welder eyelids open!")
 
-/obj/item/organ/internal/eyes/robotic/nabber/Remove(mob/living/carbon/eye_owner, special)
+/obj/item/organ/internal/eyes/nabber/Remove(mob/living/carbon/eye_owner, special)
 	. = ..()
 	shield.Destroy()
 	active = FALSE
diff --git a/tgstation.dme b/tgstation.dme
index 3a7331b8b9b..8841314acef 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -8871,8 +8871,12 @@
 #include "tff_modular\modules\modular_automapper\replacer.dm"
 #include "tff_modular\modules\nabbers\code\_nabbers.dm"
 #include "tff_modular\modules\nabbers\code\nabber_bodyparts.dm"
+#include "tff_modular\modules\nabbers\code\nabber_bolaimmunity.dm"
 #include "tff_modular\modules\nabbers\code\nabber_emotes.dm"
+#include "tff_modular\modules\nabbers\code\nabber_huds.dm"
+#include "tff_modular\modules\nabbers\code\nabber_language.dm"
 #include "tff_modular\modules\nabbers\code\nabber_organs.dm"
+#include "tff_modular\modules\nabbers\code\abilites\agrograb.dm"
 #include "tff_modular\modules\nabbers\code\abilites\camouflage.dm"
 #include "tff_modular\modules\nabbers\code\abilites\nabber_combat_effect.dm"
 #include "tff_modular\modules\nabbers\code\abilites\nabber_threat.dm"

From 82294c076a97ca435f5933dc4848168854281aa5 Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Thu, 19 Dec 2024 18:46:51 +0300
Subject: [PATCH 17/23] Automatic changelog for PR #4957 [ci skip]

---
 html/changelogs/AutoChangeLog-pr-4957.yml | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 html/changelogs/AutoChangeLog-pr-4957.yml

diff --git a/html/changelogs/AutoChangeLog-pr-4957.yml b/html/changelogs/AutoChangeLog-pr-4957.yml
new file mode 100644
index 00000000000..900b7d4e96e
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-4957.yml
@@ -0,0 +1,17 @@
+author: "Oxotnak"
+delete-after: True
+changes:
+  - rscadd: "GAS now have basic noslip"
+  - rscadd: "GAS now able to grab in scythes"
+  - rscadd: "GAS now faster in threat form"
+  - rscadd: "GAS now raises scythes faster and can move at same time"
+  - rscadd: "GAS now able to wear scouter-huds"
+  - rscadd: "GAS now more resistant to tackle"
+  - rscadd: "GAS now have own language"
+  - rscadd: "GAS now have sol implant. Damages by emp. Fixable via replacing implant"
+  - rscadd: "GAS now immune to bolas and beartrap"
+  - rscadd: "GAS now can raise scythes in cuffs. Can't be cuffed with raised scythes"
+  - rscadd: "GAS now moves fast while grabbing in scythes"
+  - rscadd: "GAS now have special cookie"
+  - bugfix: "GAS now can't pick languages"
+  - qol: "GAS now have quirks blacklist"
\ No newline at end of file

From 2a63441a1d3dea52a91772d516bc40173774bb1e Mon Sep 17 00:00:00 2001
From: Axidy <76065506+Axidyuwu@users.noreply.github.com>
Date: Thu, 19 Dec 2024 18:09:46 +0200
Subject: [PATCH 18/23] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BD=D0=B8=D0=BC?=
 =?UTF-8?q?=D0=B0=D0=B5=D0=BC=20=D1=83=D1=80=D0=BE=D0=BD=20=D0=A2=D0=93=20?=
 =?UTF-8?q?=D0=B0=D0=BD=D1=82=D0=B0=D0=B3=D0=BE=D0=B2=20(=D0=B2=20=D0=BF?=
 =?UTF-8?q?=D0=BE=D0=B8=D1=81=D0=BA=D0=B0=D1=85=20=D0=B8=D0=B4=D0=B5=D0=B0?=
 =?UTF-8?q?=D0=BB=D0=B0=20=D0=B2=20=D0=B1=D0=B0=D0=BB=D0=B0=D0=B4=D0=B5=20?=
 =?UTF-8?q?=D0=BE=20=D0=BA=D1=80=D1=8B=D1=81=D0=BE=D0=BF=D1=83=D1=88=D0=BA?=
 =?UTF-8?q?=D0=B0=D1=85)=20(#5159)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* sir buffs a lot

* funny descriptions

* 30 to 85
---
 code/modules/antagonists/heretic/items/heretic_blades.dm      | 4 ++--
 code/modules/antagonists/heretic/knowledge/lock_lore.dm       | 2 +-
 code/modules/antagonists/heretic/magic/blood_cleave.dm        | 2 +-
 code/modules/antagonists/heretic/magic/blood_siphon.dm        | 4 ++--
 code/modules/antagonists/heretic/magic/furious_steel.dm       | 2 +-
 code/modules/antagonists/heretic/magic/mind_gate.dm           | 2 +-
 code/modules/antagonists/heretic/magic/void_phase.dm          | 2 +-
 code/modules/antagonists/heretic/magic/void_pull.dm           | 2 +-
 .../antagonists/heretic/status_effects/mark_effects.dm        | 2 +-
 code/modules/antagonists/nightmare/nightmare_equipment.dm     | 2 +-
 code/modules/antagonists/voidwalker/voidwalker_void_eater.dm  | 2 +-
 11 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/code/modules/antagonists/heretic/items/heretic_blades.dm b/code/modules/antagonists/heretic/items/heretic_blades.dm
index 6e0d3d7d186..be8b59a23e7 100644
--- a/code/modules/antagonists/heretic/items/heretic_blades.dm
+++ b/code/modules/antagonists/heretic/items/heretic_blades.dm
@@ -13,7 +13,7 @@
 	slot_flags = ITEM_SLOT_BELT
 	sharpness = SHARP_EDGED
 	w_class = WEIGHT_CLASS_NORMAL
-	force = 20
+	force = 28 // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 20
 	throwforce = 10
 	wound_bonus = 5
 	bare_wound_bonus = 15
@@ -219,7 +219,7 @@
 	name = "\improper cursed blade"
 	desc = "A dark blade, cursed to bleed forever. In constant struggle between the eldritch and the dark, it is forced to accept any wielder as its master. \
 		Its eye's cornea drips blood endlessly into the ground, yet its piercing gaze remains on you."
-	force = 25
+	force = 32 // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 25
 	throwforce = 15
 	block_chance = 35
 	wound_bonus = 25
diff --git a/code/modules/antagonists/heretic/knowledge/lock_lore.dm b/code/modules/antagonists/heretic/knowledge/lock_lore.dm
index 28e02112fd7..a618a0fcba1 100644
--- a/code/modules/antagonists/heretic/knowledge/lock_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/lock_lore.dm
@@ -146,7 +146,7 @@
 	wound_type = /datum/wound/slash/flesh/critical
 	research_tree_icon_path = 'icons/ui_icons/antags/heretic/knowledge.dmi'
 	research_tree_icon_state = "blade_upgrade_lock"
-	var/chance = 35
+	var/chance = 55 // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 35
 
 /datum/heretic_knowledge/blade_upgrade/flesh/lock/do_melee_effects(mob/living/source, mob/living/target, obj/item/melee/sickly_blade/blade)
 	if(prob(chance))
diff --git a/code/modules/antagonists/heretic/magic/blood_cleave.dm b/code/modules/antagonists/heretic/magic/blood_cleave.dm
index d5317f23e34..431a08fa7b2 100644
--- a/code/modules/antagonists/heretic/magic/blood_cleave.dm
+++ b/code/modules/antagonists/heretic/magic/blood_cleave.dm
@@ -47,7 +47,7 @@
 		var/obj/item/bodypart/bodypart = pick(victim.bodyparts)
 		var/datum/wound/slash/flesh/crit_wound = new wound_type()
 		crit_wound.apply_wound(bodypart)
-		victim.apply_damage(20, BURN, wound_bonus = CANT_WOUND)
+		victim.apply_damage(30, BURN, wound_bonus = CANT_WOUND) // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 20
 
 		new /obj/effect/temp_visual/cleave(get_turf(victim))
 
diff --git a/code/modules/antagonists/heretic/magic/blood_siphon.dm b/code/modules/antagonists/heretic/magic/blood_siphon.dm
index 1801b6d9dbc..98f9a10130c 100644
--- a/code/modules/antagonists/heretic/magic/blood_siphon.dm
+++ b/code/modules/antagonists/heretic/magic/blood_siphon.dm
@@ -40,8 +40,8 @@
 	)
 
 	var/mob/living/living_owner = owner
-	cast_on.adjustBruteLoss(20)
-	living_owner.adjustBruteLoss(-20)
+	cast_on.adjustBruteLoss(25) // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 20
+	living_owner.adjustBruteLoss(-25) // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 20
 
 	if(!cast_on.blood_volume || !living_owner.blood_volume)
 		return TRUE
diff --git a/code/modules/antagonists/heretic/magic/furious_steel.dm b/code/modules/antagonists/heretic/magic/furious_steel.dm
index 9414ca9d711..d71659b5af4 100644
--- a/code/modules/antagonists/heretic/magic/furious_steel.dm
+++ b/code/modules/antagonists/heretic/magic/furious_steel.dm
@@ -101,7 +101,7 @@
 	icon = 'icons/effects/eldritch.dmi'
 	icon_state = "dio_knife"
 	speed = 2
-	damage = 25
+	damage = 35 // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 25
 	armour_penetration = 100
 	sharpness = SHARP_EDGED
 	wound_bonus = 15
diff --git a/code/modules/antagonists/heretic/magic/mind_gate.dm b/code/modules/antagonists/heretic/magic/mind_gate.dm
index 7963c4d6c02..7c95a4878c5 100644
--- a/code/modules/antagonists/heretic/magic/mind_gate.dm
+++ b/code/modules/antagonists/heretic/magic/mind_gate.dm
@@ -32,7 +32,7 @@
 		return FALSE
 
 	cast_on.adjust_confusion(10 SECONDS)
-	cast_on.adjustOxyLoss(30)
+	cast_on.adjustOxyLoss(40) // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 30
 	cast_on.cause_hallucination(get_random_valid_hallucination_subtype(/datum/hallucination/body), "Mind gate, cast by [owner]")
 	cast_on.cause_hallucination(/datum/hallucination/delusion/preset/heretic/gate, "Caused by mindgate")
 	cast_on.adjustOrganLoss(ORGAN_SLOT_BRAIN, 30)
diff --git a/code/modules/antagonists/heretic/magic/void_phase.dm b/code/modules/antagonists/heretic/magic/void_phase.dm
index 473fa057cf5..17188ba86ac 100644
--- a/code/modules/antagonists/heretic/magic/void_phase.dm
+++ b/code/modules/antagonists/heretic/magic/void_phase.dm
@@ -56,7 +56,7 @@
 			continue
 		if(living_mob.can_block_magic(antimagic_flags))
 			continue
-		living_mob.apply_damage(40, BRUTE, wound_bonus = CANT_WOUND)
+		living_mob.apply_damage(60, BRUTE, wound_bonus = CANT_WOUND) // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 40
 		living_mob.apply_status_effect(/datum/status_effect/void_chill, 1)
 
 /obj/effect/temp_visual/voidin
diff --git a/code/modules/antagonists/heretic/magic/void_pull.dm b/code/modules/antagonists/heretic/magic/void_pull.dm
index 4e73ff6f49b..5473990f51c 100644
--- a/code/modules/antagonists/heretic/magic/void_pull.dm
+++ b/code/modules/antagonists/heretic/magic/void_pull.dm
@@ -31,7 +31,7 @@
 
 	// Before we cast the actual effects, deal AOE damage to anyone adjacent to us
 	for(var/mob/living/nearby_living as anything in get_things_to_cast_on(cast_on, damage_radius))
-		nearby_living.apply_damage(30, BRUTE, wound_bonus = CANT_WOUND)
+		nearby_living.apply_damage(40, BRUTE, wound_bonus = CANT_WOUND) // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 30
 		nearby_living.apply_status_effect(/datum/status_effect/void_chill, 1)
 
 /datum/action/cooldown/spell/aoe/void_pull/get_things_to_cast_on(atom/center, radius_override = 1)
diff --git a/code/modules/antagonists/heretic/status_effects/mark_effects.dm b/code/modules/antagonists/heretic/status_effects/mark_effects.dm
index de895d33caa..c4ef6e4ee49 100644
--- a/code/modules/antagonists/heretic/status_effects/mark_effects.dm
+++ b/code/modules/antagonists/heretic/status_effects/mark_effects.dm
@@ -79,7 +79,7 @@
 /datum/status_effect/eldritch/ash/on_effect()
 	if(iscarbon(owner))
 		var/mob/living/carbon/carbon_owner = owner
-		carbon_owner.adjustStaminaLoss(6 * repetitions) // first one = 30 stam
+		carbon_owner.adjustStaminaLoss(17 * repetitions) // first one = 85 stam; FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 6
 		carbon_owner.adjustFireLoss(3 * repetitions) // first one = 15 burn
 		for(var/mob/living/carbon/victim in shuffle(range(1, carbon_owner)))
 			if(IS_HERETIC(victim) || victim == carbon_owner)
diff --git a/code/modules/antagonists/nightmare/nightmare_equipment.dm b/code/modules/antagonists/nightmare/nightmare_equipment.dm
index 52a687f9ac7..d22595c0808 100644
--- a/code/modules/antagonists/nightmare/nightmare_equipment.dm
+++ b/code/modules/antagonists/nightmare/nightmare_equipment.dm
@@ -6,7 +6,7 @@
 	icon = 'icons/obj/weapons/changeling_items.dmi'
 	icon_state = "arm_blade"
 	inhand_icon_state = "arm_blade"
-	force = 25
+	force = 30 // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 25
 	armour_penetration = 35
 	lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi'
 	righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi'
diff --git a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
index 9bf5b3c2664..7bc369f8993 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
@@ -7,7 +7,7 @@
 	icon = 'icons/obj/weapons/voidwalker_items.dmi'
 	icon_state = "tentacle"
 	inhand_icon_state = "tentacle"
-	force = 25
+	force = 35 // FLUFFY FRONTIER EDIT: ANTAG BUFF #5159; original: 25
 	armour_penetration = 35
 	lefthand_file = 'icons/mob/inhands/antag/voidwalker_lefthand.dmi'
 	righthand_file = 'icons/mob/inhands/antag/voidwalker_righthand.dmi'

From 7a456b6104aab72ac895c8383d1037d7928c3a19 Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Thu, 19 Dec 2024 19:10:12 +0300
Subject: [PATCH 19/23] Automatic changelog for PR #5159 [ci skip]

---
 html/changelogs/AutoChangeLog-pr-5159.yml | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 html/changelogs/AutoChangeLog-pr-5159.yml

diff --git a/html/changelogs/AutoChangeLog-pr-5159.yml b/html/changelogs/AutoChangeLog-pr-5159.yml
new file mode 100644
index 00000000000..dd718c2744d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5159.yml
@@ -0,0 +1,4 @@
+author: "Axidyuwu"
+delete-after: True
+changes:
+  - balance: "Damage buffs for herethic, void walker and nightmare items or spells"
\ No newline at end of file

From e3d6e73b51493806ecffb1b5400950f6f5481e0f Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Thu, 19 Dec 2024 20:37:54 +0300
Subject: [PATCH 20/23] =?UTF-8?q?=D0=90=D0=BF=D0=B3=D1=80=D0=B5=D0=B9?=
 =?UTF-8?q?=D0=B4=20=D0=B8=D0=B2=D0=B5=D0=BD=D1=82=D0=BE=D0=B4=D0=B5=D0=BB?=
 =?UTF-8?q?=D0=BE=D0=B2=20(#4973)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* base

* todos

* forgeted

* is_eventmaker fix

* client in client method

* another fix with eventmaker check

* refactor

* hehe

* dme

* Apply suggestions from code review

* add verbs to eventers

---------

Co-authored-by: Iajret <HellDog15@gmail.com>
Co-authored-by: Iajret <8430839+Iajret@users.noreply.github.com>
---
 SQL/optimisations_2017-02-19.sql              |  2 +-
 SQL/tgstation_schema.sql                      |  2 +-
 SQL/tgstation_schema_prefixed.sql             |  2 +-
 code/__DEFINES/speech_channels.dm             |  1 +
 .../_globalvars/lists/hidden_verbs.dm         | 15 +++++
 .../~ff_defines/_globalvars/logging.dm        |  1 +
 code/__DEFINES/~ff_defines/span.dm            |  1 +
 code/__HELPERS/hearted.dm                     |  2 +-
 code/controllers/subsystem/admin_verbs.dm     |  1 -
 code/controllers/subsystem/stickyban.dm       |  2 +-
 code/datums/brain_damage/imaginary_friend.dm  |  7 +-
 code/modules/admin/admin.dm                   | 11 +++-
 code/modules/admin/known_alts.dm              |  4 +-
 code/modules/admin/sql_ban_system.dm          |  8 +--
 code/modules/admin/sql_message_system.dm      | 65 ++++++++++++++-----
 code/modules/admin/stickyban.dm               | 18 ++---
 code/modules/admin/topic.dm                   |  7 ++
 code/modules/admin/verbs/admingame.dm         | 39 +++++------
 code/modules/admin/verbs/adminsay.dm          |  9 ++-
 code/modules/admin/verbs/maprotation.dm       |  2 +-
 code/modules/admin/verbs/secrets.dm           |  4 ++
 code/modules/admin/verbs/server.dm            |  6 +-
 code/modules/admin/view_variables/topic.dm    |  2 +-
 code/modules/client/client_procs.dm           | 28 ++++----
 .../modules/mob/dead/observer/observer_say.dm |  7 +-
 code/modules/mob/living/living_say.dm         |  7 +-
 code/modules/tgui_input/say_modal/modal.dm    |  2 +-
 code/modules/tgui_input/say_modal/speech.dm   |  5 ++
 config/nova/config_nova.txt                   |  1 +
 config/nova/eventmakers.txt                   |  0
 .../logging/categories/log_category_game.dm   |  5 ++
 .../code/subsystem/player_ranks.dm            |  1 -
 tff_modular/modules/eventers/eventmaker.dm    | 34 ++++++++++
 .../modules/eventers/eventmaker_verbs.dm      | 13 ++++
 .../modules/eventers/random_stuff_ban.dm      | 14 ++++
 tgstation.dme                                 |  6 ++
 tgui/packages/tgui-panel/chat/constants.ts    |  9 +++
 .../tgui-panel/styles/tgchat/chat-dark.scss   |  8 +++
 .../tgui-panel/styles/tgchat/chat-light.scss  |  8 +++
 tgui/packages/tgui-say/ChannelIterator.ts     |  8 ++-
 tgui/packages/tgui-say/constants/index.tsx    |  1 +
 tgui/packages/tgui-say/styles/colors.scss     |  2 +
 tgui/packages/tgui/interfaces/Secrets.jsx     | 32 ++++-----
 43 files changed, 302 insertions(+), 100 deletions(-)
 create mode 100644 code/__DEFINES/~ff_defines/_globalvars/lists/hidden_verbs.dm
 create mode 100644 code/__DEFINES/~ff_defines/_globalvars/logging.dm
 create mode 100644 code/__DEFINES/~ff_defines/span.dm
 create mode 100644 config/nova/eventmakers.txt
 create mode 100644 tff_modular/modules/eventers/eventmaker.dm
 create mode 100644 tff_modular/modules/eventers/eventmaker_verbs.dm
 create mode 100644 tff_modular/modules/eventers/random_stuff_ban.dm

diff --git a/SQL/optimisations_2017-02-19.sql b/SQL/optimisations_2017-02-19.sql
index 1bb19cc6677..a98386186f2 100644
--- a/SQL/optimisations_2017-02-19.sql
+++ b/SQL/optimisations_2017-02-19.sql
@@ -124,7 +124,7 @@ ALTER TABLE `library`
 , CHANGE COLUMN `deleted` `deleted` TINYINT(1) UNSIGNED NULL DEFAULT NULL;
 
 ALTER TABLE `messages`
- CHANGE COLUMN `type` `type` ENUM('memo', 'message', 'message sent', 'note', 'watchlist entry') NOT NULL
+ CHANGE COLUMN `type` `type` ENUM('memo', 'message', 'message sent', 'note', 'watchlist entry', 'eventmaker note') NOT NULL
 , CHANGE COLUMN `text` `text` VARCHAR(2048) NOT NULL
 , CHANGE COLUMN `secret` `secret` TINYINT(1) UNSIGNED NOT NULL;
 
diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql
index 01d04af965f..877ce168b11 100644
--- a/SQL/tgstation_schema.sql
+++ b/SQL/tgstation_schema.sql
@@ -307,7 +307,7 @@ DROP TABLE IF EXISTS `messages`;
 /*!40101 SET character_set_client = utf8 */;
 CREATE TABLE `messages` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
-  `type` enum('memo','message','message sent','note','watchlist entry') NOT NULL,
+  `type` enum('memo','message','message sent','note','watchlist entry', 'eventmaker note') NOT NULL,
   `targetckey` varchar(32) NOT NULL,
   `adminckey` varchar(32) NOT NULL,
   `text` varchar(2048) NOT NULL,
diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql
index 99a4191172c..7c918b144db 100644
--- a/SQL/tgstation_schema_prefixed.sql
+++ b/SQL/tgstation_schema_prefixed.sql
@@ -305,7 +305,7 @@ DROP TABLE IF EXISTS `SS13_messages`;
 /*!40101 SET character_set_client = utf8 */;
 CREATE TABLE `SS13_messages` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
-  `type` enum('memo','message','message sent','note','watchlist entry') NOT NULL,
+  `type` enum('memo','message','message sent','note','watchlist entry', 'eventmaker note') NOT NULL,
   `targetckey` varchar(32) NOT NULL,
   `adminckey` varchar(32) NOT NULL,
   `text` varchar(2048) NOT NULL,
diff --git a/code/__DEFINES/speech_channels.dm b/code/__DEFINES/speech_channels.dm
index 9f1526ebd56..4e628dad0d5 100644
--- a/code/__DEFINES/speech_channels.dm
+++ b/code/__DEFINES/speech_channels.dm
@@ -4,3 +4,4 @@
 #define ME_CHANNEL "Me"
 #define OOC_CHANNEL "OOC"
 #define ADMIN_CHANNEL "Admin"
+#define EVENT_CHANNEL "Event" // TFF ADDITION - Eventmaker
diff --git a/code/__DEFINES/~ff_defines/_globalvars/lists/hidden_verbs.dm b/code/__DEFINES/~ff_defines/_globalvars/lists/hidden_verbs.dm
new file mode 100644
index 00000000000..9e4b6fa181d
--- /dev/null
+++ b/code/__DEFINES/~ff_defines/_globalvars/lists/hidden_verbs.dm
@@ -0,0 +1,15 @@
+GLOBAL_LIST_INIT(eventmakers_blacklist_verbs, list(
+		//Admin
+		"Add PB Bypass" = TRUE, "ASay" = TRUE, "Cross-server Help Request" = TRUE,
+		"Get Current Logs" = TRUE, "Get Server Logs" = TRUE, "Known Alts Panel" = TRUE,
+		"loudAsay" = TRUE, "Paintings manager" = TRUE, "Player Playtime" = TRUE, "Player Ticket History" = TRUE,
+		"Reload Admins" = TRUE, "Revoke PB Bypass" = TRUE, "Trophy Manager" = TRUE, "View Round Logs" = TRUE,
+		"Load Away Mission" = TRUE, "Mass Zombie Cure" = TRUE, "Mass Zombie Infection" = TRUE,
+		"Polymorph All" = TRUE, "Title Screen: Change" = TRUE, "Title Screen: Set HTML" = TRUE, "Title Screen: Set Notice" = TRUE,
+		"Show Lag Switches" = TRUE,
+		//Server
+		"Reestablish DB Connection" = TRUE, "Reset Player OOC Color" = TRUE, "Set Player OOC Color" = TRUE,
+		"Toggle Antag OOC" = TRUE, "Toggle CDN" = TRUE, "Toggle OOC" = TRUE, "Toggle Security OOC" = TRUE,
+		//Debug
+		"Debug Stat Panel" = TRUE, "Migrate Player Ranks" = TRUE, "Open LUA Editor" = TRUE, "Re-establish Connection To TTS" = TRUE, "Reload Configuration" = TRUE, "Run Empty Query" = TRUE, "View Runtime" = TRUE
+))
diff --git a/code/__DEFINES/~ff_defines/_globalvars/logging.dm b/code/__DEFINES/~ff_defines/_globalvars/logging.dm
new file mode 100644
index 00000000000..3dddcc20c13
--- /dev/null
+++ b/code/__DEFINES/~ff_defines/_globalvars/logging.dm
@@ -0,0 +1 @@
+#define LOG_CATEGORY_GAME_EVENTMAKER "game-eventmaker"
diff --git a/code/__DEFINES/~ff_defines/span.dm b/code/__DEFINES/~ff_defines/span.dm
new file mode 100644
index 00000000000..170453b8d49
--- /dev/null
+++ b/code/__DEFINES/~ff_defines/span.dm
@@ -0,0 +1 @@
+#define span_eventmaker(str) ("<span class='eventmaker'>" + str + "</span>")
diff --git a/code/__HELPERS/hearted.dm b/code/__HELPERS/hearted.dm
index d8f7832cbc0..5594a0f63f8 100644
--- a/code/__HELPERS/hearted.dm
+++ b/code/__HELPERS/hearted.dm
@@ -33,7 +33,7 @@
 			continue
 		hearted_mob.client.adjust_heart()
 		message += "[hearted_ckey][i == hearts.len ? "" : ", "]"
-	message_admins(message.Join())
+	message_admins(message.Join(), TRUE)
 
 /// Ask someone if they'd like to award a commendation for the round, 3 tries to get the name they want before we give up
 /mob/proc/query_heart(attempt=1)
diff --git a/code/controllers/subsystem/admin_verbs.dm b/code/controllers/subsystem/admin_verbs.dm
index 9496b95d998..f977c17dd6e 100644
--- a/code/controllers/subsystem/admin_verbs.dm
+++ b/code/controllers/subsystem/admin_verbs.dm
@@ -109,7 +109,6 @@ SUBSYSTEM_DEF(admin_verbs)
 	if(!admin.holder.check_for_rights(verb_singleton.permissions))
 		to_chat(admin, span_adminnotice("You lack the permissions to do this."))
 		return
-
 	var/old_usr = usr
 	usr = admin.mob
 	// THE MACRO ENSURES THIS EXISTS. IF IT EVER DOESNT EXIST SOMEONE DIDNT USE THE DAMN MACRO!
diff --git a/code/controllers/subsystem/stickyban.dm b/code/controllers/subsystem/stickyban.dm
index 757df6a2266..aecf0ca7c13 100644
--- a/code/controllers/subsystem/stickyban.dm
+++ b/code/controllers/subsystem/stickyban.dm
@@ -46,7 +46,7 @@ SUBSYSTEM_DEF(stickyban)
 
 		//get_stickyban_from_ckey returned null, aka something broke. Notify admins about it
 		if (!ban)
-			message_admins("Failed to apply stickyban for [bannedkey]. Check the DB for corrupt stickyban entries.")
+			message_admins("Failed to apply stickyban for [bannedkey]. Check the DB for corrupt stickyban entries.", TRUE)
 			log_admin_private ("Failed to apply stickyban for [bannedkey]. Check the DB for corrupt stickyban entries.")
 			continue
 
diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm
index 6945648a734..750362f5880 100644
--- a/code/datums/brain_damage/imaginary_friend.dm
+++ b/code/datums/brain_damage/imaginary_friend.dm
@@ -227,7 +227,12 @@
 	message = capitalize(message)
 
 	if(message_mods[RADIO_EXTENSION] == MODE_ADMIN)
-		SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_admin_say, message)
+		// TFF ADDITION START - Eventmaker
+		if(client.is_eventmaker())
+			SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_eventmaker_say, message)
+		else
+			// TFF ADDITION END
+			SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_admin_say, message)
 		return
 
 	if(message_mods[RADIO_EXTENSION] == MODE_DEADMIN)
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 5f40de037f4..963e85f1450 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -1,7 +1,14 @@
 ////////////////////////////////
-/proc/message_admins(msg)
+/proc/message_admins(msg, not_to_eventmaker) // TFF EDIT. ORIGINAL /proc/message_admins(msg)
 	msg = "<span class=\"admin\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[msg]</span></span>"
-	to_chat(GLOB.admins,
+// TFF CHANGE START - EVENTMAKERS
+	var/list/addressee = GLOB.admins.Copy()
+	if(not_to_eventmaker)
+		for(var/client/admin in GLOB.admins)
+			if(admin.is_eventmaker())
+				addressee -= admin
+// TFF CHANGE END
+	to_chat(addressee, // TFF EDIT. ORIGINAL GLOB.admins,
 		type = MESSAGE_TYPE_ADMINLOG,
 		html = msg,
 		confidential = TRUE)
diff --git a/code/modules/admin/known_alts.dm b/code/modules/admin/known_alts.dm
index 4105c7f4edc..268e72f727b 100644
--- a/code/modules/admin/known_alts.dm
+++ b/code/modules/admin/known_alts.dm
@@ -65,7 +65,7 @@ GLOBAL_DATUM_INIT(known_alts, /datum/known_alts, new)
 
 			if (query_add_known_alt.warn_execute())
 				var/message = "[key_name(usr)] has added a new known alt connection between [ckey1] and [ckey2]."
-				message_admins(message)
+				message_admins(message, TRUE)
 				log_admin_private(message)
 
 				cached_known_alts = null
@@ -115,7 +115,7 @@ GLOBAL_DATUM_INIT(known_alts, /datum/known_alts, new)
 
 			if (query_delete_known_alt.warn_execute())
 				var/message = "[key_name(usr)] has deleted the known alt connection between [result[1]] and [result[2]]."
-				message_admins(message)
+				message_admins(message, TRUE)
 				log_admin_private(message)
 
 				cached_known_alts = null
diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm
index 270907cb1ab..ef446f7c817 100644
--- a/code/modules/admin/sql_ban_system.dm
+++ b/code/modules/admin/sql_ban_system.dm
@@ -685,7 +685,7 @@
 	var/target = ban_target_string(player_key, player_ip, player_cid)
 	var/msg = "has created a [global_ban ? "global" : "local"] [isnull(duration) ? "permanent" : "temporary [time_message]"] [applies_to_admins ? "admin " : ""][is_server_ban ? "server ban" : "role ban from [roles_to_ban.len] roles"] for [target]." // NOVA EDIT CHANGE - MULTISERVER
 	log_admin_private("[kn] [msg][is_server_ban ? "" : " Roles: [roles_to_ban.Join(", ")]"] Reason: [reason]")
-	message_admins("[kna] [msg][is_server_ban ? "" : " Roles: [roles_to_ban.Join("\n")]"]\nReason: [reason]")
+	message_admins("[kna] [msg][is_server_ban ? "" : " Roles: [roles_to_ban.Join("\n")]"]\nReason: [reason]", TRUE)
 	if(applies_to_admins)
 		send2adminchat("BAN ALERT","[kn] [msg]")
 	if(player_ckey)
@@ -885,7 +885,7 @@
 		return
 	qdel(query_unban)
 	log_admin_private("[kn] has unbanned [target] from [role].")
-	message_admins("[kna] has unbanned [target] from [role].")
+	message_admins("[kna] has unbanned [target] from [role].", TRUE)
 	var/client/C = GLOB.directory[player_key]
 	if(C)
 		build_ban_cache(C)
@@ -930,7 +930,7 @@
 		return
 	qdel(query_reban)
 	log_admin_private("[kn] has rebanned [target] from [role].")
-	message_admins("[kna] has rebanned [target] from [role].")
+	message_admins("[kna] has rebanned [target] from [role].", TRUE)
 
 	var/banned_player_message = span_boldannounce("[usr.client.key] has re-activated a removed ban from [role] for your key.")
 	var/banned_other_message = span_boldannounce("[usr.client.key] has re-activated a removed ban from [role] for your IP or CID.")
@@ -1041,7 +1041,7 @@
 	var/kn = key_name(usr)
 	var/kna = key_name_admin(usr)
 	log_admin_private("[kn] has edited the [changes_keys_text] of a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"].") //if a ban doesn't have a key it must have an ip and/or a cid to have reached this point normally
-	message_admins("[kna] has edited the [changes_keys_text] of a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"].")
+	message_admins("[kna] has edited the [changes_keys_text] of a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"].", TRUE)
 	if(changes["Applies to admins"])
 		send2adminchat("BAN ALERT","[kn] has edited a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"] to [applies_to_admins ? "" : "not"]affect admins")
 
diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm
index c44853646e3..52bebfd72d7 100644
--- a/code/modules/admin/sql_message_system.dm
+++ b/code/modules/admin/sql_message_system.dm
@@ -5,7 +5,7 @@
 	if(!type)
 		return
 	var/target_ckey = ckey(target_key)
-	if(!target_key && (type == "note" || type == "message" || type == "watchlist entry"))
+	if(!target_key && (type == "note" || type == "message" || type == "watchlist entry" || type == "eventmaker note")) // TFF EDIT - Eventmaker
 		var/new_key = input(usr,"Who would you like to create a [type] for?","Enter a key or ckey",null) as null|text
 		if(!new_key)
 			return
@@ -102,7 +102,7 @@
 	qdel(query_create_message)
 	if(logged)
 		log_admin_private(pm)
-		message_admins("[header]:<br>[text]")
+		message_admins("[header]:<br>[text]", TRUE)
 		admin_ticket_log(target_ckey, "<font color='blue'>[header]</font><br>[text]")
 		if(browse)
 			browse_messages("[type]")
@@ -146,7 +146,7 @@
 		var/m1 = "[user_key_name] has deleted a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for" : " made by"] [target_key]: [text]"
 		var/m2 = "[user_name_admin] has deleted a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for" : " made by"] [target_key]:<br>[text]"
 		log_admin_private(m1)
-		message_admins(m2)
+		message_admins(m2, TRUE)
 		if(browse)
 			browse_messages("[type]")
 		else
@@ -195,7 +195,7 @@
 			return
 		qdel(query_edit_message)
 		log_admin_private("[kn] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""] made by [admin_key] from [old_text] to [new_text]")
-		message_admins("[kna] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""] made by [admin_key] from<br>[old_text]<br>to<br>[new_text]")
+		message_admins("[kna] has edited a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""] made by [admin_key] from<br>[old_text]<br>to<br>[new_text]", TRUE)
 		if(browse)
 			browse_messages("[type]")
 		else
@@ -266,7 +266,7 @@
 			return
 		qdel(query_edit_message_expiry)
 		log_admin_private("[kn] has edited the expiration time of a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""] made by [admin_key] from [(old_expiry ? old_expiry : "no expiration date")] to [new_expiry]")
-		message_admins("[kna] has edited the expiration time of a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""] made by [admin_key] from [(old_expiry ? old_expiry : "no expiration date")] to [new_expiry]")
+		message_admins("[kna] has edited the expiration time of a [type] [(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""] made by [admin_key] from [(old_expiry ? old_expiry : "no expiration date")] to [new_expiry]", TRUE)
 		if(browse)
 			browse_messages("[type]")
 		else
@@ -320,7 +320,7 @@
 			return
 		qdel(query_edit_note_severity)
 		log_admin_private("[kn] has edited the severity of a [type] for [target_key] made by [admin_key] from [old_severity] to [new_severity]")
-		message_admins("[kna] has edited the severity time of a [type] for [target_key] made by [admin_key] from [old_severity] to [new_severity]")
+		message_admins("[kna] has edited the severity time of a [type] for [target_key] made by [admin_key] from [old_severity] to [new_severity]", TRUE)
 		browse_messages(target_ckey = ckey(target_key), agegate = TRUE)
 	qdel(query_find_edit_note_severity)
 
@@ -364,7 +364,7 @@
 			return
 		qdel(query_message_secret)
 		log_admin_private("[kn] has toggled [target_key]'s [type] made by [admin_key] to [secret ? "not secret" : "secret"]")
-		message_admins("[kna] has toggled [target_key]'s [type] made by [admin_key] to [secret ? "not secret" : "secret"]")
+		message_admins("[kna] has toggled [target_key]'s [type] made by [admin_key] to [secret ? "not secret" : "secret"]", TRUE)
 		browse_messages(target_ckey = ckey(target_key), agegate = TRUE)
 	qdel(query_find_message_secret)
 
@@ -381,7 +381,8 @@
 	var/list/navbar = list("<a href='?_src_=holder;[HrefToken()];nonalpha=1'>All</a><a href='?_src_=holder;[HrefToken()];nonalpha=2'>#</a>")
 	for(var/letter in GLOB.alphabet)
 		navbar += "<a href='?_src_=holder;[HrefToken()];showmessages=[letter]'>[letter]</a>"
-	navbar += "<a href='?_src_=holder;[HrefToken()];showmemo=1'>Memos</a><a href='?_src_=holder;[HrefToken()];showwatch=1'>Watchlist</a>"
+	if(!usr?.client.is_eventmaker()) // TFF ADDITION - Eventmaker
+		navbar += "<a href='?_src_=holder;[HrefToken()];showmemo=1'>Memos</a><a href='?_src_=holder;[HrefToken()];showwatch=1'>Watchlist</a>"
 	navbar += "<br><form method='GET' name='search' action='?'>\
 	<input type='hidden' name='_src_' value='holder'>\
 	[HrefTokenFormField()]\
@@ -438,6 +439,10 @@
 			var/playtime = query_get_type_messages.item[11]
 			var/round_id = query_get_type_messages.item[12] // NOVA EDIT CHANGE END - MULTISERVER
 			output += "<b>"
+			// TFF ADDITION START - Eventmaker
+			if(type != "eventmaker note" && usr?.client.is_eventmaker())
+				continue
+			// TFF ADDITION END
 			if(type == "watchlist entry")
 				output += "[t_key] | "
 			output += "[timestamp] | [server] | Round [round_id] | [admin_key]"
@@ -482,6 +487,10 @@
 		var/list/messagedata = list()
 		var/list/watchdata = list()
 		var/list/notedata = list()
+		// TFF ADDITION START - Eventmaker
+		var/list/rating = 5 // Изначальный рейтинг пользователя, далее его.. понижают нотесы с тяжестью.
+		var/list/eventnotedata = list() // Храним в себе нотесы ивентеров
+		// TFF ADDITION END
 		var/skipped = 0
 		while(query_get_messages.NextRow())
 			if(QDELETED(usr))
@@ -519,6 +528,15 @@
 					alphatext = "filter: alpha(opacity=[alpha]); opacity: [alpha/100];"
 			var/list/data = list("<div style='margin:0px;[alphatext]'><p class='severity'>")
 			if(severity)
+				// TFF ADDITION START - Eventmaker
+				switch(severity)
+					if("high")
+						rating -= 0.4
+					if("medium")
+						rating -= 0.2
+					if("minor")
+						rating -= 0.1
+				// TFF ADDITION END
 				data += "<img src='[SSassets.transport.get_asset_url("[severity]_button.png")]' height='24' width='24'></img> "
 			data += "<b>[timestamp] | [server] | Round [round_id] | [admin_key][secret ? " | <i>- Secret</i>" : ""] | [get_exp_format(text2num(playtime))] Living Playtime"
 			if(expire_timestamp)
@@ -553,6 +571,10 @@
 					watchdata += data
 				if("note")
 					notedata += data
+				// TFF ADDITION START - Eventmaker
+				if("eventmaker note")
+					eventnotedata += data
+				// TFF ADDITION END
 		qdel(query_get_messages)
 		if(!target_key)
 			var/datum/db_query/query_get_message_key = SSdbcore.NewQuery({"
@@ -565,21 +587,24 @@
 				target_key = query_get_message_key.item[1]
 			qdel(query_get_message_key)
 		output += "<h2><center>[target_key]</center></h2><center>"
+		output += "<h3>Player Rating: <font color ='[rating > 4 ? COLOR_GREEN : rating > 2 ? COLOR_ORANGE : COLOR_RED]'>[rating > -1 ? rating : 0]</font></h3>" // TFF ADDITION - Eventmaker
 		if(!linkless)
-			output += "<a href='?_src_=holder;[HrefToken()];addnote=[target_key]'>Add note</a>"
-			output += " <a href='?_src_=holder;[HrefToken()];addmessage=[target_key]'>Add message</a>"
-			output += " <a href='?_src_=holder;[HrefToken()];addwatch=[target_key]'>Add to watchlist</a>"
+			if(!usr?.client.is_eventmaker()) // TFF ADDITION - Eventmaker
+				output += "<a href='?_src_=holder;[HrefToken()];addnote=[target_key]'>Add note</a>"
+				output += " <a href='?_src_=holder;[HrefToken()];addmessage=[target_key]'>Add message</a>"
+				output += " <a href='?_src_=holder;[HrefToken()];addwatch=[target_key]'>Add to watchlist</a>"
+			output += " <a href='?_src_=holder;[HrefToken()];addeventnote=[target_key]'>Add event note</a>" // TFF ADDITION - Eventmaker
 			output += " <a href='?_src_=holder;[HrefToken()];showmessageckey=[target_ckey]'>Refresh page</a></center>"
 		else
 			output += " <a href='?_src_=holder;[HrefToken()];showmessageckeylinkless=[target_ckey]'>Refresh page</a></center>"
 		output += ruler
-		if(messagedata)
+		if(messagedata && !usr?.client.is_eventmaker())// TFF ADDITION - Eventmaker
 			output += "<h2>Messages</h2>"
 			output += messagedata
-		if(watchdata)
+		if(watchdata && !usr?.client.is_eventmaker())// TFF ADDITION - Eventmaker
 			output += "<h2>Watchlist</h2>"
 			output += watchdata
-		if(notedata)
+		if(notedata && !usr?.client.is_eventmaker())// TFF ADDITION - Eventmaker
 			output += "<h2>Notes</h2>"
 			output += notedata
 			if(!linkless)
@@ -590,9 +615,15 @@
 						output += "<center><a href='?_src_=holder;[HrefToken()];showmessageckey=[target_ckey];showall=1'>Show All</a></center>"
 				else
 					output += "<center><a href='?_src_=holder;[HrefToken()];showmessageckey=[target_ckey]'>Hide Old</a></center>"
+		// TFF ADDITION START - Eventmaker
+		if(eventnotedata)
+			output += "<h2>Event Notes</h2>"
+			output += eventnotedata
+		// TFF ADDITION END
 	if(index)
 		var/search
-		output += "<center><a href='?_src_=holder;[HrefToken()];addmessageempty=1'>Add message</a><a href='?_src_=holder;[HrefToken()];addwatchempty=1'>Add watchlist entry</a><a href='?_src_=holder;[HrefToken()];addnoteempty=1'>Add note</a></center>"
+		if(!usr?.client.is_eventmaker()) // TFF ADDITION - Eventmaker
+			output += "<center><a href='?_src_=holder;[HrefToken()];addmessageempty=1'>Add message</a><a href='?_src_=holder;[HrefToken()];addwatchempty=1'>Add watchlist entry</a><a href='?_src_=holder;[HrefToken()];addnoteempty=1'>Add note</a></center>"
 		output += ruler
 		switch(index)
 			if(1)
@@ -624,7 +655,7 @@
 				index_key = index_ckey
 			output += "<a href='?_src_=holder;[HrefToken()];showmessageckey=[index_ckey]'>[index_key]</a><br>"
 		qdel(query_list_messages)
-	else if(!type && !target_ckey && !index)
+	else if(!type && !target_ckey && !index && !usr?.client.is_eventmaker()) // TFF EDIT - Eventmaker
 		output += "<center><a href='?_src_=holder;[HrefToken()];addmessageempty=1'>Add message</a><a href='?_src_=holder;[HrefToken()];addwatchempty=1'>Add watchlist entry</a><a href='?_src_=holder;[HrefToken()];addnoteempty=1'>Add note</a></center>"
 		output += ruler
 	var/datum/browser/browser = new(usr, "Note panel", "Manage player notes", 1000, 500)
@@ -717,7 +748,7 @@
 
 /proc/scream_about_watchlists(client/read_from)
 	for(var/datum/admin_message/message in get_message_output("watchlist entry", read_from.ckey))
-		message_admins("<font color='[COLOR_RED]'><B>Notice: </B></font><font color='[COLOR_ADMIN_PINK]'>[key_name_admin(read_from.ckey)] has been on the watchlist since [message.timestamp] and has just connected - Reason: [message.text]</font>")
+		message_admins("<font color='[COLOR_RED]'><B>Notice: </B></font><font color='[COLOR_ADMIN_PINK]'>[key_name_admin(read_from.ckey)] has been on the watchlist since [message.timestamp] and has just connected - Reason: [message.text]</font>", TRUE)
 		send2tgs_adminless_only("Watchlist", "[key_name(read_from.ckey)] is on the watchlist and has just connected - Reason: [message.text]")
 
 #define NOTESFILE "data/player_notes.sav"
diff --git a/code/modules/admin/stickyban.dm b/code/modules/admin/stickyban.dm
index fede9724ab1..af6a477e2af 100644
--- a/code/modules/admin/stickyban.dm
+++ b/code/modules/admin/stickyban.dm
@@ -50,7 +50,7 @@
 			SSstickyban.cache[ckey] = ban
 
 			log_admin_private("[key_name(usr)] has stickybanned [ckey].\nReason: [ban["message"]]")
-			message_admins(span_adminnotice("[key_name_admin(usr)] has stickybanned [ckey].\nReason: [ban["message"]]"))
+			message_admins(span_adminnotice("[key_name_admin(usr)] has stickybanned [ckey].\nReason: [ban["message"]]"), TRUE)
 
 		if ("remove")
 			if (!data["ckey"])
@@ -79,7 +79,7 @@
 
 
 			log_admin_private("[key_name(usr)] removed [ckey]'s stickyban")
-			message_admins(span_adminnotice("[key_name_admin(usr)] removed [ckey]'s stickyban"))
+			message_admins(span_adminnotice("[key_name_admin(usr)] removed [ckey]'s stickyban"), TRUE)
 
 		if ("remove_alt")
 			if (!data["ckey"])
@@ -127,7 +127,7 @@
 				qdel(query_remove_stickyban_alt)
 
 			log_admin_private("[key_name(usr)] has disassociated [alt] from [ckey]'s sticky ban")
-			message_admins(span_adminnotice("[key_name_admin(usr)] has disassociated [alt] from [ckey]'s sticky ban"))
+			message_admins(span_adminnotice("[key_name_admin(usr)] has disassociated [alt] from [ckey]'s sticky ban"), TRUE)
 
 		if ("edit")
 			if (!data["ckey"])
@@ -161,7 +161,7 @@
 				qdel(query_edit_stickyban)
 
 			log_admin_private("[key_name(usr)] has edited [ckey]'s sticky ban reason from [oldreason] to [reason]")
-			message_admins(span_adminnotice("[key_name_admin(usr)] has edited [ckey]'s sticky ban reason from [oldreason] to [reason]"))
+			message_admins(span_adminnotice("[key_name_admin(usr)] has edited [ckey]'s sticky ban reason from [oldreason] to [reason]"), TRUE)
 
 		if ("exempt")
 			if (!data["ckey"])
@@ -211,7 +211,7 @@
 				qdel(query_exempt_stickyban_alt)
 
 			log_admin_private("[key_name(usr)] has exempted [alt] from [ckey]'s sticky ban")
-			message_admins(span_adminnotice("[key_name_admin(usr)] has exempted [alt] from [ckey]'s sticky ban"))
+			message_admins(span_adminnotice("[key_name_admin(usr)] has exempted [alt] from [ckey]'s sticky ban"), TRUE)
 
 		if ("unexempt")
 			if (!data["ckey"])
@@ -261,7 +261,7 @@
 				qdel(query_unexempt_stickyban_alt)
 
 			log_admin_private("[key_name(usr)] has unexempted [alt] from [ckey]'s sticky ban")
-			message_admins(span_adminnotice("[key_name_admin(usr)] has unexempted [alt] from [ckey]'s sticky ban"))
+			message_admins(span_adminnotice("[key_name_admin(usr)] has unexempted [alt] from [ckey]'s sticky ban"), TRUE)
 
 		if ("timeout")
 			if (!data["ckey"])
@@ -288,7 +288,7 @@
 				cachedban["timeout"] = TRUE
 
 			log_admin_private("[key_name(usr)] has put [ckey]'s sticky ban on timeout.")
-			message_admins(span_adminnotice("[key_name_admin(usr)] has put [ckey]'s sticky ban on timeout."))
+			message_admins(span_adminnotice("[key_name_admin(usr)] has put [ckey]'s sticky ban on timeout."), TRUE)
 
 		if ("untimeout")
 			if (!data["ckey"])
@@ -316,7 +316,7 @@
 			world.SetConfig("ban",ckey,list2stickyban(ban))
 
 			log_admin_private("[key_name(usr)] has taken [ckey]'s sticky ban off of timeout.")
-			message_admins(span_adminnotice("[key_name_admin(usr)] has taken [ckey]'s sticky ban off of timeout."))
+			message_admins(span_adminnotice("[key_name_admin(usr)] has taken [ckey]'s sticky ban off of timeout."), TRUE)
 
 
 		if ("revert")
@@ -335,7 +335,7 @@
 			world.SetConfig("ban",ckey,null)
 
 			log_admin_private("[key_name(usr)] has reverted [ckey]'s sticky ban to its state at round start.")
-			message_admins(span_adminnotice("[key_name_admin(usr)] has reverted [ckey]'s sticky ban to its state at round start."))
+			message_admins(span_adminnotice("[key_name_admin(usr)] has reverted [ckey]'s sticky ban to its state at round start."), TRUE)
 			//revert is mostly used when shit goes rouge, so we have to set it to null
 			// and wait a byond tick before assigning it to ensure byond clears its shit.
 			sleep(world.tick_lag)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 4cca6441d9c..fa8e9fead62 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -282,6 +282,13 @@
 			return
 		var/target_key = href_list["addwatch"]
 		create_message("watchlist entry", target_key, secret = 1)
+	// TFF ADDITION START - Eventmaker
+	else if(href_list["addeventnote"])
+		if(!check_rights(R_ADMIN))
+			return
+		var/target_key = href_list["addeventnote"]
+		create_message("eventmaker note", target_key, secret = 1)
+	// TFF ADDITION END
 
 	else if(href_list["addmemo"])
 		if(!check_rights(R_ADMIN))
diff --git a/code/modules/admin/verbs/admingame.dm b/code/modules/admin/verbs/admingame.dm
index 76d814e8ee0..97957ec1adc 100644
--- a/code/modules/admin/verbs/admingame.dm
+++ b/code/modules/admin/verbs/admingame.dm
@@ -24,7 +24,7 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(show_player_panel, R_ADMIN, "Show Player Panel", mo
 	if(player.ckey)
 		body += "<br>\[<A href='?_src_=holder;[HrefToken()];ppbyckey=[player.ckey];ppbyckeyorigmob=[REF(player)]'>Find Updated Panel</A>\]"
 
-	if(player.client)
+	if(player.client && !user.is_eventmaker()) // TFF EDIT - Eventmaker
 		body += "<br>\[<b>First Seen:</b> [player.client.player_join_date]\]\[<b>Byond account registered on:</b> [player.client.account_join_date]\]"
 		// NOVA EDIT ADDITION START - Player Ranks
 		var/list/player_ranks = list()
@@ -84,30 +84,31 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(show_player_panel, R_ADMIN, "Show Player Panel", mo
 		else
 			body += "<i>None?!</i>"
 		body += "<br><br>"
-
-	body += "<A href='?_src_=holder;[HrefToken()];boot2=[REF(player)]'>Kick</A> | "
-	if(player.client)
-		body += "<A href='?_src_=holder;[HrefToken()];newbankey=[player.key];newbanip=[player.client.address];newbancid=[player.client.computer_id]'>Ban</A> | "
-	else
-		body += "<A href='?_src_=holder;[HrefToken()];newbankey=[player.key]'>Ban</A> | "
+	if(!user.is_eventmaker()) // TFF ADDITION - Eventmaker
+		body += "<A href='?_src_=holder;[HrefToken()];boot2=[REF(player)]'>Kick</A> | "
+		if(player.client)
+			body += "<A href='?_src_=holder;[HrefToken()];newbankey=[player.key];newbanip=[player.client.address];newbancid=[player.client.computer_id]'>Ban</A> | "
+		else
+			body += "<A href='?_src_=holder;[HrefToken()];newbankey=[player.key]'>Ban</A> | "
 
 	body += "<A href='?_src_=holder;[HrefToken()];showmessageckey=[player.ckey]'>Notes | Messages | Watchlist</A> | "
 	if(player.client)
 		body += "| <A href='?_src_=holder;[HrefToken()];sendtoprison=[REF(player)]'>Prison</A> | "
 		body += "\ <A href='?_src_=holder;[HrefToken()];sendbacktolobby=[REF(player)]'>Send back to Lobby</A> | "
 		var/muted = player.client.prefs.muted
-		body += "<br><b>Mute: </b> "
-		body += "\[<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_IC]'><font color='[(muted & MUTE_IC)?"red":"blue"]'>IC</font></a> | "
-		body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_OOC]'><font color='[(muted & MUTE_OOC)?"red":"blue"]'>OOC</font></a> | "
-		body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_PRAY]'><font color='[(muted & MUTE_PRAY)?"red":"blue"]'>PRAY</font></a> | "
-		body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_ADMINHELP]'><font color='[(muted & MUTE_ADMINHELP)?"red":"blue"]'>ADMINHELP</font></a> | "
-		//Nova Edit Addition Begin - LOOC muting again.
-		body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_DEADCHAT]'><font color='[(muted & MUTE_DEADCHAT)?"red":"blue"]'>DEADCHAT</font></a> | "
-		body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_LOOC]'><font color='[(muted & MUTE_LOOC)?"red":"blue"]'>LOOC</font></a>\]"
-		//Nova Edit Addition End - LOOC muting again.
-		body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_INTERNET_REQUEST]'><font color='[(muted & MUTE_INTERNET_REQUEST)?"red":"blue"]'>WEBREQ</font></a> | "
-		body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_DEADCHAT]'><font color='[(muted & MUTE_DEADCHAT)?"red":"blue"]'>DEADCHAT</font></a>\]"
-		body += "(<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_ALL]'><font color='[(muted & MUTE_ALL)?"red":"blue"]'>toggle all</font></a>)"
+		if(!user.is_eventmaker()) // TFF ADDITION - Eventmaker
+			body += "<br><b>Mute: </b> "
+			body += "\[<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_IC]'><font color='[(muted & MUTE_IC)?"red":"blue"]'>IC</font></a> | "
+			body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_OOC]'><font color='[(muted & MUTE_OOC)?"red":"blue"]'>OOC</font></a> | "
+			body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_PRAY]'><font color='[(muted & MUTE_PRAY)?"red":"blue"]'>PRAY</font></a> | "
+			body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_ADMINHELP]'><font color='[(muted & MUTE_ADMINHELP)?"red":"blue"]'>ADMINHELP</font></a> | "
+			//Nova Edit Addition Begin - LOOC muting again.
+			body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_DEADCHAT]'><font color='[(muted & MUTE_DEADCHAT)?"red":"blue"]'>DEADCHAT</font></a> | "
+			body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_LOOC]'><font color='[(muted & MUTE_LOOC)?"red":"blue"]'>LOOC</font></a>\]"
+			//Nova Edit Addition End - LOOC muting again.
+			body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_INTERNET_REQUEST]'><font color='[(muted & MUTE_INTERNET_REQUEST)?"red":"blue"]'>WEBREQ</font></a> | "
+			body += "<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_DEADCHAT]'><font color='[(muted & MUTE_DEADCHAT)?"red":"blue"]'>DEADCHAT</font></a>\]"
+			body += "(<A href='?_src_=holder;[HrefToken()];mute=[player.ckey];mute_type=[MUTE_ALL]'><font color='[(muted & MUTE_ALL)?"red":"blue"]'>toggle all</font></a>)"
 
 	body += "<br><br>"
 	body += "<A href='?_src_=holder;[HrefToken()];jumpto=[REF(player)]'><b>Jump to</b></A> | "
diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm
index b988104dd23..60a6fd0f6bc 100644
--- a/code/modules/admin/verbs/adminsay.dm
+++ b/code/modules/admin/verbs/adminsay.dm
@@ -1,6 +1,6 @@
 ADMIN_VERB(cmd_admin_say, R_NONE, "ASay", "Send a message to other admins", ADMIN_CATEGORY_MAIN, message as text)
 	message = emoji_parse(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN))
-	if(!message)
+	if(!message || user.is_eventmaker()) // TFF EDIT - Eventmaker
 		return
 
 	if(findtext(message, "@") || findtext(message, "#"))
@@ -22,7 +22,12 @@ ADMIN_VERB(cmd_admin_say, R_NONE, "ASay", "Send a message to other admins", ADMI
 	var/asay_color = user.prefs.read_preference(/datum/preference/color/asay_color)
 	var/custom_asay_color = (CONFIG_GET(flag/allow_admin_asaycolor) && asay_color) ? "<font color=[asay_color]>" : "<font color='[DEFAULT_ASAY_COLOR]'>"
 	message = "[span_adminsay("[span_prefix("ADMIN:")] <EM>[key_name_admin(user)]</EM> [ADMIN_FLW(user.mob)]: [custom_asay_color]<span class='message linkify'>[message]")]</span>[custom_asay_color ? "</font>":null]"
-	to_chat(GLOB.admins,
+	var/addressee = GLOB.admins.Copy()
+	for(var/client/admin in addressee)
+		if(admin.is_eventmaker())
+			addressee -= admin
+
+	to_chat(addressee,
 		type = MESSAGE_TYPE_ADMINCHAT,
 		html = message,
 		confidential = TRUE)
diff --git a/code/modules/admin/verbs/maprotation.dm b/code/modules/admin/verbs/maprotation.dm
index 38d7535758f..e251c034176 100644
--- a/code/modules/admin/verbs/maprotation.dm
+++ b/code/modules/admin/verbs/maprotation.dm
@@ -1,4 +1,4 @@
-ADMIN_VERB(admin_change_map, R_SERVER, "Change Map", "Set the next map.", ADMIN_CATEGORY_SERVER)
+ADMIN_VERB(admin_change_map, R_DEBUG, "Change Map", "Set the next map.", ADMIN_CATEGORY_SERVER) // TFF EDIT. ORIGINAL - ADMIN_VERB(admin_change_map, R_SERVER, "Change Map", "Set the next map.", ADMIN_CATEGORY_SERVER)
 	var/list/maprotatechoices = list()
 	for (var/map in config.maplist)
 		var/datum/map_config/virtual_map = config.maplist[map]
diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm
index 368f6f4d6f4..c9779652fd1 100644
--- a/code/modules/admin/verbs/secrets.dm
+++ b/code/modules/admin/verbs/secrets.dm
@@ -9,6 +9,7 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
 	var/client/holder //client of whoever is using this datum
 	var/is_debugger = FALSE
 	var/is_funmin = FALSE
+	var/is_eventmaker_admin = FALSE // TFF EDIT - Eventmaker
 
 /datum/secrets_menu/New(user)//user can either be a client or a mob due to byondcode(tm)
 	if (istype(user, /client))
@@ -20,6 +21,8 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
 
 	is_debugger = check_rights(R_DEBUG)
 	is_funmin = check_rights(R_FUN)
+	is_eventmaker_admin = holder.is_eventmaker() // TFF EDIT - Eventmaker
+	world.log << is_eventmaker_admin // TFF EDIT - Eventmaker
 
 /datum/secrets_menu/ui_state(mob/user)
 	return GLOB.admin_state
@@ -37,6 +40,7 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
 	var/list/data = list()
 	data["is_debugger"] = is_debugger
 	data["is_funmin"] = is_funmin
+	data["is_eventmaker"] = is_eventmaker_admin // TFF EDIT - Eventmaker
 	return data
 
 #define THUNDERDOME_TEMPLATE_FILE "admin_thunderdome.dmm"
diff --git a/code/modules/admin/verbs/server.dm b/code/modules/admin/verbs/server.dm
index b5891686119..04cdffd5dea 100644
--- a/code/modules/admin/verbs/server.dm
+++ b/code/modules/admin/verbs/server.dm
@@ -66,7 +66,7 @@ ADMIN_VERB(restart, R_SERVER, "Reboot World", "Restarts the world immediately.",
 #undef HARDEST_RESTART
 #undef TGS_RESTART
 
-ADMIN_VERB(end_round, R_SERVER, "End Round", "Forcibly ends the round and allows the server to restart normally.", ADMIN_CATEGORY_SERVER)
+ADMIN_VERB(end_round, R_DEBUG, "End Round", "Forcibly ends the round and allows the server to restart normally.", ADMIN_CATEGORY_SERVER) // TFF CHANGE. OROGINAL - ADMIN_VERB(end_round, R_DEBUG, "End Round", "Forcibly ends the round and allows the server to restart normally.", ADMIN_CATEGORY_SERVER)
 	var/confirm = tgui_alert(user, "End the round and  restart the game world?", "End Round", list("Yes", "Cancel"))
 	if(confirm != "Yes")
 		return
@@ -88,7 +88,7 @@ ADMIN_VERB(toggle_ooc_dead, R_ADMIN, "Toggle Dead OOC", "Toggle the OOC channel
 ADMIN_VERB(toggle_vote_dead, R_ADMIN, "Toggle Dead Vote", "Toggle the vote for dead players on or off.", ADMIN_CATEGORY_SERVER)
 	SSvote.toggle_dead_voting(user)
 
-ADMIN_VERB(start_now, R_SERVER, "Start Now", "Start the round RIGHT NOW.", ADMIN_CATEGORY_SERVER)
+ADMIN_VERB(start_now, R_DEBUG, "Start Now", "Start the round RIGHT NOW.", ADMIN_CATEGORY_SERVER) // TFF CHANGE. ORGINAL - ADMIN_VERB(start_now, R_SERVER, "Start Now", "Start the round RIGHT NOW.", ADMIN_CATEGORY_SERVER)
 	var/static/list/waiting_states = list(GAME_STATE_PREGAME, GAME_STATE_STARTUP)
 	if(!(SSticker.current_state in waiting_states))
 		to_chat(user, span_warning(span_red("The game has already started!")))
@@ -192,7 +192,7 @@ ADMIN_VERB(toggle_respawn, R_SERVER, "Toggle Respawn", "Toggle the ability to re
 	world.update_status()
 	SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Respawn", "[new_state_text]")) // If you are copy-pasting this, ensure the 4th parameter is unique to the new proc!
 
-ADMIN_VERB(delay, R_SERVER, "Delay Pre-Game", "Delay the game start.", ADMIN_CATEGORY_SERVER)
+ADMIN_VERB(delay, R_DEBUG, "Delay Pre-Game", "Delay the game start.", ADMIN_CATEGORY_SERVER) // TFF CHANGE. ORIGINAL - ADMIN_VERB(delay, R_SERVER, "Delay Pre-Game", "Delay the game start.", ADMIN_CATEGORY_SERVER)
 	var/newtime = input(user, "Set a new time in seconds. Set -1 for indefinite delay.", "Set Delay", round(SSticker.GetTimeLeft()/10)) as num|null
 	if(!newtime)
 		return
diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm
index 4fde1e30d1a..443e08d05d8 100644
--- a/code/modules/admin/view_variables/topic.dm
+++ b/code/modules/admin/view_variables/topic.dm
@@ -1,7 +1,7 @@
 //DO NOT ADD MORE TO THIS FILE.
 //Use vv_do_topic() for datums!
 /client/proc/view_var_Topic(href, href_list, hsrc)
-	if( (usr.client != src) || !src.holder || !holder.CheckAdminHref(href, href_list))
+	if( (usr.client != src) || !src.holder || (!holder.CheckAdminHref(href, href_list) && !is_eventmaker())) // TFF EDIT - Eventmaker
 		return
 	var/target = GET_VV_TARGET
 	vv_do_basic(target, href_list, href)
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index 08e98bb2af3..af30bbd2771 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -65,7 +65,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
 				topiclimiter[ADMINSWARNED_AT] = minute
 				msg += " Administrators have been informed."
 				log_game("[key_name(src)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute")
-				message_admins("[ADMIN_LOOKUPFLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute")
+				message_admins("[ADMIN_LOOKUPFLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute", TRUE)
 			to_chat(src, span_danger("[msg]"))
 			return
 
@@ -324,10 +324,10 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
 
 			if(matches)
 				if(C)
-					message_admins(span_danger("<B>[message_type]: </B></span><span class='notice'>Connecting player [key_name_admin(src)] has the same [matches] as [key_name_admin(C)]<b>[in_round]</b>."))
+					message_admins(span_danger("<B>[message_type]: </B></span><span class='notice'>Connecting player [key_name_admin(src)] has the same [matches] as [key_name_admin(C)]<b>[in_round]</b>."), TRUE)
 					log_admin_private("[message_type]: Connecting player [key_name(src)] has the same [matches] as [key_name(C)][in_round].")
 				else
-					message_admins(span_danger("<B>[message_type]: </B></span><span class='notice'>Connecting player [key_name_admin(src)] has the same [matches] as [joined_player_ckey](no longer logged in)<b>[in_round]</b>. "))
+					message_admins(span_danger("<B>[message_type]: </B></span><span class='notice'>Connecting player [key_name_admin(src)] has the same [matches] as [joined_player_ckey](no longer logged in)<b>[in_round]</b>. "), TRUE)
 					log_admin_private("[message_type]: Connecting player [key_name(src)] has the same [matches] as [joined_player_ckey](no longer logged in)[in_round].")
 	var/reconnecting = FALSE
 	if(GLOB.player_details[ckey])
@@ -422,7 +422,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
 		var/dupe_login_message = "Your ComputerID has already logged in with another key this round, please log out of this one NOW or risk being banned!"
 		if (alert_admin_multikey)
 			dupe_login_message += "\nAdmins have been informed."
-			message_admins(span_danger("<B>MULTIKEYING: </B></span><span class='notice'>[key_name_admin(src)] has a matching CID+IP with another player and is clearly multikeying. They have been warned to leave the server or risk getting banned."))
+			message_admins(span_danger("<B>MULTIKEYING: </B></span><span class='notice'>[key_name_admin(src)] has a matching CID+IP with another player and is clearly multikeying. They have been warned to leave the server or risk getting banned."), TRUE)
 			log_admin_private("MULTIKEYING: [key_name(src)] has a matching CID+IP with another player and is clearly multikeying. They have been warned to leave the server or risk getting banned.")
 		spawn(0.5 SECONDS) //needs to run during world init, do not convert to add timer
 			alert(mob, dupe_login_message) //players get banned if they don't see this message, do not convert to tgui_alert (or even tg_alert) please.
@@ -507,7 +507,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
 	if (isnum(cached_player_age) && cached_player_age == -1) //first connection
 		if (nnpa >= 0)
 			log_admin_private("New login: [key_name(key, FALSE, TRUE)] (IP: [address], ID: [computer_id]) logged onto the servers for the first time.")
-			message_admins("New user: [key_name_admin(src)] is connecting here for the first time.")
+			message_admins("New user: [key_name_admin(src)] is connecting here for the first time.", TRUE)
 			if (CONFIG_GET(flag/irc_first_connection_alert))
 				var/new_player_alert_role = CONFIG_GET(string/new_player_alert_role_id)
 				send2tgs_adminless_only(
@@ -515,11 +515,11 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
 					"[key_name(src)] is connecting for the first time![new_player_alert_role ? " <@&[new_player_alert_role]>" : ""]"
 				)
 	else if (isnum(cached_player_age) && cached_player_age < nnpa)
-		message_admins("New user: [key_name_admin(src)] just connected with an age of [cached_player_age] day[(player_age == 1?"":"s")]")
+		message_admins("New user: [key_name_admin(src)] just connected with an age of [cached_player_age] day[(player_age == 1?"":"s")]", TRUE)
 	if(CONFIG_GET(flag/use_account_age_for_jobs) && account_age >= 0)
 		player_age = account_age
 	if(account_age >= 0 && account_age < nnpa)
-		message_admins("[key_name_admin(src)] (IP: [address], ID: [computer_id]) is a new BYOND account [account_age] day[(account_age == 1?"":"s")] old, created on [account_join_date].")
+		message_admins("[key_name_admin(src)] (IP: [address], ID: [computer_id]) is a new BYOND account [account_age] day[(account_age == 1?"":"s")] old, created on [account_join_date].", TRUE)
 		if (CONFIG_GET(flag/irc_first_connection_alert))
 			var/new_player_alert_role = CONFIG_GET(string/new_player_alert_role_id)
 			send2tgs_adminless_only(
@@ -703,7 +703,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
 		//NOVA EDIT ADDITION BEGIN - PANICBUNKER
 		if (CONFIG_GET(flag/panic_bunker) && !holder && !GLOB.deadmins[ckey] && !(ckey in GLOB.bunker_passthrough))
 			log_access("Failed Login: [key] - [address] - New account attempting to connect during panic bunker")
-			message_admins(span_adminnotice("Failed Login: [key] - [address] - New account attempting to connect during panic bunker"))
+			message_admins(span_adminnotice("Failed Login: [key] - [address] - New account attempting to connect during panic bunker"), TRUE)
 			to_chat_immediate(src, span_notice("Hi! We have temporarily enabled safety measures that prevents new players from joining currently. <br>Please try again later, or contact a staff on Discord if you have any questions. <br> <br> To join our community, check out our Discord! To gain full access to our Discord, read the rules and post a request in the #access-requests channel under the \"Landing Zone\" category in the Discord server linked here: <a href='https://discord.gg/novasector'>https://discord.gg/novasector</a>"))
 			var/list/connectiontopic_a = params2list(connectiontopic)
 			var/list/panic_addr = CONFIG_GET(string/panic_server_address)
@@ -901,10 +901,10 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
 				msg += " Administrators have been informed."
 				if (ab)
 					log_game("[key_name(src)] is using the middle click aimbot exploit")
-					message_admins("[ADMIN_LOOKUPFLW(usr)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit</span>")
+					message_admins("[ADMIN_LOOKUPFLW(usr)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit</span>", TRUE)
 					add_system_note("aimbot", "Is using the middle click aimbot exploit")
 				log_game("[key_name(src)] Has hit the per-minute click limit of [mcl] clicks in a given game minute")
-				message_admins("[ADMIN_LOOKUPFLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute")
+				message_admins("[ADMIN_LOOKUPFLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute", TRUE)
 			to_chat(src, span_danger("[msg]"))
 			return
 
@@ -1044,7 +1044,13 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
 					movement_keys[key] = SOUTH
 				if(ADMIN_CHANNEL)
 					if(holder)
-						var/asay = tgui_say_create_open_command(ADMIN_CHANNEL)
+					// TFF EDIT START - Eventmaker
+						var/asay
+						if(is_eventmaker())
+							asay = tgui_say_create_open_command(EVENT_CHANNEL)
+						else
+							asay = tgui_say_create_open_command(ADMIN_CHANNEL)
+					// TFF EDIT END
 						winset(src, "default-[REF(key)]", "parent=default;name=[key];command=[asay]")
 					else
 						winset(src, "default-[REF(key)]", "parent=default;name=[key];command=")
diff --git a/code/modules/mob/dead/observer/observer_say.dm b/code/modules/mob/dead/observer/observer_say.dm
index a8fd0094934..fcf288ec783 100644
--- a/code/modules/mob/dead/observer/observer_say.dm
+++ b/code/modules/mob/dead/observer/observer_say.dm
@@ -44,7 +44,12 @@
 		message = trim_left(copytext_char(message, length(message_mods[RADIO_KEY]) + 2))
 		switch(message_mods[RADIO_EXTENSION])
 			if(MODE_ADMIN)
-				SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_admin_say, message)
+					// TFF ADDITION START - Eventmaker
+				if(client.is_eventmaker())
+					SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_eventmaker_say, message)
+				else
+					// TFF ADDITION END
+					SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_admin_say, message)
 			if(MODE_DEADMIN)
 				SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/dsay, message)
 			if(MODE_PUPPET)
diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm
index e72899d482d..290b4cd807b 100644
--- a/code/modules/mob/living/living_say.dm
+++ b/code/modules/mob/living/living_say.dm
@@ -130,7 +130,12 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list(
 		return
 
 	if(message_mods[RADIO_EXTENSION] == MODE_ADMIN)
-		SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_admin_say, message)
+		// TFF ADDITION START - Eventmaker
+		if(client.is_eventmaker())
+			SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_eventmaker_say, message)
+		else
+			// TFF ADDITION END
+			SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_admin_say, message)
 		return
 
 	if(message_mods[RADIO_EXTENSION] == MODE_DEADMIN)
diff --git a/code/modules/tgui_input/say_modal/modal.dm b/code/modules/tgui_input/say_modal/modal.dm
index f700a6cdbea..4401df88f77 100644
--- a/code/modules/tgui_input/say_modal/modal.dm
+++ b/code/modules/tgui_input/say_modal/modal.dm
@@ -86,7 +86,7 @@
 	if(!payload?["channel"])
 		CRASH("No channel provided to an open TGUI-Say")
 	window_open = TRUE
-	if(payload["channel"] != OOC_CHANNEL && payload["channel"] != ADMIN_CHANNEL && payload["channel"] != LOOC_CHANNEL) // NOVA EDIT CHANGE (Add LOOC_CHANNEL)
+	if(payload["channel"] != OOC_CHANNEL && payload["channel"] != ADMIN_CHANNEL && payload["channel"] != LOOC_CHANNEL && payload["channel"] != EVENT_CHANNEL) // NOVA EDIT CHANGE (Add LOOC_CHANNEL) // TFF EDIT - Eventmaker
 		start_thinking()
 	if(!client.typing_indicators)
 		log_speech_indicators("[key_name(client)] started typing at [loc_name(client.mob)], indicators DISABLED.")
diff --git a/code/modules/tgui_input/say_modal/speech.dm b/code/modules/tgui_input/say_modal/speech.dm
index 9ed87be111a..ac1169e84ec 100644
--- a/code/modules/tgui_input/say_modal/speech.dm
+++ b/code/modules/tgui_input/say_modal/speech.dm
@@ -57,6 +57,11 @@
 		if(DO_CHANNEL)
 			client.mob.do_verb(entry)
 		// NOVA EDIT ADDITION END
+		// TFF ADDITION START - Eventmaker
+		if(EVENT_CHANNEL)
+			SSadmin_verbs.dynamic_invoke_verb(client, /datum/admin_verb/cmd_eventmaker_say, entry)
+			return TRUE
+		// TFF ADDITION END
 	return FALSE
 
 /**
diff --git a/config/nova/config_nova.txt b/config/nova/config_nova.txt
index af44fea6ed8..f5522769253 100644
--- a/config/nova/config_nova.txt
+++ b/config/nova/config_nova.txt
@@ -152,6 +152,7 @@ SIZE_COLLAR_MINIMUM 15
 DONATOR_LEGACY_SYSTEM
 MENTOR_LEGACY_SYSTEM
 VETERAN_LEGACY_SYSTEM
+EVENTMAKER_LEGACY_SYSTEM
 
 ## How much time arrivals shuttle should stay at station after its engines recharged before returning to interlink. In deciseconds. 150 - 15 seconds. 0 - disables autoreturn.
 ARRIVALS_WAIT 150
diff --git a/config/nova/eventmakers.txt b/config/nova/eventmakers.txt
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/modular_nova/master_files/code/modules/logging/categories/log_category_game.dm b/modular_nova/master_files/code/modules/logging/categories/log_category_game.dm
index f665a603a10..f373634061f 100644
--- a/modular_nova/master_files/code/modules/logging/categories/log_category_game.dm
+++ b/modular_nova/master_files/code/modules/logging/categories/log_category_game.dm
@@ -2,6 +2,11 @@
 	category = LOG_CATEGORY_GAME_MENTOR
 	master_category = /datum/log_category/game
 
+//TODO: ПЕРЕНЕСТИ ОТСЮДАВОЙ
+/datum/log_category/game_eventmaker
+	category = LOG_CATEGORY_GAME_EVENTMAKER
+	master_category = /datum/log_category/game
+
 /datum/log_category/game_subtle
 	category = LOG_CATEGORY_GAME_SUBTLE
 	master_category = /datum/log_category/game
diff --git a/modular_nova/modules/player_ranks/code/subsystem/player_ranks.dm b/modular_nova/modules/player_ranks/code/subsystem/player_ranks.dm
index 6dd15874973..041e5bc0429 100644
--- a/modular_nova/modules/player_ranks/code/subsystem/player_ranks.dm
+++ b/modular_nova/modules/player_ranks/code/subsystem/player_ranks.dm
@@ -203,7 +203,6 @@ SUBSYSTEM_DEF(player_ranks)
 
 	load_player_rank_sql(veteran_controller)
 
-
 /**
  * Handles populating the player rank from the database.
  *
diff --git a/tff_modular/modules/eventers/eventmaker.dm b/tff_modular/modules/eventers/eventmaker.dm
new file mode 100644
index 00000000000..a985a3126f9
--- /dev/null
+++ b/tff_modular/modules/eventers/eventmaker.dm
@@ -0,0 +1,34 @@
+/**
+ * Returns whether or not the user is qualified as a eventmaker.
+ */
+/client/proc/is_eventmaker()
+	return holder?.ranks && holder.ranks[1].name == "Eventmaker"
+
+
+/datum/controller/subsystem/admin_verbs/get_valid_verbs_for_admin(client/admin)
+	if(isnull(admin.holder))
+		CRASH("Why are we checking a non-admin for their valid... ahem... admin verbs?")
+
+	var/list/has_permission = list()
+	for(var/permission_flag in GLOB.bitflags)
+		if(admin.holder.check_for_rights(permission_flag))
+			has_permission["[permission_flag]"] = TRUE
+
+	var/list/valid_verbs = list()
+	for(var/datum/admin_verb/verb_type as anything in admin_verbs_by_type)
+		var/datum/admin_verb/verb_singleton = admin_verbs_by_type[verb_type]
+		if(!verify_visibility(admin, verb_singleton))
+			continue
+
+		if(admin.is_eventmaker() && GLOB.eventmakers_blacklist_verbs["[verb_singleton.name]"])
+			continue
+
+		var/verb_permissions = verb_singleton.permissions
+		if(verb_permissions == R_NONE)
+			valid_verbs |= list(verb_singleton)
+		else for(var/permission_flag in bitfield_to_list(verb_permissions))
+			if(!has_permission["[permission_flag]"])
+				continue
+			valid_verbs |= list(verb_singleton)
+
+	return valid_verbs
diff --git a/tff_modular/modules/eventers/eventmaker_verbs.dm b/tff_modular/modules/eventers/eventmaker_verbs.dm
new file mode 100644
index 00000000000..ae4aaae36bc
--- /dev/null
+++ b/tff_modular/modules/eventers/eventmaker_verbs.dm
@@ -0,0 +1,13 @@
+ADMIN_VERB(cmd_eventmaker_say, R_NONE, "ESay", "Send a message to eventmakes", ADMIN_CATEGORY_MAIN, message as text)
+	message = emoji_parse(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN))
+	if(!message)
+		return
+
+	user.mob.log_talk(message, LOG_ASAY)
+	message = keywords_lookup(message)
+	message = "[span_eventmaker("[span_prefix("EVENTCHAT:")] <EM>[key_name_admin(user)]</EM> [ADMIN_FLW(user.mob)]: <span class='message linkify'>[message]")]</span></font>"
+	to_chat(GLOB.admins,
+		type = MESSAGE_TYPE_ADMINCHAT,
+		html = message,
+		confidential = TRUE)
+	BLACKBOX_LOG_ADMIN_VERB("Esay")
diff --git a/tff_modular/modules/eventers/random_stuff_ban.dm b/tff_modular/modules/eventers/random_stuff_ban.dm
new file mode 100644
index 00000000000..10e61655ee6
--- /dev/null
+++ b/tff_modular/modules/eventers/random_stuff_ban.dm
@@ -0,0 +1,14 @@
+/client/CanProcCall(procname)
+	if(usr.client.is_eventmaker())
+		return FALSE
+	. = ..()
+
+/client/can_vv_get(var_name)
+	if(usr?.client.is_eventmaker())
+		return FALSE
+	. = ..()
+
+/datum/admins/can_vv_get(var_name)
+	if(usr?.client.is_eventmaker())
+		return FALSE
+	. = ..()
diff --git a/tgstation.dme b/tgstation.dme
index 8841314acef..def8c55eca7 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -400,11 +400,14 @@
 #include "code\__DEFINES\~ff_defines\flavor_misc.dm"
 #include "code\__DEFINES\~ff_defines\nabber_clothes_pathes.dm"
 #include "code\__DEFINES\~ff_defines\say.dm"
+#include "code\__DEFINES\~ff_defines\span.dm"
 #include "code\__DEFINES\~ff_defines\text.dm"
 #include "code\__DEFINES\~ff_defines\vv.dm"
 #include "code\__DEFINES\~ff_defines\__HELPERS\global_lists.dm"
 #include "code\__DEFINES\~ff_defines\__HELPERS\ishelpers.dm"
 #include "code\__DEFINES\~ff_defines\__HELPERS\names.dm"
+#include "code\__DEFINES\~ff_defines\_globalvars\logging.dm"
+#include "code\__DEFINES\~ff_defines\_globalvars\lists\hidden_verbs.dm"
 #include "code\__DEFINES\~nova_defines\_organ_defines.dm"
 #include "code\__DEFINES\~nova_defines\access.dm"
 #include "code\__DEFINES\~nova_defines\actionspeed_modification.dm"
@@ -8858,6 +8861,9 @@
 #include "tff_modular\modules\drinks\skrelluq\reaction.dm"
 #include "tff_modular\modules\drinks\skrelluq\reagent.dm"
 #include "tff_modular\modules\drone\code\droneDispenser.dm"
+#include "tff_modular\modules\eventers\eventmaker.dm"
+#include "tff_modular\modules\eventers\eventmaker_verbs.dm"
+#include "tff_modular\modules\eventers\random_stuff_ban.dm"
 #include "tff_modular\modules\extra_vv\extra_carbon_vv.dm"
 #include "tff_modular\modules\holidays_decor\halloween\halloween-craft.dm"
 #include "tff_modular\modules\holidays_decor\halloween\halloween-decor.dm"
diff --git a/tgui/packages/tgui-panel/chat/constants.ts b/tgui/packages/tgui-panel/chat/constants.ts
index 0e1a79bc1d6..46a3ab8ffda 100644
--- a/tgui/packages/tgui-panel/chat/constants.ts
+++ b/tgui/packages/tgui-panel/chat/constants.ts
@@ -38,6 +38,7 @@ export const MESSAGE_TYPE_ADMINLOG = 'adminlog';
 export const MESSAGE_TYPE_ATTACKLOG = 'attacklog';
 export const MESSAGE_TYPE_DEBUG = 'debug';
 export const MESSAGE_TYPE_MENTOR = 'mentor'; // NOVA EDIT ADDITION
+export const MESSAGE_TYPE_EVENTMAKER = 'eventmaker'; // TFF EDIT - Eventmaker
 
 // Metadata for each message type
 export const MESSAGE_TYPES = [
@@ -152,4 +153,12 @@ export const MESSAGE_TYPES = [
     description: 'Mentor PMs and other mentor things.',
     selector: '.mentor, .mentornotice',
   },
+  // TFF ADDITION START - Eventmaker
+  {
+    type: MESSAGE_TYPE_EVENTMAKER,
+    name: 'Eventmaker Log',
+    description: 'Eventmaker PMs and other eventmaker things.',
+    selector: '.eventmaker',
+  },
+  // TFF ADDITION END
 ];
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
index 09cdd23495a..710f9ba1ae9 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
@@ -1438,3 +1438,11 @@ $border-width-px: $border-width * 1px;
   font-style: italic;
 }
 // NOVA EDIT ADDITION END
+
+/* TFF ADDITION START - Eventmaker */
+
+.eventmaker {
+  color: #009c22;
+}
+
+// TFF EDIT ADDITION END
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
index 8f606cbdd6f..ec4d83762f8 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
@@ -1383,3 +1383,11 @@ $border-width-px: $border-width * 1px;
   }
 }
 // NOVA EDIT ADDITION END
+
+/* TFF ADDITION START - Eventmaker */
+
+.eventmaker {
+  color: #006616;
+}
+
+// TFF EDIT ADDITION END
diff --git a/tgui/packages/tgui-say/ChannelIterator.ts b/tgui/packages/tgui-say/ChannelIterator.ts
index 57866808609..cddac3571e1 100644
--- a/tgui/packages/tgui-say/ChannelIterator.ts
+++ b/tgui/packages/tgui-say/ChannelIterator.ts
@@ -8,7 +8,8 @@ export type Channel =
   | 'Do'
   // NOVA EDIT ADDITION END
   | 'OOC'
-  | 'Admin';
+  | 'Admin'
+  | 'Event'; // TFF EDIT - Eventmaker
 
 /**
  * ### ChannelIterator
@@ -29,9 +30,10 @@ export class ChannelIterator {
     // NOVA EDIT ADDITION
     'OOC',
     'Admin',
+    'Event', // TFF EDIT - Eventmaker
   ];
-  private readonly blacklist: Channel[] = ['Admin'];
-  private readonly quiet: Channel[] = ['OOC', 'LOOC', 'Admin']; // NOVA EDIT CHANGE (Add LOOC)
+  private readonly blacklist: Channel[] = ['Admin', 'Event']; // TFF EDIT - Eventmaker
+  private readonly quiet: Channel[] = ['OOC', 'LOOC', 'Admin', 'Event']; // NOVA EDIT CHANGE (Add LOOC) // TFF EDIT - Eventmaker
 
   public next(): Channel {
     if (this.blacklist.includes(this.channels[this.index])) {
diff --git a/tgui/packages/tgui-say/constants/index.tsx b/tgui/packages/tgui-say/constants/index.tsx
index 8095aa98583..c9a11592d90 100644
--- a/tgui/packages/tgui-say/constants/index.tsx
+++ b/tgui/packages/tgui-say/constants/index.tsx
@@ -8,6 +8,7 @@ export const CHANNELS = [
   'Do', // NOVA EDIT ADDITION - Do roleplay addition
   'OOC',
   'Admin',
+  'Event', // TFF EDIT - Eventmaker
 ] as const;
 
 /** Window sizes in pixels */
diff --git a/tgui/packages/tgui-say/styles/colors.scss b/tgui/packages/tgui-say/styles/colors.scss
index 337887e358f..34cfec4e11b 100644
--- a/tgui/packages/tgui-say/styles/colors.scss
+++ b/tgui/packages/tgui-say/styles/colors.scss
@@ -36,6 +36,8 @@ $_channel_map: (
   'Whis': hsl(238, 55%, 67%),
   'Do': hsl(137, 64%, 60%),
   // NOVA EDIT ADDITION END
+  // TFF EDIT - Eventmaker
+  'Event': hsl(92, 80%, 37%),
 );
 
 $channel_keys: map.keys($_channel_map) !default;
diff --git a/tgui/packages/tgui/interfaces/Secrets.jsx b/tgui/packages/tgui/interfaces/Secrets.jsx
index 3e3ccd70cc0..09d3d93e274 100644
--- a/tgui/packages/tgui/interfaces/Secrets.jsx
+++ b/tgui/packages/tgui/interfaces/Secrets.jsx
@@ -632,7 +632,7 @@ const FunForYouTab = (props) => {
 
 export const Secrets = (props) => {
   const { act, data } = useBackend();
-  const { is_debugger, is_funmin } = data;
+  const { is_debugger, is_funmin, is_eventmaker } = data;
   const [tabIndex, setTabIndex] = useState(2);
   const TabComponent = TAB2NAME[tabIndex - 1].component();
 
@@ -644,20 +644,22 @@ export const Secrets = (props) => {
             <Section
               title="Secrets"
               buttons={
-                <>
-                  <Button
-                    color="blue"
-                    icon="address-card"
-                    content="Admin Log"
-                    onClick={() => act('admin_log')}
-                  />
-                  <Button
-                    color="blue"
-                    icon="eye"
-                    content="Show Admins"
-                    onClick={() => act('show_admins')}
-                  />
-                </>
+                !is_eventmaker && (
+                  <>
+                    <Button
+                      color="blue"
+                      icon="address-card"
+                      content="Admin Log"
+                      onClick={() => act('admin_log')}
+                    />
+                    <Button
+                      color="blue"
+                      icon="eye"
+                      content="Show Admins"
+                      onClick={() => act('show_admins')}
+                    />
+                  </>
+                )
               }
             >
               <Flex mx={-0.5} align="stretch" justify="center">

From a21b8489e4c6fb2f1ee93b03d8f138f2d1e60a25 Mon Sep 17 00:00:00 2001
From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Date: Thu, 19 Dec 2024 20:38:21 +0300
Subject: [PATCH 21/23] Automatic changelog for PR #4973 [ci skip]

---
 html/changelogs/AutoChangeLog-pr-4973.yml | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 html/changelogs/AutoChangeLog-pr-4973.yml

diff --git a/html/changelogs/AutoChangeLog-pr-4973.yml b/html/changelogs/AutoChangeLog-pr-4973.yml
new file mode 100644
index 00000000000..0fed758e920
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-4973.yml
@@ -0,0 +1,4 @@
+author: "Vishenka0704"
+delete-after: True
+changes:
+  - rscadd: "Eventmaker admin-subsystem."
\ No newline at end of file

From 4ae21f7ec6df3aaf23336acdcd980b1a7f3e91f4 Mon Sep 17 00:00:00 2001
From: Iajret <8430839+Iajret@users.noreply.github.com>
Date: Fri, 20 Dec 2024 00:10:37 +0300
Subject: [PATCH 22/23] Mirror 15/12 (#5253)

* [MIRROR] The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434) (#4634)

* The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)

This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).

And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.

Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.

Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.

Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

![immagine](https://github.com/user-attachments/assets/2bb625c9-9233-42eb-b9b8-e0bd6909ce89)

:cl:
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/:cl:

* Automatic changelog for PR #87434 [ci skip]

* Adds a new INHALE reagent transfer method and applies it to smoking and smoke inhalation. Nitrous oxide (the reagent version) inhalation causes brain damage. (#87306)

Adds the ``INHALE`` transfer method. Smoking and smoke exposure now uses
this method.

Makes a few sensible inhalation effects for current behaviours.

Adds a unit test amongst the rest of the exposure method tests.

Nitrous oxide does brain damage on inhalation based on volume inhaled.

Smoke and smoking being based on ingestion rather than inhaling was
always weird to me. It'd be nice to have a specific method for smoking
instead of a method shared by drinking. Many of our smokables make sense
as indigestibles, obviously, but maybe we'd like a chem you can ONLY
smoke.

~~Also, I walked out of a job interview and up the street to see a guy
throwing his empty nitrous canisters around and yelling at passerbys, so
shout out to that fucking guy with this PR.~~

:cl:
code: Introduces a INHALE method for reagent transfer. Cigarettes and
smoke reactions use this new method.
balance: Nitrous oxide now brain damage if you inhale it. So don't do
that.
/:cl:

---------

* Automatic changelog for PR #87306 [ci skip]

* Refactor tasting code and reagent taste carrying, no longer taste your stomach contents or have non-existing flavours win out (#87329)

Soooooooooooooooooooooooooooooooo tasting code has been jank for a good
damn while, and with this we aim to fix that- let's start from the
beginning.

Earlier when I was making a food item, I noticed that it'd never
actually have the taste I gave it, just tasting indescribable as things
without tastes do.
Weird, cause it definitely has a taste set, and plenty of nutriment
subtype reagents!...
When looking into it, I noticed that we only copy the tastes to
*specifically* the base nutriment and the vitamin subtype:

https://github.com/tgstation/tgstation/blob/57b718ad20c3b6af02dbdbc87f3cae4dd4d7e297/code/datums/components/food/edible.dm#L215-L216
But! Surely the other reagents should have tastes, right?.... No:

https://github.com/tgstation/tgstation/blob/57b718ad20c3b6af02dbdbc87f3cae4dd4d7e297/code/modules/reagents/chemistry/reagents/food_reagents.dm#L119-L120
we were always returning the tastes data, but never actually setting it
except for those two reagents, overriding any and all tastes.
This caused the non-taste of the proteins and fats to override the food
taste applied to the vitamins with their volume.

So, to fix this, we replace these hardcoded ids with a check for
`carry_food_tastes` on the nutriment reagent, such that each can
individually define whether they carry food tastes. This lets oils have
their own tastes, while letting all other nutriments carry the tastes.
We then make `get_taste_description(...)` return the base flavour if no
special flavour is found, and add base flavours to proteins and vitamins
based on what pure proteins/vitamins with no further additives would
roughly taste like.

This fixes our issue!....... Except, we now always taste something "rich
earthy pungent" when we eat. Looking into it, that's the organ tissue
reagent, used in our stomachs:

https://github.com/tgstation/tgstation/blob/57b718ad20c3b6af02dbdbc87f3cae4dd4d7e297/code/modules/reagents/chemistry/reagents/food_reagents.dm#L232-L236
....Because whenever we ingest something, we taste the contents of our
stomach. This was previously less noticeable, as while it *did* count,
it only added a weight for _no flavour_.

To fix this we just, well, make it so you taste what you're eating and
not the container itself.
It's as simple as separating the tasting code from the reagent holder,
and making the tasting that happens on ingest exposure use that logic
instead.
We keep the old logic for the INTJ skillchip and tasting machine, just
re-routed through this, and split up some procs to avoid too much
duplication.

This fixes our issue! Though, there's still some minor issues.
This lets us add organ tissue instead of nutriment to other organs so
they no longer taste indescribable, as it actually works properly now,
but letting organ tissue hold flavours would risk having the stomach
organ tissue permanently leech the flavours of the organ tissue you eat.
So we make a subtype of organ tissue for the stomach, stomach lining,
which cannot hold flavours.
This lets us apply the base organ tissue to all other organs without
risking stomach contamination.

It's jank to taste your stomach contents.
It's jank for organs to taste like nothing.
It's jank for reagents with flavours to never taste like anything.
It's jank for tasteless reagents to block out food flavours.
It's jank for organs to only sometimes contain organ tissues.
yeah.
:cl:
refactor: Refactored tasting code. Please report any jank tasting
behaviours.
fix: You taste what you eat instead of the contents of your own stomach.
fix: Other basic nutriment subtypes also carry food flavours, instead of
outweighing the food flavours with their lack of flavour.
fix: Basic nutriment subtypes have a flavour they default to, in case of
not carrying any food flavours.
fix: Oils taste like oil instead of tasting indescribable.
fix: Clothing eaten by moths actually carries its flavours instead of
tasting indescribable.
fix: Organs use organ tissue instead of nutriment.
fix: You can actually taste organ tissue.
qol: Mineral slurry tastes like minerals instead of tasting
indescribable.
fix: Tasted flavours can actually be "strong" in addition to mild or "a
hint of", as intended.
qol: Flavours are only strong when their percentage of what you're
tasting is more than 4x taste sensitivity instead of 3x, for most
default tongues being 60% and lizards 40% of the drink.
qol: Tasted flavours are sorted by strength, stronger flavours coming
first.
qol: Tasted flavours are grouped into "strong", "mild", and "hint" in
the message, replacing "You can taste a hint of bitterness, alcohol, a
hint of sweetness, and a hint of cola" with "You can taste alcohol and a
hint of bitterness, sweetness, and cola".
/:cl:

---------

* Automatic changelog for PR #87329 [ci skip]

* Herculean/Atlas implants get a few additional BOULDER/Equipment related benefits. Boulders are more robust. Natural Athletics gains. (#87469)

Herculean/Atlas spinal implants allow you to break boulders to process
them manually. Doing so also grants athletics experience.

They also increase the speed at which you throw objects, and also
increase the range further. The Atlas version also allows you to reduce
equipment movespeed penalties. (Fikou wanted me to do this for
specifically modsuits, but I don't see any reason this can't apply to
more than that, modsuits are just generally the slowest equipment you
could wear)

Boulders have 30 throw force, are by default HUGE, but have no throw
range at all and really weak tk throw range. You need a throwing booster
to throw boulders around. (They do extra damage to SPECIAL mobs, like
lavaland bosses, because it's funny to kill a god-like being with a huge
rock while slow as shit)

You naturally get athletics experience by doing some actions. Fireman
carrying, climbing tables/crates, climbing rope and climbing ladders
give you a slow and steady stream of experience. Rope gives a larger
amount if only because the process for doing so is destructive in some
way (you have to get more climbing rope eventually, so there is an
associated cost). Spinal implants now improve climbing speed for
climbing over objects.

I just had this strange compulsion to make the spinal implant make you
good at throwing boulders at lethal speeds. It already has some cool
rock-based special effects around you. Having mastery over rock throwing
just kind of made sense. Additionally, I thought it would be a funny
method for someone to be able to kill a boss via way of thrown boulders.
Or some hapless nuclear operative unprepared for a bunch of assistants
lobbing boulders at them.

Additionally, I also think it letting you break boulders for ore is a
fairly minor but fun addition. Pull boulders out of the vents, smash
them. Good work out. Particularly for miners.

I talked a while ago with I think Jacq about adding some natural methods
for accumulating athletics experience over the course of a round that
doesn't involve the dedicated weight lifting machinery/boxing bag. I
thought any method for doing that should probably be relatively slow and
definitely nonviable for significant athletics gains beyond novice
level. Mooost people will hit novice on a multi-z map if they go up and
down ladders enough. Or climb a lot of tables/crates. The results aren't
going to have much noticeable impact, however, as you only gain
appreciable benefits above novice. Probably just greater visibility of
fitness in a round. (Rather nice for the RD, who gets to show off how
swole they are more regularly).

<details>
  <summary>Spoiler warning</summary>

![CES8b4XWEAAIakb](https://github.com/user-attachments/assets/8baaa012-8048-419f-b936-2dc6621db3c2)

</details>

:cl:
balance: Herculean/Atlas spinal implants make you better at climbing
tables, throw objects much faster and throw them much further. You can
also break boulders with your bare hands.
balance: Atlas implants let you offset the weight of worn/carried
equipment (like boulders).
balance: Boulders have no throw range, but if you can throw them via
throwing range boosters (such as the spinal implant), they deal fairly
large amounts of damage. Especially to powerful mobs like lavlaand
bosses.
balance: You naturally gain a small amount of athletics experience doing
some tasks, such as climbing rope, ladders and tables/crates, fireman
carrying, or smashing open boulders.
/:cl:

* Fixes eye charts so that master isn't failing (#87648)

The eye charts were still using the ``internal`` organ subtype. This
fixes that.

Phone PR baby. We love webedits.

:cl:
fix: Eye charts now use the correct subtype for eye organs.
/:cl:

* Adds eye color overrides, converts cult/weed/silverscale eye effects to use them (#87782)

Eye color effects are now controlled via a new overrides system, which
should prevent conflicts between different sources - such as smoking
weed, becoming a cultist, stopping your weed and getting normal eyes
(and subsequently getting your red eyes back when you get deconverted)

Should ensure that different eye color effects don't collide between
each other. Also need this for a future feature I wanna add.

:cl:
refactor: Eye color effects are now controlled via a new overrides
system, which should prevent conflicts between different sources.
/:cl:

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>

* Automatic changelog for PR #87782 [ci skip]

* Fixes ayylmao's brain examine lines (#87869)

Closes #87861
Merge skew my beloved

:cl:
fix: Fixed ayylmao's brain examine lines
/:cl:

* Automatic changelog for PR #87869 [ci skip]

* modsuit given traits use refs + fixes their deletion not working right + need boot out for ai to move (#87726)

so there is a problem of:
if 2 modsuit modules were to apply the same trait and 1 were removed,
shit would break
so now all instances of mod_trait applied to the modsuit wearer are refs
instead, with mod_trait used for stuff added to items as that isnt
likely to have the same thing
also qdeleted modsuits delete their parts apparently accidentally
removed at some point. the previous time they did it caused qdel loops
but this time it doesnt
makes boots need to be out for an ai to move someone in a modsuit
improves the ui, non-standard cores now have unique colors for the
charging bar, and you can extend/retract things from ui, also adds a
configurable button to config menu so that the tether doesnt repurpose
the pin function made for circuits
redoes modsuit balloon alerts to use simpler language
makes the weapon recall module make you pick up the weapon if its on
your tile as throws dont work on same tile

![image](https://github.com/user-attachments/assets/97a0eb85-8127-4297-b679-3e5488ce73be)

futureproofing (also technically presentproofing, if you wear something
like infiltrator and normal back modsuit and both have ai control they
both will give you a trait)
also ai movement doesnt have any checks currently, i think it makes
sense that it would require your boots to be out so that the ai has
something to move
fix stuff change break boom wack

* Automatic changelog for PR #87726 [ci skip]

* Fixes brains turning invisible after being washed instead of being smooth (#87898)

* Automatic changelog for PR #87898 [ci skip]

* Fix flap emote runtimes (#87789)

Wingless creatures don't cause runtimes when they flap their imaginery
wings

Runtimes bad

:cl:
fix: Fixes a runtime when wingless creature flaps their wings
/:cl:

* Automatic changelog for PR #87789 [ci skip]

* [NO GBP] Syndicate Biodome Fixes (#87792)

Fixed cheesing by monkeyification by changing the gorillas factions to
hostile. Tweaked the loot to be consistent and nerfed slightly (Makarovs
instead of APS)

Also changed one of the observation cells to a cytology room with a
clown glutton

![image](https://github.com/user-attachments/assets/2b3f5ea0-75ea-42f1-98f7-50b7ebd60b04)

![image](https://github.com/user-attachments/assets/9d700be2-7108-4d7a-90f9-7a8f19737879)

It fixes stuff and prevents cheese.

:cl:

fix: Syndicate Biodome fixes

/:cl:

* Automatic changelog for PR #87792 [ci skip]

* vampires are a human subtype & have stomachs/lungs (#87622)

Vampires have stomachs and lungs.
They still don't have hunger.

Vampires are a human subtype.

Vamp bloodtype from "U"nknown to "V"ampire

For some stupid reason vampires lacked stomachs. Vampires drinking wine
is a classic trope that currently results in vomit magically appearing
below you.

Evidence of wine:

![ielbiv4shad81](https://github.com/user-attachments/assets/ef39c522-282d-4763-8802-a6fb180aafb2)

Vampires are a human subtype too like felinids because this resulted in
dumb bugs like no screaming sound.

Vamp bloodtype from "U"nknown to "V"ampire

I mean if we haev these guys on halloween. We probably know their blood
right.

:cl:
fix: vampires are a human subtype & have stomachs/lungs
/:cl:

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>

* Automatic changelog for PR #87622 [ci skip]

* Modsuits no longer horrifically screech when taken off (#88326)

Closes #87979
***FSZZHHHH***

:cl:
sound: Modsuits no longer horrifically screech when taken off
/:cl:

* Automatic changelog for PR #88326 [ci skip]

* Modular updates

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

1

Co-Authored-By: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-Authored-By: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-Authored-By: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-Authored-By: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-Authored-By: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-Authored-By: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-Authored-By: Fikou <23585223+Fikou@users.noreply.github.com>
Co-Authored-By: Alexis <catmc8565@gmail.com>
Co-Authored-By: larentoun <31931237+larentoun@users.noreply.github.com>
Co-Authored-By: Koi <168238458+GremlinSeeker@users.noreply.github.com>
Co-Authored-By: carlarctg <53100513+carlarctg@users.noreply.github.com>

* 1

* ff stuff

* Update KiloStation2.dmm

---------

Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Alexis <catmc8565@gmail.com>
Co-authored-by: larentoun <31931237+larentoun@users.noreply.github.com>
Co-authored-by: Koi <168238458+GremlinSeeker@users.noreply.github.com>
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
---
 .../icemoon_underground_abandoned_village.dmm |   2 +-
 .../icemoon_underground_mining_site.dmm       |   6 +-
 .../icemoon_underground_syndidome.dmm         | 241 ++++++++++--------
 .../lavaland_surface_elephant_graveyard.dmm   |  16 +-
 .../RandomRuins/SpaceRuins/caravanambush.dmm  |   6 +-
 .../SpaceRuins/dangerous_research.dmm         |  16 +-
 .../RandomRuins/SpaceRuins/garbagetruck1.dmm  |   6 +-
 .../RandomRuins/SpaceRuins/garbagetruck2.dmm  |  18 +-
 .../RandomRuins/SpaceRuins/garbagetruck3.dmm  |   2 +-
 .../SpaceRuins/hauntedtradingpost.dmm         |   2 +-
 _maps/RandomRuins/SpaceRuins/medieval1.dmm    |   6 +-
 .../SpaceRuins/mrow_thats_right.dmm           |  28 +-
 _maps/RandomRuins/SpaceRuins/oldstation.dmm   |   2 +-
 _maps/RandomRuins/SpaceRuins/the_outlet.dmm   |  14 +-
 _maps/RandomZLevels/caves.dmm                 |   6 +-
 _maps/RandomZLevels/mothership_astrum.dmm     |  44 ++--
 _maps/deathmatch/sunrise.dmm                  |   2 +-
 .../map_files/Basketball/lusty_xenomorphs.dmm |   4 +-
 _maps/map_files/Birdshot/birdshot.dmm         |  62 ++---
 .../map_files/IceBoxStation/IceBoxStation.dmm |   4 +-
 _maps/map_files/KiloStation2/KiloStation2.dmm |  10 +-
 _maps/map_files/MetaStation/MetaStation.dmm   |  76 +++---
 _maps/map_files/NSVBlueshift/Blueshift.dmm    |  50 ++--
 _maps/map_files/Ouroboros/Ouroboros.dmm       |   4 +-
 .../SerenityStation/SerenityStation.dmm       |   2 +-
 _maps/map_files/VoidRaptor/VoidRaptor.dmm     |  12 +-
 _maps/map_files/debug/runtimestation.dmm      |   6 +-
 .../barcargoupper_cave_2.dmm                  |   2 +-
 _maps/map_files/wawastation/wawastation.dmm   |  12 +-
 _maps/shuttles/emergency_birdshot.dmm         |   4 +-
 _maps/shuttles/emergency_zeta.dmm             |   4 +-
 _maps/shuttles/ruin_cyborg_mothership.dmm     |   2 +-
 _maps/shuttles/whiteship_kilo.dmm             |   2 +-
 _maps/templates/lazy_templates/ninja_den.dmm  |   4 +-
 _maps/virtual_domains/abductor_ship.dmm       |   6 +-
 code/__DEFINES/colors.dm                      |   6 +
 code/__DEFINES/dcs/signals/signals_mod.dm     |   6 +-
 code/__DEFINES/dcs/signals/signals_object.dm  |   4 +-
 code/__DEFINES/inventory.dm                   |   2 +-
 code/__DEFINES/is_helpers.dm                  |   6 +-
 code/__DEFINES/reagents.dm                    |   4 +-
 code/__DEFINES/research/anomalies.dm          |  40 +--
 code/__DEFINES/surgery.dm                     |   4 +-
 code/__DEFINES/traits/declarations.dm         |   2 +-
 code/__DEFINES/traits/sources.dm              |   2 +-
 code/__DEFINES/~nova_defines/signals.dm       |   2 +-
 code/__HELPERS/honkerblast.dm                 |   6 +-
 code/__HELPERS/mobs.dm                        |   2 +-
 code/_globalvars/lists/quirks.dm              |   4 +-
 code/_globalvars/phobias.dm                   |  16 +-
 code/_globalvars/traits/_traits.dm            |   4 +-
 code/_globalvars/traits/admin_tooling.dm      |   4 +-
 code/_onclick/hud/alert.dm                    |   2 +-
 code/_onclick/hud/human.dm                    |   2 +-
 .../dynamic/dynamic_rulesets_midround.dm      |   2 +-
 code/datums/actions/items/toggles.dm          |   2 +-
 code/datums/ai/monkey/monkey_controller.dm    |   4 +-
 .../mutant_bodypart_overlay.dm                |  16 +-
 code/datums/brain_damage/brain_trauma.dm      |   2 +-
 code/datums/brain_damage/split_personality.dm |   2 +-
 .../components/crafting/entertainment.dm      |   2 +-
 code/datums/components/crafting/equipment.dm  |   2 +-
 .../components/crafting/melee_weapon.dm       |  10 +-
 code/datums/components/crafting/robot.dm      |   2 +-
 code/datums/components/crafting/tailoring.dm  |   6 +-
 code/datums/components/cult_ritual_item.dm    |   2 +-
 code/datums/components/food/edible.dm         |  16 +-
 code/datums/components/ghostrole_on_revive.dm |  12 +-
 code/datums/components/heart_eater.dm         |   8 +-
 code/datums/components/ling_decoy_brain.dm    |   8 +-
 code/datums/components/manual_blinking.dm     |  10 +-
 code/datums/components/manual_breathing.dm    |  10 +-
 code/datums/components/manual_heart.dm        |  10 +-
 code/datums/components/phylactery.dm          |   4 +-
 code/datums/components/riding/riding_mob.dm   |   2 +-
 code/datums/components/sign_language.dm       |  10 +-
 code/datums/components/squeak.dm              |   2 +-
 code/datums/components/supermatter_crystal.dm |   2 +-
 code/datums/components/tackle.dm              |  12 +-
 code/datums/components/vision_hurting.dm      |   2 +-
 .../diseases/advance/symptoms/deafness.dm     |   2 +-
 .../diseases/advance/symptoms/sensory.dm      |   4 +-
 .../diseases/advance/symptoms/vision.dm       |   2 +-
 code/datums/diseases/chronic_illness.dm       |   2 +-
 code/datums/diseases/gastrolisis.dm           |  16 +-
 code/datums/diseases/parasitic_infection.dm   |   2 +-
 code/datums/dna.dm                            |   2 +-
 code/datums/elements/climbable.dm             |  12 +
 code/datums/elements/corrupted_organ.dm       |   4 +-
 code/datums/elements/cult_eyes.dm             |  17 +-
 code/datums/elements/earhealing.dm            |   2 +-
 code/datums/elements/eyestab.dm               |   2 +-
 code/datums/elements/frozen.dm                |  12 +-
 code/datums/elements/kneejerk.dm              |   2 +-
 code/datums/instability_meltdown.dm           |   5 +-
 code/datums/martial/boxing.dm                 |   2 +-
 code/datums/mutations/body.dm                 |   6 +-
 code/datums/mutations/tongue_spike.dm         |   2 +-
 code/datums/quirks/negative_quirks/addict.dm  |  12 +-
 .../quirks/negative_quirks/photophobia.dm     |   8 +-
 .../negative_quirks/prosthetic_organ.dm       |   8 +-
 .../quirks/negative_quirks/scarred_eye.dm     |   4 +-
 code/datums/quirks/negative_quirks/tin_man.dm |   8 +-
 .../quirks/neutral_quirks/deviant_tastes.dm   |   4 +-
 code/datums/quirks/neutral_quirks/gamer.dm    |   4 +-
 .../quirks/neutral_quirks/heretochromatic.dm  |   5 +-
 .../quirks/neutral_quirks/pineapple_hater.dm  |   4 +-
 .../quirks/neutral_quirks/pineapple_liker.dm  |   4 +-
 .../quirks/positive_quirks/chip_connector.dm  |   2 +-
 code/datums/quirks/positive_quirks/chipped.dm |   4 +-
 .../datums/quirks/positive_quirks/friendly.dm |   4 +-
 code/datums/saymode.dm                        |   2 +-
 code/datums/station_traits/positive_traits.dm |  96 +++----
 code/datums/status_effects/debuffs/drunk.dm   |   2 +-
 code/datums/status_effects/drug_effects.dm    |  12 +-
 code/datums/status_effects/neutral.dm         |   2 +-
 code/datums/wounds/cranial_fissure.dm         |   8 +-
 code/datums/wounds/pierce.dm                  |   4 +-
 code/game/gamemodes/objective.dm              |   2 +-
 .../machinery/dna_infuser/dna_infusion.dm     |   2 +-
 .../infuser_tier_one_entries.dm               |  46 ++--
 .../infuser_tier_two_entries.dm               |   6 +-
 .../infuser_tier_zero_entries.dm              |  36 +--
 .../dna_infuser/organ_sets/carp_organs.dm     |  36 +--
 .../dna_infuser/organ_sets/fish_organs.dm     |  66 ++---
 .../dna_infuser/organ_sets/fly_organs.dm      |  42 +--
 .../dna_infuser/organ_sets/fox_organs.dm      |   4 +-
 .../dna_infuser/organ_sets/goliath_organs.dm  |  20 +-
 .../dna_infuser/organ_sets/gondola_organs.dm  |  30 +--
 .../dna_infuser/organ_sets/rat_organs.dm      |  32 +--
 .../dna_infuser/organ_sets/roach_organs.dm    |  38 +--
 code/game/machinery/dna_scanner.dm            |   2 +-
 code/game/machinery/medical_kiosk.dm          |   2 +-
 code/game/machinery/recycler.dm               |   2 +-
 .../fluid_spread/effects_smoke.dm             |   2 +-
 .../effects/spawners/random/medical.dm        |  62 ++---
 code/game/objects/items/airlock_painter.dm    |   2 +-
 code/game/objects/items/body_egg.dm           |  22 +-
 code/game/objects/items/choice_beacon.dm      |  12 +-
 code/game/objects/items/cigarettes.dm         |   8 +-
 code/game/objects/items/climbingrope.dm       |   3 +-
 code/game/objects/items/defib.dm              |   6 +-
 code/game/objects/items/devices/flashlight.dm |   6 +-
 .../items/devices/scanners/health_analyzer.dm |   4 +-
 code/game/objects/items/drug_items.dm         |   2 +
 code/game/objects/items/dualsaber.dm          |   2 +-
 code/game/objects/items/dyespray.dm           |  75 +++++-
 code/game/objects/items/food/donuts.dm        |   2 +-
 code/game/objects/items/food/misc.dm          |   2 +-
 code/game/objects/items/hand_items.dm         |   2 +-
 code/game/objects/items/melee/baton.dm        |   2 +-
 code/game/objects/items/melee/misc.dm         |   2 +-
 code/game/objects/items/robot/robot_parts.dm  |   2 +-
 code/game/objects/items/storage/belt.dm       |   4 +-
 code/game/objects/structures/aliens.dm        |   4 +-
 .../structures/beds_chairs/alien_nest.dm      |   6 +-
 .../objects/structures/gym/punching_bag.dm    |   2 +-
 .../objects/structures/gym/weight_machine.dm  |   2 +-
 .../structures/icemoon/cave_entrance.dm       |   2 +-
 code/game/objects/structures/ladders.dm       |   9 +-
 .../objects/structures/lavaland/gulag_vent.dm |   2 +-
 .../objects/structures/petrified_statue.dm    |   2 +-
 .../objects/structures/signs/sign_eyechart.dm |   2 +-
 code/game/objects/structures/tables_racks.dm  |   2 +-
 code/game/turfs/turf.dm                       |   2 +-
 code/modules/admin/verbs/adminfun.dm          |   4 +-
 code/modules/admin/verbs/secrets.dm           |   4 +-
 code/modules/admin/verbs/selectequipment.dm   |   2 +-
 code/modules/antagonists/abductor/abductor.dm |   2 +-
 .../abductor/equipment/abduction_surgery.dm   |   6 +-
 .../abductor/equipment/gear/abductor_items.dm |   4 +-
 .../antagonists/abductor/equipment/gland.dm   |  26 +-
 .../abductor/equipment/glands/access.dm       |   4 +-
 .../abductor/equipment/glands/blood.dm        |   4 +-
 .../abductor/equipment/glands/chem.dm         |   6 +-
 .../abductor/equipment/glands/egg.dm          |   4 +-
 .../abductor/equipment/glands/electric.dm     |  10 +-
 .../abductor/equipment/glands/heal.dm         |  62 ++---
 .../abductor/equipment/glands/mindshock.dm    |   8 +-
 .../abductor/equipment/glands/plasma.dm       |   6 +-
 .../abductor/equipment/glands/quantum.dm      |  10 +-
 .../abductor/equipment/glands/slime.dm        |   8 +-
 .../abductor/equipment/glands/spider.dm       |   4 +-
 .../abductor/equipment/glands/transform.dm    |   4 +-
 .../abductor/equipment/glands/trauma.dm       |   4 +-
 .../abductor/equipment/glands/ventcrawl.dm    |   4 +-
 .../abductor/equipment/glands/viral.dm        |   6 +-
 .../abductor/equipment/orderable_gear.dm      |   2 +-
 .../abductor/machinery/dispenser.dm           |   4 +-
 .../abductor/machinery/experiment.dm          |   4 +-
 .../antagonists/changeling/changeling.dm      |   2 +-
 .../antagonists/changeling/headslug_eggs.dm   |  10 +-
 .../changeling/powers/augmented_eyesight.dm   |  10 +-
 .../changeling/powers/darkness_adaptation.dm  |   8 +-
 .../antagonists/changeling/powers/headcrab.dm |   2 +-
 .../antagonists/changeling/powers/mmi_talk.dm |   2 +-
 .../changeling/powers/mutations.dm            |   2 +-
 .../antagonists/changeling/powers/panacea.dm  |   8 +-
 .../antagonists/changeling/powers/shriek.dm   |   2 +-
 .../changeling/powers/tiny_prick.dm           |   2 +-
 code/modules/antagonists/clown_ops/clownop.dm |   4 +-
 code/modules/antagonists/cult/runes.dm        |   2 +-
 .../antagonists/fugitive/fugitive_outfits.dm  |   2 +-
 .../antagonists/heretic/heretic_knowledge.dm  |  18 +-
 .../heretic/items/corrupted_organs.dm         |  58 ++---
 .../heretic/items/eldritch_painting.dm        |  16 +-
 .../antagonists/heretic/knowledge/ash_lore.dm |   2 +-
 .../heretic/knowledge/flesh_lore.dm           |   8 +-
 .../heretic/knowledge/moon_lore.dm            |   2 +-
 .../sacrifice_knowledge/sacrifice_curse.dm    |   6 +-
 .../sacrifice_knowledge.dm                    |  18 +-
 .../heretic/knowledge/side_ash_moon.dm        |   2 +-
 .../heretic/knowledge/side_cosmos_ash.dm      |   2 +-
 .../heretic/knowledge/side_lock_moon.dm       |   6 +-
 .../heretic/knowledge/side_rust_cosmos.dm     |   2 +-
 .../heretic/knowledge/side_void_blade.dm      |   2 +-
 .../heretic/knowledge/starting_lore.dm        |  10 +-
 .../heretic/knowledge/void_lore.dm            |   2 +-
 .../antagonists/heretic/magic/moon_smile.dm   |   2 +-
 .../antagonists/nightmare/nightmare_organs.dm |  22 +-
 .../nightmare/nightmare_species.dm            |   4 +-
 code/modules/antagonists/obsessed/obsessed.dm |   2 +-
 .../antagonists/revolution/revolution.dm      |   4 +-
 code/modules/antagonists/spy/spy_bounty.dm    |   8 +-
 .../traitor/objectives/eyesnatching.dm        |  10 +-
 .../voidwalker/voidwalker_organs.dm           |  12 +-
 .../voidwalker/voidwalker_species.dm          |   4 +-
 .../voidwalker/voidwalker_void_eater.dm       |   2 +-
 .../antagonists/wizard/equipment/artefact.dm  |   2 +-
 code/modules/assembly/flash.dm                |   4 +-
 code/modules/awaymissions/pamphlet.dm         |   2 +-
 .../bitrunning/server/obj_generation.dm       |   2 +-
 code/modules/cargo/bounties/medical.dm        |  61 ++---
 code/modules/cargo/bounties/special.dm        |  12 +-
 code/modules/cargo/exports/lavaland.dm        |   6 +-
 code/modules/cargo/exports/organs.dm          |  20 +-
 code/modules/cargo/packs/medical.dm           |   2 +-
 code/modules/client/preferences/species.dm    |   2 +-
 .../preferences/species_features/basic.dm     |   4 +-
 .../preferences/species_features/felinid.dm   |   4 +-
 .../preferences/species_features/lizard.dm    |   4 +-
 .../preferences/species_features/monkey.dm    |   2 +-
 .../species_features/mushperson.dm            |   2 +-
 code/modules/clothing/glasses/_glasses.dm     |   4 +-
 code/modules/clothing/gloves/special.dm       |   2 +-
 code/modules/clothing/head/jobs.dm            |   6 +-
 code/modules/clothing/head/tinfoilhat.dm      |   2 +-
 code/modules/clothing/neck/_neck.dm           |   8 +-
 code/modules/deathmatch/deathmatch_lobby.dm   |   2 +-
 code/modules/events/brain_trauma.dm           |   2 +-
 code/modules/events/creep_awakening.dm        |   2 +-
 code/modules/events/holiday/halloween.dm      |   2 +-
 .../experisci/experiment/experiments.dm       |   2 +-
 code/modules/experisci/handheld_scanner.dm    |   2 +-
 .../exploration_events/trader.dm              |   2 +-
 .../food_and_drinks/recipes/soup_mixtures.dm  |   2 +-
 .../recipes/tablecraft/recipes_bread.dm       |   8 +-
 .../recipes/tablecraft/recipes_burger.dm      |   8 +-
 .../recipes/tablecraft/recipes_cake.dm        |   6 +-
 .../recipes/tablecraft/recipes_drink.dm       |   4 +-
 .../recipes/tablecraft/recipes_lizard.dm      |  20 +-
 .../recipes/tablecraft/recipes_meat.dm        |   2 +-
 .../recipes/tablecraft/recipes_mexican.dm     |   2 +-
 .../recipes/tablecraft/recipes_misc.dm        |   4 +-
 .../recipes/tablecraft/recipes_pastry.dm      |   2 +-
 code/modules/hydroponics/grown/banana.dm      |   2 +-
 code/modules/jobs/job_types/_job.dm           |   2 +-
 .../job_types/assistant/gimmick_assistants.dm |   2 +-
 .../job_types/chaplain/chaplain_nullrod.dm    |   2 +-
 .../chaplain/chaplain_vorpal_scythe.dm        |   6 +-
 .../jobs/job_types/station_trait/human_ai.dm  |   2 +-
 .../library/skill_learning/skill_station.dm   |   6 +-
 .../library/skill_learning/skillchip.dm       |  10 +-
 code/modules/lost_crew/damages/decay.dm       |   2 +-
 code/modules/lost_crew/lost_crew_manager.dm   |   6 +-
 .../ruins/lavalandruin_code/syndicate_base.dm |  14 +-
 .../mapfluff/ruins/spaceruin_code/meateor.dm  |  42 +--
 code/modules/meteors/meteor_types.dm          |   8 +-
 .../mining/boulder_processing/boulder.dm      |   7 +-
 .../equipment/monster_organs/brimdust_sac.dm  |  10 +-
 .../equipment/monster_organs/monster_organ.dm |  36 +--
 .../monster_organs/regenerative_core.dm       |  14 +-
 .../equipment/monster_organs/rush_gland.dm    |  12 +-
 .../mining/lavaland/necropolis_chests.dm      |   6 +-
 code/modules/mining/lavaland/tendril_loot.dm  |  14 +-
 code/modules/mob/dead/observer/observer.dm    |   4 +-
 .../mob/living/basic/bots/honkbots/honkbot.dm |   2 +-
 .../basic/farm_animals/gorilla/gorilla.dm     |  13 +
 .../basic/heretic/maid_in_the_mirror.dm       |   2 +-
 .../mob/living/basic/heretic/raw_prophet.dm   |   2 +-
 .../basic/lavaland/brimdemon/brimdemon.dm     |   2 +-
 .../basic/lavaland/hivelord/hivelord.dm       |   2 +-
 .../living/basic/lavaland/legion/legion.dm    |   6 +-
 .../basic/lavaland/legion/legion_tumour.dm    |  24 +-
 .../basic/lavaland/lobstrosity/lobstrosity.dm |   4 +-
 code/modules/mob/living/basic/pets/cat/cat.dm |   8 +-
 .../mob/living/basic/pets/cat/keeki.dm        |   6 +-
 .../mob/living/basic/pets/dog/dog_subtypes.dm |   4 +-
 .../mob/living/basic/pets/penguin/penguin.dm  |   2 +-
 .../living/basic/space_fauna/bear/_bear.dm    |   4 +-
 .../living/basic/space_fauna/cat_surgeon.dm   |   2 +-
 .../basic/space_fauna/changeling/headslug.dm  |   2 +-
 .../basic/space_fauna/demon/demon_items.dm    |  12 +-
 .../basic/space_fauna/demon/demon_subtypes.dm |   2 +-
 .../basic/space_fauna/eyeball/_eyeball.dm     |   4 +-
 .../eyeball/eyeball_ai_behavior.dm            |   4 +-
 .../space_fauna/eyeball/eyeball_ai_subtree.dm |   2 +-
 code/modules/mob/living/brain/MMI.dm          |  18 +-
 code/modules/mob/living/brain/brain.dm        |  14 +-
 .../mob/living/brain/brain_cybernetic.dm      |   8 +-
 code/modules/mob/living/brain/brain_item.dm   | 101 ++++----
 code/modules/mob/living/brain/death.dm        |   2 +-
 code/modules/mob/living/brain/life.dm         |   4 +-
 code/modules/mob/living/brain/skillchip.dm    |  20 +-
 .../mob/living/carbon/alien/adult/adult.dm    |   4 +-
 .../living/carbon/alien/adult/alien_powers.dm |   6 +-
 .../living/carbon/alien/adult/caste/drone.dm  |   8 +-
 .../living/carbon/alien/adult/caste/hunter.dm |   2 +-
 .../carbon/alien/adult/caste/praetorian.dm    |  10 +-
 .../carbon/alien/adult/caste/sentinel.dm      |   6 +-
 .../mob/living/carbon/alien/adult/death.dm    |   2 +-
 .../mob/living/carbon/alien/adult/queen.dm    |  10 +-
 code/modules/mob/living/carbon/alien/alien.dm |  18 +-
 .../mob/living/carbon/alien/alien_defense.dm  |   2 +-
 .../mob/living/carbon/alien/alien_say.dm      |   2 +-
 .../mob/living/carbon/alien/larva/larva.dm    |   2 +-
 .../mob/living/carbon/alien/larva/life.dm     |   2 +-
 .../modules/mob/living/carbon/alien/organs.dm |  68 ++---
 .../carbon/alien/special/alien_embryo.dm      |  22 +-
 .../living/carbon/alien/special/facehugger.dm |  10 +-
 code/modules/mob/living/carbon/carbon.dm      |  30 ++-
 .../mob/living/carbon/carbon_context.dm       |   2 +-
 .../mob/living/carbon/carbon_defense.dm       |  18 +-
 code/modules/mob/living/carbon/carbon_say.dm  |   2 +-
 code/modules/mob/living/carbon/death.dm       |   6 +-
 code/modules/mob/living/carbon/examine.dm     |   8 +-
 .../mob/living/carbon/human/_species.dm       |  32 +--
 code/modules/mob/living/carbon/human/death.dm |   4 +-
 code/modules/mob/living/carbon/human/emote.dm |  12 +-
 code/modules/mob/living/carbon/human/human.dm |  62 ++++-
 .../mob/living/carbon/human/human_defense.dm  |   4 +-
 .../mob/living/carbon/human/human_defines.dm  |   5 +-
 .../mob/living/carbon/human/human_helpers.dm  |   2 +-
 .../mob/living/carbon/human/human_say.dm      |   2 +-
 .../mob/living/carbon/human/human_suicide.dm  |   2 +-
 code/modules/mob/living/carbon/human/life.dm  |   2 +-
 .../carbon/human/species_types/abductors.dm   |   4 +-
 .../carbon/human/species_types/android.dm     |   8 +-
 .../carbon/human/species_types/dullahan.dm    |  28 +-
 .../carbon/human/species_types/ethereal.dm    |  12 +-
 .../carbon/human/species_types/felinid.dm     |  44 ++--
 .../carbon/human/species_types/flypeople.dm   |  16 +-
 .../carbon/human/species_types/golems.dm      |  14 +-
 .../carbon/human/species_types/jellypeople.dm |  10 +-
 .../human/species_types/lizardpeople.dm       |  30 +--
 .../carbon/human/species_types/monkeys.dm     |  18 +-
 .../carbon/human/species_types/mothmen.dm     |   6 +-
 .../carbon/human/species_types/mushpeople.dm  |  15 +-
 .../carbon/human/species_types/plasmamen.dm   |   8 +-
 .../carbon/human/species_types/podpeople.dm   |   4 +-
 .../human/species_types/shadowpeople.dm       |  10 +-
 .../carbon/human/species_types/skeletons.dm   |   6 +-
 .../carbon/human/species_types/snail.dm       |   4 +-
 .../carbon/human/species_types/vampire.dm     |  48 ++--
 .../carbon/human/species_types/zombies.dm     |   9 +-
 code/modules/mob/living/carbon/life.dm        |  26 +-
 code/modules/mob/living/carbon/skillchip.dm   |   8 +-
 .../modules/mob/living/carbon/status_procs.dm |  12 +-
 code/modules/mob/living/damage_procs.dm       |   4 +-
 code/modules/mob/living/emote.dm              |  35 +--
 code/modules/mob/living/living.dm             |   6 +-
 code/modules/mob/living/living_defense.dm     |   6 +-
 code/modules/mob/living/silicon/ai/ai.dm      |   2 +-
 .../modules/mob/living/silicon/robot/robot.dm |   2 +-
 .../hostile/megafauna/bubblegum.dm            |   2 +-
 .../hostile/mining_mobs/elites/elite.dm       |   4 +-
 code/modules/mob/living/taste.dm              |  77 ++++--
 .../mob_spawn/corpses/mining_corpses.dm       |   2 +-
 .../mob_spawn/ghost_roles/golem_roles.dm      |   2 +-
 code/modules/mod/mod_activation.dm            |  71 +++---
 code/modules/mod/mod_ai.dm                    |  29 ++-
 code/modules/mod/mod_construction.dm          |  15 +-
 code/modules/mod/mod_control.dm               |  77 +++---
 code/modules/mod/mod_core.dm                  |  97 +++++--
 code/modules/mod/mod_link.dm                  |   6 +-
 code/modules/mod/mod_paint.dm                 |   4 +-
 code/modules/mod/mod_ui.dm                    |  32 ++-
 code/modules/mod/modules/_module.dm           |   4 +-
 code/modules/mod/modules/module_pathfinder.dm |   8 +-
 code/modules/mod/modules/modules_antag.dm     |  61 +++--
 .../mod/modules/modules_engineering.dm        |  18 +-
 code/modules/mod/modules/modules_general.dm   |  18 +-
 code/modules/mod/modules/modules_maint.dm     |   8 +-
 code/modules/mod/modules/modules_medical.dm   |   8 +-
 code/modules/mod/modules/modules_ninja.dm     |  12 +-
 code/modules/mod/modules/modules_science.dm   |   8 +-
 code/modules/mod/modules/modules_security.dm  |  18 +-
 code/modules/mod/modules/modules_service.dm   |   6 +-
 code/modules/mod/modules/modules_supply.dm    |  14 +-
 code/modules/mod/modules/modules_timeline.dm  |   4 +-
 code/modules/mod/modules/modules_visor.dm     |   4 +-
 code/modules/paperwork/paperplane.dm          |   4 +-
 code/modules/power/apc/apc_attack.dm          |   8 +-
 code/modules/power/lighting/light.dm          |   6 +-
 code/modules/power/power_store.dm             |   6 +-
 .../cascade_delam_objects.dm                  |   2 +-
 .../supermatter/supermatter_hit_procs.dm      |   2 +-
 code/modules/power/tesla/energy_ball.dm       |   2 +-
 code/modules/projectiles/guns/ballistic.dm    |   2 +-
 .../reagents/chemistry/holder/holder.dm       |   4 +-
 .../reagents/chemistry/holder/mob_life.dm     |   4 +-
 .../reagents/chemistry/holder/properties.dm   |  33 +--
 .../reagents/cat2_medicine_reagents.dm        |   4 +-
 .../reagents/drinks/alcohol_reagents.dm       |  24 +-
 .../reagents/drinks/drink_reagents.dm         |  10 +-
 .../chemistry/reagents/drug_reagents.dm       |   4 +-
 .../chemistry/reagents/food_reagents.dm       |  29 ++-
 .../chemistry/reagents/impure_reagents.dm     |   2 +-
 .../impure_medicine_reagents.dm               |  40 +--
 .../impure_reagents/impure_toxin_reagents.dm  |   4 +-
 .../chemistry/reagents/medicine_reagents.dm   |  36 +--
 .../chemistry/reagents/other_reagents.dm      |  27 +-
 .../chemistry/reagents/toxin_reagents.dm      |  16 +-
 .../chemistry/reagents/unique/eigenstasium.dm |   2 +-
 code/modules/reagents/chemistry/recipes.dm    |   4 +-
 code/modules/reagents/chemistry/taste.dm      |  77 ++++++
 code/modules/reagents/reagent_containers.dm   |   2 +-
 .../reagents/reagent_containers/cups/_cup.dm  |   8 +-
 .../reagent_containers/cups/glassbottle.dm    |   2 +-
 .../reagents/withdrawal/generic_addictions.dm |  10 +-
 .../religion/burdened/burdened_trauma.dm      |   4 +-
 code/modules/religion/burdened/psyker.dm      |  14 +-
 code/modules/religion/religion_sects.dm       |   2 +-
 code/modules/religion/rites.dm                |  32 +--
 .../research/designs/limbgrower_designs.dm    |  42 +--
 .../research/designs/medical_designs.dm       |  86 +++----
 .../spells/spell_types/self/lichdom.dm        |   2 +-
 .../spell_types/self/splattercasting_spell.dm |   2 +-
 code/modules/station_goals/vault_mutation.dm  |  12 +-
 .../advanced/bioware/cortex_folding.dm        |   2 +-
 .../advanced/bioware/cortex_imprint.dm        |   2 +-
 code/modules/surgery/advanced/brainwashing.dm |   2 +-
 code/modules/surgery/advanced/lobotomy.dm     |   4 +-
 .../surgery/advanced/necrotic_revival.dm      |   4 +-
 code/modules/surgery/advanced/pacification.dm |   2 +-
 .../surgery/advanced/wingreconstruction.dm    |  12 +-
 code/modules/surgery/bodyparts/head.dm        |  12 +-
 .../surgery/bodyparts/head_hair_and_lips.dm   |   4 +-
 code/modules/surgery/bodyparts/parts.dm       |   4 +-
 .../surgery/bodyparts/robot_bodyparts.dm      |   2 +-
 .../species_parts/lizard_bodyparts.dm         |   2 +-
 .../bodyparts/species_parts/misc_bodyparts.dm |   6 +-
 .../bodyparts/species_parts/moth_bodyparts.dm |   2 +-
 code/modules/surgery/coronary_bypass.dm       |   4 +-
 code/modules/surgery/ear_surgery.dm           |   4 +-
 code/modules/surgery/eye_surgery.dm           |   4 +-
 code/modules/surgery/gastrectomy.dm           |   6 +-
 code/modules/surgery/hepatectomy.dm           |   6 +-
 code/modules/surgery/lobectomy.dm             |   6 +-
 code/modules/surgery/organ_manipulation.dm    |   4 +-
 code/modules/surgery/organs/_organ.dm         |  12 +-
 code/modules/surgery/organs/autosurgeon.dm    |  20 +-
 .../surgery/organs/external/_visual_organs.dm |  38 ++-
 .../modules/surgery/organs/external/spines.dm |  18 +-
 code/modules/surgery/organs/external/tails.dm |  41 +--
 .../organs/external/wings/functional_wings.dm |  48 ++--
 .../organs/external/wings/moth_wings.dm       |  24 +-
 .../surgery/organs/external/wings/wings.dm    |   8 +-
 .../organs/internal/_internal_organ.dm        |  20 +-
 .../organs/internal/appendix/_appendix.dm     |  22 +-
 .../internal/appendix/appendix_golem.dm       |  12 +-
 .../organs/internal/cyberimp/augments_arms.dm |  88 +++----
 .../internal/cyberimp/augments_chest.dm       |  92 ++++---
 .../organs/internal/cyberimp/augments_eyes.dm |  18 +-
 .../internal/cyberimp/augments_internal.dm    |  66 ++---
 .../surgery/organs/internal/ears/_ears.dm     |  49 ++--
 .../surgery/organs/internal/eyes/_eyes.dm     | 185 ++++++--------
 .../surgery/organs/internal/heart/_heart.dm   |  58 ++---
 .../organs/internal/heart/heart_anomalock.dm  |  32 +--
 .../organs/internal/heart/heart_ethereal.dm   |  30 +--
 .../surgery/organs/internal/liver/_liver.dm   |  44 ++--
 .../organs/internal/liver/liver_golem.dm      |   6 +-
 .../organs/internal/liver/liver_plasmaman.dm  |   4 +-
 .../organs/internal/liver/liver_skeleton.dm   |   4 +-
 .../surgery/organs/internal/lungs/_lungs.dm   | 116 ++++-----
 .../organs/internal/stomach/_stomach.dm       |  38 +--
 .../internal/stomach/stomach_ethereal.dm      |  24 +-
 .../organs/internal/stomach/stomach_golem.dm  |  12 +-
 .../surgery/organs/internal/tongue/_tongue.dm | 108 ++++----
 .../internal/vocal_cords/_vocal_cords.dm      |  24 +-
 code/modules/surgery/revival.dm               |   2 +-
 code/modules/surgery/sleeper_protocol.dm      |   2 +-
 code/modules/surgery/stomachpump.dm           |   2 +-
 code/modules/surgery/tools.dm                 |   2 +-
 code/modules/unit_tests/blindness.dm          |   2 +-
 code/modules/unit_tests/fish_unit_tests.dm    |   2 +-
 code/modules/unit_tests/full_heal.dm          |   6 +-
 code/modules/unit_tests/ling_decap.dm         |  10 +-
 code/modules/unit_tests/liver.dm              |   4 +-
 code/modules/unit_tests/lungs.dm              |  22 +-
 code/modules/unit_tests/metabolizing.dm       |   2 +-
 code/modules/unit_tests/organs.dm             |  26 +-
 code/modules/unit_tests/reagent_mob_expose.dm |   7 +
 .../screenshot_high_luminosity_eyes.dm        |   4 +-
 ...umanoids__datum_species_human_vampire.png} | Bin
 .../unit_tests/species_change_organs.dm       |   6 +-
 code/modules/unit_tests/stomach.dm            |   2 +-
 code/modules/unit_tests/tail_wag.dm           |   2 +-
 code/modules/unit_tests/unit_test.dm          |   9 +-
 .../mecha/equipment/weapons/weapons.dm        |   2 +-
 code/modules/vending/wardrobes.dm             |   2 +-
 .../components/action/equpiment_action.dm     |   2 +-
 .../wiremod/components/atom/remotecam.dm      |   8 +-
 .../components/bci/hud/counter_overlay.dm     |   6 +-
 .../components/bci/hud/object_overlay.dm      |   6 +-
 .../components/bci/hud/target_intercept.dm    |   6 +-
 .../components/bci/install_detector.dm        |   6 +-
 .../components/bci/reagent_injector.dm        |   6 +-
 .../components/bci/thought_listener.dm        |   6 +-
 code/modules/wiremod/components/bci/vox.dm    |   6 +-
 .../wiremod/shell/brain_computer_interface.dm |  26 +-
 code/modules/wiremod/shell/shell_items.dm     |   2 +-
 code/modules/zombie/items.dm                  |   2 +-
 code/modules/zombie/organs.dm                 |  26 +-
 html/changelogs/AutoChangeLog-pr-87306.yml    |   5 +
 html/changelogs/AutoChangeLog-pr-87329.yml    |  16 ++
 html/changelogs/AutoChangeLog-pr-87434.yml    |   7 +
 html/changelogs/AutoChangeLog-pr-87622.yml    |   4 +
 html/changelogs/AutoChangeLog-pr-87726.yml    |  10 +
 html/changelogs/AutoChangeLog-pr-87782.yml    |   4 +
 html/changelogs/AutoChangeLog-pr-87789.yml    |   4 +
 html/changelogs/AutoChangeLog-pr-87792.yml    |   4 +
 html/changelogs/AutoChangeLog-pr-87869.yml    |   4 +
 html/changelogs/AutoChangeLog-pr-87898.yml    |   4 +
 html/changelogs/AutoChangeLog-pr-88326.yml    |   4 +
 .../code/datums/components/damage_tracker.dm  |  16 +-
 .../quirks/negative_quirks/photophobia.dm     |   2 +-
 .../datums/quirks/neutral_quirks/lungs.dm     |  10 +-
 .../quirks/positive_quirks/night_vision.dm    |   2 +-
 .../master_files/code/datums/traits/good.dm   |   4 +-
 .../code/datums/traits/neutral.dm             |  12 +-
 .../code/modules/client/preferences/brain.dm  |   4 +-
 .../client/preferences/middleware/food.dm     |   2 +-
 .../client/preferences/mutant_parts.dm        |   2 +-
 .../modules/client/preferences_savefile.dm    |  46 +++-
 .../code/modules/jobs/prisoner.dm             |   2 +-
 .../equipment/monster_organs/monster_organ.dm |   2 +-
 .../mob/dead/new_player/preferences_setup.dm  |   4 +-
 .../code/modules/mob/living/carbon/death.dm   |   2 +-
 .../living/carbon/human/species_type/snail.dm |   4 +-
 .../mob/living/carbon/human_helpers.dm        |   2 +-
 .../research/designs/limbgrower_designs.dm    |   6 +-
 .../research/designs/medical_designs.dm       |   4 +-
 .../surgery/organs/external/antennae.dm       |   6 +-
 .../organs/external/wings/functional_wings.dm |   2 +-
 .../surgery/organs/external/wings/wings.dm    |   2 +-
 .../organs/internal/appendix/_appendix.dm     |   2 +-
 .../internal/cyberimp/augments_internal.dm    |   2 +-
 .../code/modules/surgery/organs/tongue.dm     |   2 +-
 .../ashwalkers/code/buildings/ash_tendril.dm  |   4 +-
 .../ashwalkers/code/effects/ash_rituals.dm    |  38 +--
 .../ashwalkers/code/species/Ashwalkers.dm     |   2 +-
 .../mothership_astrum/spawners.dm             |   6 +-
 .../modules/better_vox/code/vox_species.dm    |   6 +-
 .../modules/bodyparts/code/moth_bodyparts.dm  |   2 +-
 modular_nova/modules/cargo/code/goodies.dm    |   4 +-
 .../code/armament_datums/deforest_medical.dm  |   8 +-
 .../objects/deforest/filled_organ_boxes.dm    |  12 +-
 .../cortical_borer/code/cortical_borer.dm     |  14 +-
 .../code/cortical_borer_abilities.dm          |  23 +-
 .../evolution_things/empowered_egg.dm         |  12 +-
 .../modules/cryosleep/code/cryopod.dm         |   2 +-
 .../datums/components/crafting/recipes.dm     |   8 +-
 .../modules/customization/datums/dna.dm       |   7 +-
 .../modules/client/augment/implants.dm        |  52 ++--
 .../modules/client/augment/organs.dm          |  66 ++---
 .../mob/dead/new_player/sprite_accessories.dm |   6 +-
 .../new_player/sprite_accessories/ears.dm     |   4 +-
 .../new_player/sprite_accessories/fluff.dm    |   2 +-
 .../new_player/sprite_accessories/frills.dm   |   2 +-
 .../new_player/sprite_accessories/genitals.dm |  14 +-
 .../sprite_accessories/head_accessory.dm      |   2 +-
 .../new_player/sprite_accessories/horns.dm    |   2 +-
 .../dead/new_player/sprite_accessories/ipc.dm |   4 +-
 .../sprite_accessories/moth_antennae.dm       |   2 +-
 .../sprite_accessories/neck_accessory.dm      |   2 +-
 .../sprite_accessories/skrell_hair.dm         |   2 +-
 .../new_player/sprite_accessories/snout.dm    |  26 +-
 .../new_player/sprite_accessories/spines.dm   |   2 +-
 .../new_player/sprite_accessories/synthliz.dm |   4 +-
 .../new_player/sprite_accessories/tails.dm    |  14 +-
 .../sprite_accessories/taur_types.dm          |  20 +-
 .../dead/new_player/sprite_accessories/vox.dm |   2 +-
 .../new_player/sprite_accessories/wings.dm    |   4 +-
 .../new_player/sprite_accessories/xeno.dm     |   4 +-
 .../mod_accessory_handler.dm                  |   9 +-
 .../modules/mob/living/carbon/human/human.dm  |   2 +-
 .../mob/living/carbon/human/species.dm        |   8 +-
 .../mob/living/carbon/human/species/akula.dm  |  34 +--
 .../living/carbon/human/species/aquatic.dm    |   4 +-
 .../mob/living/carbon/human/species/dwarf.dm  |   2 +-
 .../mob/living/carbon/human/species/ghoul.dm  |   2 +-
 .../species/hemophage/_organ_corruption.dm    |   4 +-
 .../species/hemophage/atrophied_lungs.dm      |   2 +-
 .../species/hemophage/corrupted_liver.dm      |   4 +-
 .../species/hemophage/corrupted_stomach.dm    |   8 +-
 .../species/hemophage/corrupted_tongue.dm     |   8 +-
 .../species/hemophage/hemophage_actions.dm    |   2 +-
 .../species/hemophage/hemophage_organs.dm     |  16 +-
 .../species/hemophage/hemophage_species.dm    |   8 +-
 .../hemophage/hemophage_status_effects.dm     |   6 +-
 .../species/hemophage/hemophage_tumor.dm      |  20 +-
 .../species/hemophage/tumor_corruption.dm     |   8 +-
 .../mob/living/carbon/human/species/insect.dm |   2 +-
 .../mob/living/carbon/human/species/mammal.dm |   4 +-
 .../carbon/human/species/roundstartslime.dm   |  72 +++---
 .../mob/living/carbon/human/species/skrell.dm |  28 +-
 .../living/carbon/human/species/tajaran.dm    |   4 +-
 .../mob/living/carbon/human/species/unathi.dm |   4 +-
 .../mob/living/carbon/human/species/vox.dm    |   6 +-
 .../living/carbon/human/species/vulpkanin.dm  |   4 +-
 .../mob/living/carbon/human/species/xeno.dm   |  26 +-
 .../chemistry/reagents/alcohol_reagents.dm    |   2 +-
 .../modules/surgery/organs/cap.dm             |   4 +-
 .../modules/surgery/organs/ears.dm            |   6 +-
 .../modules/surgery/organs/eyes.dm            |   6 +-
 .../modules/surgery/organs/fluff.dm           |   2 +-
 .../modules/surgery/organs/frills.dm          |   2 +-
 .../modules/surgery/organs/genitals.dm        |  96 +++----
 .../modules/surgery/organs/head_accessory.dm  |   2 +-
 .../modules/surgery/organs/horns.dm           |   2 +-
 .../modules/surgery/organs/moth_antennae.dm   |   2 +-
 .../modules/surgery/organs/moth_markings.dm   |   2 +-
 .../modules/surgery/organs/neck_accessory.dm  |   2 +-
 .../modules/surgery/organs/nif.dm             |   4 +-
 .../modules/surgery/organs/organ.dm           |  12 +-
 .../modules/surgery/organs/pod.dm             |   2 +-
 .../modules/surgery/organs/skrell_hair.dm     |   2 +-
 .../modules/surgery/organs/synth_antenna.dm   |   2 +-
 .../modules/surgery/organs/synth_screen.dm    |   2 +-
 .../modules/surgery/organs/tails.dm           |  14 +-
 .../modules/surgery/organs/taur_body.dm       |  35 +--
 .../modules/surgery/organs/vox.dm             |   8 +-
 .../modules/surgery/organs/wings.dm           |  28 +-
 .../modules/surgery/organs/xenodorsal.dm      |   3 +-
 .../modules/surgery/organs/xenohead.dm        |   3 +-
 .../modules/taur_mechanics/code/human.dm      |   4 +-
 .../taur_mechanics/code/saddle_component.dm   |  11 +-
 .../code/taur_clothing_offset.dm              |   4 +-
 modular_nova/modules/customization/readme.md  |   8 +-
 .../echolocation_quirk/code/echolocation.dm   |   4 +-
 .../modules/emote_panel/code/emote_panel.dm   |   2 +-
 .../code/additionalemotes/turf_emote.dm       |   4 +-
 .../modules/exp_corps/code/clothing.dm        |   4 +-
 .../faction/code/mapping/mapping_helpers.dm   |  10 +-
 .../icemoon_additions/code/icecat_recipes.dm  |   6 +-
 .../modules/implants/code/augments_arms.dm    |  46 ++--
 .../modules/implants/code/augments_chest.dm   |   4 +-
 .../modules/implants/code/augments_eyes.dm    |  10 +-
 .../modules/implants/code/augments_head.dm    |  22 +-
 .../implants/code/augments_internal.dm        |  10 +-
 .../modules/implants/code/medical_designs.dm  |  32 +--
 .../code/interaction_datum.dm                 |   4 +-
 .../modular_implants/code/misc_devices.dm     |   4 +-
 .../modular_implants/code/nif_actions.dm      |   2 +-
 .../modular_implants/code/nif_implants.dm     |  12 +-
 .../modular_implants/code/nif_persistence.dm  |   6 +-
 .../modules/modular_implants/code/nifs.dm     |  54 ++--
 .../modular_implants/code/nifs_tgui.dm        |  14 +-
 .../modular_implants/code/nifsoft_catalog.dm  |   6 +-
 .../modules/modular_implants/code/nifsofts.dm |  16 +-
 .../modular_implants/code/nifsofts/huds.dm    |   2 +-
 .../code/nifsofts/money_sense.dm              |   2 +-
 .../modular_implants/code/nifsofts/scryer.dm  |   2 +-
 .../code/nifsofts/shapeshifter.dm             |   2 +-
 .../code/soulcatcher/handheld_soulcatcher.dm  |   2 +-
 .../code/soulcatcher/soulcatcher_component.dm |   2 +-
 .../lewd_items/code/lewd_arousal/arousal.dm   |   4 +-
 .../lewd_items/code/lewd_arousal/climax.dm    |   8 +-
 .../lewd_arousal/status_effects/aroused.dm    |   2 +-
 .../lewd_arousal/status_effects/climax.dm     |   8 +-
 .../status_effects/fluid_generation.dm        |   6 +-
 .../lewd_chemistry/reagents/_aphrodisiac.dm   |  46 ++--
 .../code/lewd_chemistry/reagents/camphor.dm   |   6 +-
 .../code/lewd_chemistry/reagents/crocin.dm    |   2 +-
 .../lewd_chemistry/reagents/incubus_draft.dm  |  38 +--
 .../lewd_chemistry/reagents/succubus_milk.dm  |   2 +-
 .../code/lewd_clothing/latex_catsuit.dm       |   2 +-
 .../lewd_items/code/lewd_clothing/strapon.dm  |  18 +-
 .../lewd_items/code/lewd_helpers/human.dm     |  12 +-
 .../lewd_items/code/lewd_helpers/organs.dm    |   2 +-
 .../code/lewd_items/_masturbation_item.dm     |   4 +-
 .../lewd_items/code/lewd_items/clamps.dm      |   4 +-
 .../lewd_items/code/lewd_items/dildo.dm       |  22 +-
 .../lewd_items/code/lewd_items/feather.dm     |   2 +-
 .../lewd_items/code/lewd_items/fleshlight.dm  |   2 +-
 .../code/lewd_items/kinky_shocker.dm          |   6 +-
 .../lewd_items/code/lewd_items/magic_wand.dm  |   6 +-
 .../code/lewd_items/torture_candle.dm         |   6 +-
 .../lewd_items/code/lewd_items/vibrator.dm    |   6 +-
 .../lewd_items/code/lewd_items/vibroring.dm   |   2 +-
 .../code/lewd_machinery/milking_machine.dm    |  24 +-
 .../code/lewd_machinery/washing_machine.dm    |   4 +-
 .../lewd_items/code/lewd_organs/_genital.dm   |   8 +-
 .../lewd_items/code/lewd_organs/breasts.dm    |   4 +-
 .../lewd_items/code/lewd_organs/testicles.dm  |   4 +-
 .../lewd_items/code/lewd_organs/vagina.dm     |   4 +-
 .../code/modular_persistence.dm               |  18 +-
 .../modules/modular_vending/code/wardrobes.dm |   2 +-
 .../moretraitoritems/code/autosurgeon.dm      |  38 +--
 .../modules/mutants/code/mutant_species.dm    |   4 +-
 .../modules/night_vision/night_vision.dm      |   2 +-
 modular_nova/modules/organs/code/ears.dm      |   8 +-
 modular_nova/modules/organs/code/heart.dm     |  12 +-
 modular_nova/modules/organs/code/liver.dm     |   2 +-
 modular_nova/modules/organs/code/lungs.dm     |  10 +-
 modular_nova/modules/organs/code/stomach.dm   |  16 +-
 modular_nova/modules/organs/code/tongue.dm    |  50 ++--
 .../modules/oversized/code/oversized_quirk.dm |   4 +-
 .../modules/primitive_catgirls/code/organs.dm |   8 +-
 .../primitive_catgirls/code/spawner.dm        |   2 +-
 .../primitive_catgirls/code/species.dm        |   6 +-
 .../modules/resleeving/code/rsd_interface.dm  |   4 +-
 .../code/loadout_implants.dm                  |  36 +--
 .../code/loadout_subtypes.dm                  |  44 ++--
 .../modules/synths/code/bodyparts/brain.dm    |  12 +-
 .../modules/synths/code/bodyparts/ears.dm     |   6 +-
 .../modules/synths/code/bodyparts/eyes.dm     |   6 +-
 .../modules/synths/code/bodyparts/heart.dm    |   6 +-
 .../code/bodyparts/internal_computer/brain.dm |  12 +-
 .../internal_computer/internal_computer.dm    |  12 +-
 .../modules/synths/code/bodyparts/limbs.dm    |   2 +-
 .../modules/synths/code/bodyparts/liver.dm    |   6 +-
 .../modules/synths/code/bodyparts/lungs.dm    |   6 +-
 .../synths/code/bodyparts/power_cord.dm       |   4 +-
 .../code/bodyparts/silicon_alt_brains.dm      |   8 +-
 .../modules/synths/code/bodyparts/stomach.dm  |  12 +-
 .../modules/synths/code/bodyparts/tongue.dm   |   8 +-
 modular_nova/modules/synths/code/defib.dm     |   4 +-
 .../modules/synths/code/species/synthetic.dm  |  30 +--
 .../code/surgery/robot_brain_surgery.dm       |   2 +-
 .../code/surgery/robot_heart_surgery.dm       |   4 +-
 .../code/surgery/robot_liver_surgery.dm       |   4 +-
 .../synths/code/surgery/robot_lung_surgery.dm |   4 +-
 .../code/surgery/robot_stomach_surgery.dm     |   4 +-
 .../modules/taur_mechanics/code/constrict.dm  |   4 +-
 .../taur_mechanics/code/preferences.dm        |   2 +-
 .../taur_mechanics/code/serpentine_taur.dm    |  10 +-
 modular_nova/modules/teshari/code/_teshari.dm |   6 +-
 .../research/xenoarch/xenoarch_reward.dm      |   4 +-
 .../modules/xenoarchartifacts/obj/exosuit.dm  |   2 +-
 .../modules/autoaccent/code/autoaccent.dm     |  10 +-
 tff_modular/modules/nabbers/code/_nabbers.dm  |  14 +-
 .../code/abilites/nabber_welding_eyes.dm      |   2 +-
 .../modules/nabbers/code/nabber_organs.dm     |  22 +-
 tgstation.dme                                 |   1 +
 tgui/packages/tgui/interfaces/MODsuit.tsx     |  86 ++++---
 .../87434_internal_external_organ_death.txt   |   2 +
 758 files changed, 4706 insertions(+), 4169 deletions(-)
 create mode 100644 code/modules/reagents/chemistry/taste.dm
 rename code/modules/unit_tests/screenshots/{screenshot_humanoids__datum_species_vampire.png => screenshot_humanoids__datum_species_human_vampire.png} (100%)
 create mode 100644 html/changelogs/AutoChangeLog-pr-87306.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-87329.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-87434.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-87622.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-87726.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-87782.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-87789.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-87792.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-87869.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-87898.yml
 create mode 100644 html/changelogs/AutoChangeLog-pr-88326.yml
 create mode 100644 tools/UpdatePaths/Scripts/87434_internal_external_organ_death.txt

diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm
index 97b4e3d53c9..6ef2066b191 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm
@@ -467,7 +467,7 @@
 	pixel_y = 4
 	},
 /obj/item/bodypart/chest,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /obj/item/multitool,
 /turf/open/floor/iron/freezer,
 /area/ruin/powered)
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm
index d4862ce03ee..0ea4048d127 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_mining_site.dmm
@@ -142,7 +142,7 @@
 /turf/open/misc/ice/icemoon,
 /area/icemoon/underground/explored)
 "sp" = (
-/obj/item/organ/internal/monster_core/regenerative_core/legion{
+/obj/item/organ/monster_core/regenerative_core/legion{
 	time_to_decay = 0;
 	pixel_x = 11;
 	pixel_y = 4;
@@ -273,7 +273,7 @@
 /turf/open/misc/asteroid/snow/icemoon,
 /area/icemoon/underground/explored)
 "JP" = (
-/obj/item/organ/internal/monster_core/regenerative_core/legion{
+/obj/item/organ/monster_core/regenerative_core/legion{
 	time_to_decay = 0;
 	pixel_x = -12;
 	pixel_y = -4;
@@ -365,7 +365,7 @@
 /turf/open/floor/plating/snowed/smoothed/icemoon,
 /area/icemoon/underground/explored)
 "VT" = (
-/obj/item/organ/internal/monster_core/regenerative_core/legion{
+/obj/item/organ/monster_core/regenerative_core/legion{
 	time_to_decay = 0;
 	pixel_x = 4;
 	pixel_y = 3;
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
index a3c10d3b508..228c55292fb 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
@@ -90,6 +90,13 @@
 /obj/effect/decal/cleanable/dirt,
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
+"bp" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
 "bu" = (
 /obj/effect/turf_decal/siding/wood,
 /obj/structure/table/wood,
@@ -216,9 +223,15 @@
 /obj/effect/turf_decal/siding/wideplating/dark{
 	dir = 5
 	},
-/obj/machinery/smartfridge/organ,
-/obj/item/organ/internal/alien/resinspinner,
-/obj/item/organ/internal/eyes/night_vision,
+/obj/structure/table/reinforced/plastitaniumglass,
+/obj/item/clothing/gloves/latex/coroner{
+	pixel_x = -1;
+	pixel_y = 8
+	},
+/obj/item/clothing/mask/surgical{
+	pixel_x = 6;
+	pixel_y = 10
+	},
 /turf/open/floor/mineral/plastitanium/red,
 /area/ruin/syndibiodome)
 "cE" = (
@@ -498,9 +511,10 @@
 /obj/effect/decal/cleanable/blood/gibs/down,
 /turf/open/floor/iron/cafeteria,
 /area/ruin/syndibiodome)
-"gX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/warm/directional/west,
+"gZ" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
 /turf/open/floor/catwalk_floor/iron_dark,
 /area/ruin/syndibiodome)
 "ha" = (
@@ -509,10 +523,10 @@
 /turf/open/misc/asteroid/snow/icemoon,
 /area/icemoon/surface/outdoors/noteleport)
 "he" = (
-/mob/living/basic/gorilla/genetics,
 /obj/effect/turf_decal/siding/wood/corner{
 	dir = 1
 	},
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/wood,
 /area/ruin/syndibiodome)
 "hf" = (
@@ -527,8 +541,8 @@
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
 "hm" = (
-/mob/living/basic/gorilla/genetics,
 /obj/effect/decal/cleanable/dirt/dust,
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/iron/dark/small,
 /area/ruin/syndibiodome)
 "hr" = (
@@ -639,14 +653,12 @@
 	},
 /turf/open/floor/iron/dark/herringbone,
 /area/ruin/syndibiodome)
-"iq" = (
-/obj/structure/flora/rock/pile/style_random,
-/mob/living/carbon/human/species/monkey/angry,
-/turf/open/floor/grass,
-/area/ruin/syndibiodome)
 "ir" = (
 /obj/effect/decal/cleanable/dirt,
 /obj/machinery/light/small/dim/directional/east,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
 /turf/open/floor/catwalk_floor/iron_dark,
 /area/ruin/syndibiodome)
 "iG" = (
@@ -723,16 +735,6 @@
 	},
 /obj/effect/decal/cleanable/blood/drip,
 /obj/effect/decal/cleanable/dirt,
-/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/surgery_tray/full,
-/obj/item/clothing/gloves/latex/coroner{
-	pixel_x = -1;
-	pixel_y = 8
-	},
-/obj/item/clothing/mask/surgical{
-	pixel_x = 6;
-	pixel_y = 10
-	},
 /turf/open/floor/mineral/plastitanium/red,
 /area/ruin/syndibiodome)
 "jd" = (
@@ -771,9 +773,6 @@
 /obj/effect/decal/cleanable/dirt,
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
-"jQ" = (
-/turf/closed/indestructible/syndicate/nodiagonal,
-/area/icemoon/surface/outdoors/noteleport)
 "jR" = (
 /obj/effect/decal/cleanable/blood/trails{
 	dir = 4
@@ -1025,9 +1024,6 @@
 /obj/effect/decal/cleanable/dirt,
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
-"mK" = (
-/turf/open/misc/asteroid/snow/icemoon,
-/area/ruin/syndibiodome)
 "mV" = (
 /obj/effect/turf_decal/siding/wideplating/dark,
 /obj/effect/decal/cleanable/dirt/dust,
@@ -1040,6 +1036,9 @@
 "mW" = (
 /obj/effect/spawner/random/trash,
 /obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
 /turf/open/floor/catwalk_floor/iron_dark,
 /area/ruin/syndibiodome)
 "mZ" = (
@@ -1113,6 +1112,13 @@
 /obj/effect/turf_decal/trimline/dark_red/line,
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
+"on" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
 "oq" = (
 /obj/effect/decal/cleanable/blood/trails{
 	dir = 10
@@ -1147,7 +1153,7 @@
 /obj/machinery/light/warm/directional/west,
 /obj/effect/decal/cleanable/dirt/dust,
 /obj/effect/decal/cleanable/dirt,
-/mob/living/basic/gorilla/genetics,
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
 "oH" = (
@@ -1346,7 +1352,6 @@
 /obj/effect/turf_decal/siding/wideplating/dark{
 	dir = 1
 	},
-/mob/living/carbon/human/species/monkey/angry,
 /obj/machinery/light/warm/directional/north,
 /obj/machinery/digital_clock/directional/north,
 /obj/effect/decal/cleanable/dirt,
@@ -1354,8 +1359,8 @@
 /area/ruin/syndibiodome)
 "rQ" = (
 /obj/effect/decal/cleanable/dirt,
-/mob/living/basic/gorilla/genetics,
 /obj/effect/decal/cleanable/dirt/dust,
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
 "rX" = (
@@ -1434,7 +1439,6 @@
 	},
 /obj/effect/decal/cleanable/dirt,
 /obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/mapping_helpers/broken_machine,
 /turf/open/floor/iron/dark/herringbone,
 /area/ruin/syndibiodome)
 "td" = (
@@ -1701,12 +1705,20 @@
 /obj/effect/decal/cleanable/dirt,
 /turf/open/floor/mineral/plastitanium/red,
 /area/ruin/syndibiodome)
+"vH" = (
+/obj/effect/spawner/random/trash,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
 "vJ" = (
 /obj/effect/decal/cleanable/dirt,
-/mob/living/basic/gorilla/genetics,
 /obj/effect/turf_decal/trimline/purple/corner,
 /obj/effect/decal/cleanable/dirt/dust,
 /obj/effect/decal/cleanable/dirt,
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/iron/dark/herringbone,
 /area/ruin/syndibiodome)
 "vK" = (
@@ -1959,7 +1971,6 @@
 /obj/effect/turf_decal/trimline/dark/line{
 	dir = 1
 	},
-/mob/living/carbon/human/species/monkey/angry,
 /obj/effect/turf_decal/siding/wideplating/dark{
 	dir = 1
 	},
@@ -2100,7 +2111,6 @@
 /turf/open/floor/grass,
 /area/ruin/syndibiodome)
 "yU" = (
-/mob/living/carbon/human/species/monkey/angry,
 /obj/effect/turf_decal/weather/dirt{
 	dir = 9
 	},
@@ -2235,6 +2245,13 @@
 /obj/effect/decal/cleanable/dirt,
 /turf/open/floor/catwalk_floor/iron_dark,
 /area/ruin/syndibiodome)
+"Az" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
 "AA" = (
 /obj/effect/turf_decal/siding/wideplating/dark{
 	dir = 5
@@ -2262,9 +2279,9 @@
 /obj/effect/decal/cleanable/dirt/dust,
 /obj/item/storage/belt/security/webbing,
 /obj/item/storage/toolbox/syndicate,
-/obj/item/gun/ballistic/automatic/pistol,
-/obj/item/ammo_box/magazine/m10mm,
-/obj/item/ammo_box/magazine/m10mm,
+/obj/item/gun/ballistic/automatic/pistol/contraband,
+/obj/item/ammo_box/magazine/m9mm,
+/obj/item/ammo_box/magazine/m9mm,
 /turf/open/floor/mineral/plastitanium/red,
 /area/ruin/syndibiodome)
 "Ba" = (
@@ -2496,7 +2513,6 @@
 /turf/open/floor/iron/white/small,
 /area/ruin/syndibiodome)
 "EE" = (
-/mob/living/carbon/human/species/monkey/angry,
 /obj/effect/decal/cleanable/blood/trails{
 	dir = 1
 	},
@@ -2727,7 +2743,6 @@
 "Hs" = (
 /obj/structure/flora/bush/flowers_br/style_3,
 /obj/structure/flora/bush/flowers_yw/style_3,
-/mob/living/carbon/human/species/monkey/angry,
 /obj/effect/gibspawner/human/bodypartless,
 /obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear,
 /turf/open/floor/grass,
@@ -2810,6 +2825,14 @@
 	},
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
+"Iq" = (
+/obj/machinery/light/small/dim/directional/west,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
 "IF" = (
 /obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear,
 /obj/effect/turf_decal/siding/wideplating/dark/end{
@@ -2947,6 +2970,13 @@
 /obj/effect/decal/cleanable/dirt,
 /turf/open/floor/iron/dark/herringbone,
 /area/ruin/syndibiodome)
+"Kl" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/layer3,
+/obj/structure/cable/layer1,
+/obj/structure/cable,
+/turf/open/floor/catwalk_floor/iron_dark,
+/area/ruin/syndibiodome)
 "Kn" = (
 /obj/effect/decal/cleanable/blood/footprints{
 	dir = 2
@@ -3087,6 +3117,9 @@
 "LA" = (
 /obj/effect/decal/cleanable/dirt,
 /obj/machinery/light/small/dim/directional/west,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
 /turf/open/floor/catwalk_floor/iron_dark,
 /area/ruin/syndibiodome)
 "LB" = (
@@ -3192,6 +3225,8 @@
 /turf/open/floor/iron/cafeteria,
 /area/ruin/syndibiodome)
 "Mr" = (
+/obj/machinery/light/warm/directional/west,
+/obj/effect/decal/cleanable/dirt,
 /turf/open/floor/catwalk_floor/iron_dark,
 /area/ruin/syndibiodome)
 "Mt" = (
@@ -3266,7 +3301,6 @@
 /obj/effect/turf_decal/siding/wideplating/dark{
 	dir = 1
 	},
-/mob/living/carbon/human/species/monkey/angry,
 /obj/effect/decal/cleanable/dirt,
 /obj/effect/turf_decal/trimline/dark/line,
 /obj/effect/decal/cleanable/dirt/dust,
@@ -3348,7 +3382,7 @@
 /obj/effect/turf_decal/weather/dirt{
 	dir = 6
 	},
-/mob/living/basic/gorilla/genetics,
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/grass,
 /area/ruin/syndibiodome)
 "NN" = (
@@ -3364,7 +3398,6 @@
 /obj/effect/turf_decal/siding/wideplating/dark{
 	dir = 6
 	},
-/obj/effect/gibspawner/generic,
 /obj/machinery/digital_clock/directional/east,
 /obj/effect/decal/cleanable/dirt,
 /turf/open/floor/mineral/plastitanium/red,
@@ -3379,11 +3412,8 @@
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
 "Os" = (
-/obj/structure/bodycontainer/morgue/beeper_off{
-	dir = 8
-	},
 /obj/effect/turf_decal/trimline/tram/filled,
-/turf/open/floor/pod/dark,
+/turf/closed/indestructible/syndicate/nodiagonal,
 /area/ruin/syndibiodome)
 "Oy" = (
 /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium,
@@ -3392,13 +3422,6 @@
 	},
 /turf/open/floor/plating,
 /area/ruin/syndibiodome)
-"OD" = (
-/mob/living/carbon/human/species/monkey/angry,
-/obj/effect/turf_decal/weather/dirt{
-	dir = 6
-	},
-/turf/open/floor/grass,
-/area/ruin/syndibiodome)
 "OH" = (
 /obj/effect/decal/cleanable/blood/trails{
 	dir = 8
@@ -3428,8 +3451,8 @@
 /obj/machinery/light/warm/directional/east,
 /obj/item/storage/belt/security/webbing,
 /obj/item/gun/ballistic/automatic/pistol/contraband,
-/obj/item/ammo_box/magazine/m10mm,
-/obj/item/ammo_box/magazine/m10mm,
+/obj/item/ammo_box/magazine/m9mm,
+/obj/item/ammo_box/magazine/m9mm,
 /turf/open/floor/mineral/plastitanium/red,
 /area/ruin/syndibiodome)
 "OM" = (
@@ -3446,6 +3469,9 @@
 "ON" = (
 /obj/effect/decal/cleanable/dirt,
 /obj/machinery/light/small/dim/directional/south,
+/obj/structure/cable,
+/obj/structure/cable/layer1,
+/obj/structure/cable/layer3,
 /turf/open/floor/catwalk_floor/iron_dark,
 /area/ruin/syndibiodome)
 "OO" = (
@@ -3640,7 +3666,6 @@
 /turf/open/floor/mineral/plastitanium/red,
 /area/ruin/syndibiodome)
 "RK" = (
-/mob/living/carbon/human/species/monkey/angry,
 /obj/structure/chair/office/tactical{
 	dir = 4
 	},
@@ -3659,8 +3684,9 @@
 /area/icemoon/surface/outdoors/noteleport)
 "RX" = (
 /obj/effect/turf_decal/siding/wideplating/dark,
-/mob/living/basic/gorilla/genetics,
 /obj/effect/decal/cleanable/dirt,
+/obj/effect/gibspawner/generic,
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/mineral/plastitanium/red,
 /area/ruin/syndibiodome)
 "Se" = (
@@ -3823,6 +3849,10 @@
 	dir = 1
 	},
 /area/ruin/syndibiodome)
+"To" = (
+/obj/machinery/door/airlock/maintenance_hatch,
+/turf/open/floor/iron/dark,
+/area/ruin/syndibiodome)
 "Tu" = (
 /obj/structure/table/reinforced/plastitaniumglass,
 /obj/effect/turf_decal/siding/wideplating/dark{
@@ -3897,6 +3927,7 @@
 /obj/item/stack/sheet/mineral/uranium/five,
 /obj/item/stack/sheet/mineral/uranium/five,
 /obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/warm/directional/east,
 /turf/open/floor/catwalk_floor/iron_dark,
 /area/ruin/syndibiodome)
 "TL" = (
@@ -3971,12 +4002,12 @@
 /turf/open/floor/iron/dark/small,
 /area/ruin/syndibiodome)
 "Ux" = (
-/mob/living/basic/gorilla/genetics,
 /obj/effect/gibspawner/human/bodypartless,
 /obj/effect/decal/cleanable/dirt,
 /obj/effect/turf_decal/trimline/blue/corner{
 	dir = 4
 	},
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/iron/dark,
 /area/ruin/syndibiodome)
 "Uz" = (
@@ -4223,8 +4254,8 @@
 /obj/effect/decal/cleanable/blood/tracks{
 	dir = 4
 	},
-/mob/living/basic/gorilla/genetics,
 /obj/effect/decal/cleanable/dirt,
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/iron/dark/herringbone,
 /area/ruin/syndibiodome)
 "XG" = (
@@ -4362,13 +4393,13 @@
 /area/ruin/syndibiodome)
 "YZ" = (
 /obj/effect/turf_decal/siding/wideplating/dark,
-/mob/living/basic/gorilla/genetics,
 /obj/structure/fluff/fake_vent,
 /obj/effect/decal/cleanable/blood/trails{
 	dir = 1
 	},
 /obj/effect/decal/cleanable/dirt,
 /obj/effect/gibspawner/human/bodypartless,
+/mob/living/basic/gorilla/hostile,
 /turf/open/floor/mineral/plastitanium/red,
 /area/ruin/syndibiodome)
 "Zd" = (
@@ -4690,7 +4721,7 @@ oq
 Mc
 zM
 zM
-mK
+ys
 ys
 ys
 tL
@@ -4727,8 +4758,8 @@ ck
 ys
 ys
 zM
-Ut
-vx
+Kl
+on
 xi
 kw
 wL
@@ -4820,8 +4851,8 @@ jS
 ys
 ys
 zM
-Ut
-Ut
+Kl
+Kl
 zM
 Sr
 zM
@@ -4867,7 +4898,7 @@ pg
 pg
 zM
 zM
-Ut
+Kl
 zM
 zM
 Ab
@@ -4914,7 +4945,7 @@ zd
 ys
 zM
 Db
-Ut
+Kl
 zM
 kK
 MB
@@ -4961,7 +4992,7 @@ pg
 pg
 zM
 ic
-Ut
+Kl
 zM
 rK
 YZ
@@ -5008,7 +5039,7 @@ uD
 ys
 zM
 wY
-Ut
+Kl
 zM
 cB
 ja
@@ -5102,10 +5133,10 @@ AI
 ys
 ys
 zM
-Ut
-Ut
-zM
-zM
+Kl
+Kl
+Iq
+Ro
 zM
 zM
 zM
@@ -5151,8 +5182,8 @@ Hi
 zM
 zM
 Ut
-LA
-Ro
+Kl
+Ut
 zM
 qN
 qU
@@ -5198,10 +5229,10 @@ ys
 ys
 zM
 zM
-Ut
-Ut
-Ut
-vx
+Kl
+Kl
+Kl
+gZ
 je
 kt
 XC
@@ -5582,7 +5613,7 @@ Fl
 qN
 IU
 vu
-iq
+MH
 YD
 Fp
 xz
@@ -5664,13 +5695,13 @@ ys
 ck
 zM
 zM
-mW
-Ut
+vH
+bp
 ir
-Ut
-Ut
-Ut
-vx
+bp
+bp
+bp
+Az
 kw
 Eq
 CV
@@ -5711,7 +5742,7 @@ ys
 ys
 zM
 MP
-Ut
+bp
 zM
 zM
 Ut
@@ -5758,7 +5789,7 @@ ys
 ys
 zM
 qa
-Ut
+bp
 zM
 zM
 dS
@@ -5805,7 +5836,7 @@ ys
 zM
 zM
 Sv
-Ut
+bp
 zM
 wx
 RH
@@ -5852,7 +5883,7 @@ zM
 zM
 rZ
 Ut
-Ut
+bp
 zM
 Ra
 RX
@@ -5899,7 +5930,7 @@ zM
 zM
 zM
 zM
-Ut
+bp
 zM
 Pw
 Oi
@@ -5993,12 +6024,12 @@ Uc
 qp
 sR
 zM
-Ut
-Ut
+bp
+bp
 LA
-mW
-Ut
-vx
+vH
+bp
+Az
 Nt
 uW
 Vv
@@ -6049,7 +6080,7 @@ qN
 pY
 XC
 XC
-qN
+To
 Ut
 zM
 Vj
@@ -6060,7 +6091,7 @@ XE
 Mt
 WB
 iX
-OD
+cN
 zM
 ys
 uD
@@ -6188,8 +6219,8 @@ zM
 zM
 zM
 zM
-Vv
 zM
+To
 zM
 LU
 qN
@@ -6235,8 +6266,8 @@ zM
 ek
 Dc
 zM
-zM
-zM
+Mr
+Ut
 Mr
 Ut
 qN
@@ -6283,7 +6314,7 @@ MM
 bu
 zM
 Kz
-gX
+Ut
 Ut
 Ut
 zM
@@ -6428,7 +6459,7 @@ zM
 zM
 zM
 ys
-jQ
+zM
 zM
 zM
 zM
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm
index 6156174aaba..bd900021094 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm
@@ -235,7 +235,7 @@
 "oL" = (
 /obj/structure/bonfire/prelit,
 /obj/effect/decal/cleanable/ash,
-/obj/item/organ/external/tail/lizard,
+/obj/item/organ/tail/lizard,
 /obj/effect/decal/cleanable/blood/old,
 /obj/structure/stone_tile/slab/cracked,
 /turf/open/misc/asteroid/basalt/wasteland,
@@ -313,7 +313,7 @@
 /area/ruin/unpowered/elephant_graveyard)
 "wp" = (
 /obj/item/knife/combat/bone,
-/obj/item/organ/internal/tongue,
+/obj/item/organ/tongue,
 /obj/effect/decal/cleanable/blood/old,
 /turf/open/misc/asteroid/basalt/wasteland,
 /area/ruin/unpowered/elephant_graveyard)
@@ -386,8 +386,8 @@
 /turf/open/misc/asteroid/basalt/lava_land_surface,
 /area/lavaland/surface)
 "Di" = (
-/obj/item/organ/internal/lungs,
-/obj/item/organ/internal/liver,
+/obj/item/organ/lungs,
+/obj/item/organ/liver,
 /obj/effect/decal/cleanable/blood/old,
 /turf/open/misc/asteroid/basalt/wasteland,
 /area/ruin/unpowered/elephant_graveyard)
@@ -406,7 +406,7 @@
 /turf/open/misc/asteroid/basalt/wasteland,
 /area/ruin/unpowered/elephant_graveyard)
 "Eh" = (
-/obj/item/organ/internal/brain,
+/obj/item/organ/brain,
 /turf/open/misc/asteroid/basalt/wasteland,
 /area/ruin/unpowered/elephant_graveyard)
 "EI" = (
@@ -468,9 +468,9 @@
 /turf/open/floor/mineral/titanium/white,
 /area/ruin/powered/graveyard_shuttle)
 "Kj" = (
-/obj/item/organ/internal/heart,
-/obj/item/organ/internal/eyes,
-/obj/item/organ/internal/ears,
+/obj/item/organ/heart,
+/obj/item/organ/eyes,
+/obj/item/organ/ears,
 /obj/effect/decal/cleanable/blood/gibs/old,
 /turf/open/misc/asteroid/basalt/wasteland,
 /area/ruin/unpowered/elephant_graveyard)
diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
index 66e681981c7..5e8cb710e89 100644
--- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
+++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
@@ -524,9 +524,9 @@
 "tL" = (
 /obj/effect/turf_decal/bot_white,
 /obj/structure/closet/crate/secure/engineering,
-/obj/item/organ/internal/cyberimp/arm/toolset,
-/obj/item/organ/internal/cyberimp/eyes/hud/medical,
-/obj/item/organ/internal/cyberimp/brain/anti_stun,
+/obj/item/organ/cyberimp/arm/toolset,
+/obj/item/organ/cyberimp/eyes/hud/medical,
+/obj/item/organ/cyberimp/brain/anti_stun,
 /turf/open/floor/iron/dark/airless,
 /area/shuttle/ruin/caravan/freighter3)
 "tO" = (
diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
index 025a2b62e0a..52a288e64e6 100644
--- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
+++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm
@@ -341,7 +341,7 @@
 /obj/effect/decal/cleanable/blood/footprints{
 	dir = 8
 	},
-/obj/item/organ/internal/liver,
+/obj/item/organ/liver,
 /obj/structure/window/reinforced/spawner/directional/north,
 /turf/open/floor/iron/dark,
 /area/ruin/space/has_grav/dangerous_research/lab)
@@ -543,7 +543,7 @@
 	dir = 4
 	},
 /obj/effect/decal/cleanable/blood/bubblegum,
-/obj/item/organ/internal/appendix,
+/obj/item/organ/appendix,
 /obj/structure/window/reinforced/spawner/directional/south,
 /obj/structure/window/reinforced/spawner/directional/west,
 /obj/effect/mapping_helpers/burnt_floor,
@@ -903,7 +903,7 @@
 /area/ruin/space/has_grav/dangerous_research/dorms)
 "mG" = (
 /obj/structure/table,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /obj/effect/decal/cleanable/blood/bubblegum,
 /obj/effect/spawner/random/medical/surgery_tool_advanced,
 /obj/effect/turf_decal/tile/blue/fourcorners,
@@ -1056,7 +1056,7 @@
 	dir = 1
 	},
 /obj/effect/decal/cleanable/blood/footprints,
-/obj/item/organ/internal/lungs,
+/obj/item/organ/lungs,
 /obj/structure/window/reinforced/spawner/directional/south,
 /obj/structure/window/reinforced/spawner/directional/east,
 /turf/open/floor/iron/dark,
@@ -1193,7 +1193,7 @@
 	dir = 8
 	},
 /obj/effect/decal/cleanable/blood/gibs,
-/obj/item/organ/internal/brain,
+/obj/item/organ/brain,
 /obj/item/skillchip/research_director,
 /obj/effect/turf_decal/tile/neutral/half{
 	dir = 4
@@ -1279,7 +1279,7 @@
 /obj/effect/decal/cleanable/blood/footprints{
 	dir = 8
 	},
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /obj/effect/mapping_helpers/broken_floor,
 /turf/open/floor/iron/dark,
 /area/ruin/space/has_grav/dangerous_research/lab)
@@ -3692,8 +3692,8 @@
 /area/ruin/space/has_grav/dangerous_research/lab)
 "Wt" = (
 /obj/structure/table/optable,
-/obj/item/organ/internal/eyes,
-/obj/item/organ/internal/liver,
+/obj/item/organ/eyes,
+/obj/item/organ/liver,
 /obj/effect/decal/cleanable/blood/bubblegum,
 /obj/effect/turf_decal/tile/blue/fourcorners,
 /turf/open/floor/iron/white,
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
index f3a4b1f7528..05da4138d0f 100644
--- a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
@@ -876,10 +876,10 @@
 /obj/item/petri_dish,
 /obj/item/petri_dish,
 /obj/item/petri_dish,
-/obj/item/organ/internal/tongue/rat,
+/obj/item/organ/tongue/rat,
 /obj/effect/decal/cleanable/dirt,
 /obj/effect/decal/cleanable/glass,
-/obj/item/organ/internal/stomach/rat,
+/obj/item/organ/stomach/rat,
 /obj/item/fish/ratfish,
 /obj/structure/closet/crate/freezer,
 /obj/effect/spawner/random/medical/surgery_tool,
@@ -1227,7 +1227,7 @@
 /obj/effect/decal/cleanable/dirt/dust,
 /obj/item/food/deadmouse,
 /mob/living/basic/mouse/rat,
-/obj/item/organ/internal/heart/rat,
+/obj/item/organ/heart/rat,
 /turf/open/floor/plating/dumpsterair,
 /area/ruin/space/has_grav/garbagetruck/foodwaste)
 
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
index c697cd5fa00..f1c41c3bf17 100644
--- a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
@@ -1,11 +1,11 @@
 //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
 "bb" = (
-/obj/item/organ/external/wings/moth,
+/obj/item/organ/wings/moth,
 /obj/structure/closet/crate/trashcart,
 /obj/item/bodypart/arm/left/skeleton,
 /obj/item/bodypart/arm/right/skeleton,
 /obj/item/evidencebag,
-/obj/item/organ/internal/heart/cybernetic/tier2,
+/obj/item/organ/heart/cybernetic/tier2,
 /obj/structure/broken_flooring/pile,
 /obj/item/stack/sheet/animalhide/human/five,
 /turf/open/floor/plating,
@@ -183,7 +183,7 @@
 /obj/item/trash/syndi_cakes,
 /obj/item/trash/syndi_cakes,
 /obj/item/poster/random_contraband,
-/obj/item/organ/internal/tongue/zombie,
+/obj/item/organ/tongue/zombie,
 /obj/structure/closet/crate/trashcart,
 /turf/open/floor/plating,
 /area/ruin/space/has_grav/garbagetruck/medicalwaste)
@@ -298,8 +298,8 @@
 /obj/item/stack/medical/gauze,
 /obj/item/stack/sticky_tape/surgical,
 /obj/structure/broken_flooring/corner,
-/obj/item/organ/internal/cyberimp/arm/surgery,
-/obj/item/organ/internal/cyberimp/eyes/hud/medical,
+/obj/item/organ/cyberimp/arm/surgery,
+/obj/item/organ/cyberimp/eyes/hud/medical,
 /turf/open/floor/plating,
 /area/ruin/space/has_grav/garbagetruck/medicalwaste)
 "zu" = (
@@ -417,7 +417,7 @@
 /turf/open/floor/plating,
 /area/ruin/space/has_grav/garbagetruck/medicalwaste)
 "Gp" = (
-/obj/item/organ/internal/eyes/robotic/basic,
+/obj/item/organ/eyes/robotic/basic,
 /obj/item/kitchen/spoon,
 /turf/open/floor/plating,
 /area/ruin/space/has_grav/garbagetruck/medicalwaste)
@@ -437,9 +437,9 @@
 "IM" = (
 /obj/effect/decal/cleanable/robot_debris,
 /obj/structure/closet/crate/freezer,
-/obj/item/organ/internal/liver/roach,
-/obj/item/organ/internal/stomach,
-/obj/item/organ/internal/tongue/robot,
+/obj/item/organ/liver/roach,
+/obj/item/organ/stomach,
+/obj/item/organ/tongue/robot,
 /turf/open/floor/plating,
 /area/ruin/space/has_grav/garbagetruck/medicalwaste)
 "IS" = (
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm
index cdb5b4e2cec..1bc775220c2 100644
--- a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm
@@ -662,7 +662,7 @@
 /obj/structure/mecha_wreckage/ripley,
 /obj/effect/decal/cleanable/fuel_pool,
 /obj/effect/decal/cleanable/molten_object,
-/obj/item/organ/internal/tongue/robot,
+/obj/item/organ/tongue/robot,
 /turf/open/floor/plating/dumpsterair,
 /area/ruin/space/has_grav/garbagetruck/squat)
 "HN" = (
diff --git a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm
index 6954a5f57a2..06451e02e8c 100644
--- a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm
+++ b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm
@@ -5471,7 +5471,7 @@
 /obj/structure/table/wood,
 /obj/item/toy/figure/wizard/special{
 	pixel_y = 9;
-	pixel_x = -4;
+	pixel_x = -4
 	},
 /obj/item/toy/figure/warden{
 	name = "\improper Knight action figure";
diff --git a/_maps/RandomRuins/SpaceRuins/medieval1.dmm b/_maps/RandomRuins/SpaceRuins/medieval1.dmm
index e4df5166993..74ca6aad858 100644
--- a/_maps/RandomRuins/SpaceRuins/medieval1.dmm
+++ b/_maps/RandomRuins/SpaceRuins/medieval1.dmm
@@ -74,7 +74,7 @@
 "qr" = (
 /obj/structure/table/wood,
 /obj/item/plate,
-/obj/item/organ/internal/liver,
+/obj/item/organ/liver,
 /turf/open/floor/wood/parquet,
 /area/ruin/space)
 "rm" = (
@@ -88,7 +88,7 @@
 /turf/open/floor/stone,
 /area/ruin/space)
 "sR" = (
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
 /turf/open/floor/stone,
 /area/ruin/space)
 "tj" = (
@@ -238,7 +238,7 @@
 "Ug" = (
 /obj/effect/decal/cleanable/blood/tracks,
 /obj/effect/decal/cleanable/blood/gibs/up,
-/obj/item/organ/internal/lungs{
+/obj/item/organ/lungs{
 	pixel_x = 6;
 	pixel_y = -7
 	},
diff --git a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm
index 6c08525d8f2..729e9ddf044 100644
--- a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm
+++ b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm
@@ -312,7 +312,7 @@
 /turf/open/floor/iron,
 /area/ruin/space/has_grav/powered/cat_man)
 "be" = (
-/obj/item/organ/external/tail/cat,
+/obj/item/organ/tail/cat,
 /obj/effect/decal/cleanable/blood/old,
 /turf/open/floor/iron/white/corner,
 /area/ruin/space/has_grav/powered/cat_man)
@@ -396,7 +396,7 @@
 "bt" = (
 /obj/structure/table/optable,
 /obj/effect/mob_spawn/corpse/human/damaged,
-/obj/item/organ/internal/ears/cat,
+/obj/item/organ/ears/cat,
 /obj/effect/decal/cleanable/blood/old,
 /turf/open/floor/iron/white,
 /area/ruin/space/has_grav/powered/cat_man)
@@ -737,12 +737,12 @@
 /obj/structure/closet/crate/freezer{
 	name = "cat ears"
 	},
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
 /turf/open/floor/iron/freezer,
 /area/ruin/space/has_grav/powered/cat_man)
 "cv" = (
@@ -791,12 +791,12 @@
 /obj/structure/closet/crate/freezer{
 	name = "cat tails"
 	},
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
 /turf/open/floor/iron/freezer,
 /area/ruin/space/has_grav/powered/cat_man)
 "jc" = (
diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 0c3c231b5f2..1f1ad0f6c4a 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -521,7 +521,7 @@
 	pixel_x = 17;
 	pixel_y = 12
 	},
-/obj/item/organ/internal/cyberimp/arm/toolset{
+/obj/item/organ/cyberimp/arm/toolset{
 	pixel_y = 2;
 	pixel_x = 6
 	},
diff --git a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
index f31929b70a4..719088322f2 100644
--- a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
+++ b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm
@@ -251,14 +251,14 @@
 /area/ruin/space/has_grav/the_outlet/researchrooms)
 "gU" = (
 /obj/structure/closet/secure_closet/freezer/empty,
-/obj/item/organ/internal/tongue/lizard,
+/obj/item/organ/tongue/lizard,
 /obj/item/food/meat/slab/human/mutant/lizard,
-/obj/item/organ/external/tail/lizard,
-/obj/item/organ/internal/heart,
-/obj/item/organ/internal/brain,
-/obj/item/organ/internal/liver,
-/obj/item/organ/internal/lungs,
-/obj/item/organ/internal/stomach,
+/obj/item/organ/tail/lizard,
+/obj/item/organ/heart,
+/obj/item/organ/brain,
+/obj/item/organ/liver,
+/obj/item/organ/lungs,
+/obj/item/organ/stomach,
 /turf/open/floor/iron/freezer,
 /area/ruin/space/has_grav/the_outlet/researchrooms)
 "gX" = (
diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm
index a21d64d505b..ea63bf1b7fe 100644
--- a/_maps/RandomZLevels/caves.dmm
+++ b/_maps/RandomZLevels/caves.dmm
@@ -56,7 +56,7 @@
 	},
 /obj/item/veilrender/honkrender,
 /obj/item/clothing/mask/gas/clown_hat,
-/obj/item/organ/internal/heart/demon,
+/obj/item/organ/heart/demon,
 /turf/open/floor/engine/cult{
 	initial_gas_mix = "n2=23;o2=14;TEMP=2.7"
 	},
@@ -1252,7 +1252,7 @@
 "ki" = (
 /obj/structure/closet/crate/preopen,
 /obj/item/paper/fluff/awaymissions/caves/shipment_receipt,
-/obj/item/organ/internal/eyes/robotic/thermals,
+/obj/item/organ/eyes/robotic/thermals,
 /obj/item/gun/energy/laser/captain/scattershot,
 /obj/item/slimepotion/fireproof,
 /turf/open/misc/asteroid/basalt{
@@ -1977,7 +1977,7 @@
 	},
 /area/awaymission/caves/bmp_asteroid/level_three)
 "YG" = (
-/obj/item/organ/internal/brain/alien,
+/obj/item/organ/brain/alien,
 /turf/open/misc/asteroid/basalt{
 	initial_gas_mix = "n2=23;o2=14;TEMP=2.7"
 	},
diff --git a/_maps/RandomZLevels/mothership_astrum.dmm b/_maps/RandomZLevels/mothership_astrum.dmm
index 272d6977c59..dd275f086bf 100644
--- a/_maps/RandomZLevels/mothership_astrum.dmm
+++ b/_maps/RandomZLevels/mothership_astrum.dmm
@@ -87,7 +87,7 @@
 /obj/structure/window/spawner/directional/north,
 /obj/structure/window/spawner/directional/east,
 /obj/structure/window/spawner/directional/west,
-/obj/item/organ/internal/cyberimp/arm/medibeam,
+/obj/item/organ/cyberimp/arm/medibeam,
 /turf/open/floor/plating/abductor2,
 /area/awaymission/mothership_astrum/halls)
 "bl" = (
@@ -179,7 +179,7 @@
 /area/awaymission/mothership_astrum/deck4)
 "dd" = (
 /obj/effect/decal/cleanable/blood,
-/obj/item/organ/internal/eyes/robotic,
+/obj/item/organ/eyes/robotic,
 /turf/open/floor/plating/abductor2,
 /area/awaymission/mothership_astrum/halls)
 "dh" = (
@@ -289,7 +289,7 @@
 /area/awaymission/mothership_astrum/halls)
 "fa" = (
 /obj/structure/closet/abductor,
-/obj/item/organ/internal/cyberimp/eyes/hud/medical,
+/obj/item/organ/cyberimp/eyes/hud/medical,
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "fb" = (
@@ -424,7 +424,7 @@
 /area/awaymission/mothership_astrum/deck4)
 "hy" = (
 /obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/brain/anti_stun,
+/obj/item/organ/cyberimp/brain/anti_stun,
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "hz" = (
@@ -740,7 +740,7 @@
 /area/awaymission/mothership_astrum/deck2)
 "nB" = (
 /obj/structure/closet/abductor,
-/obj/item/organ/internal/cyberimp/eyes/hud/security,
+/obj/item/organ/cyberimp/eyes/hud/security,
 /turf/open/floor/plating/abductor2,
 /area/awaymission/mothership_astrum/halls)
 "nE" = (
@@ -842,7 +842,7 @@
 /area/awaymission/mothership_astrum/deck3)
 "oA" = (
 /obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/arm/janitor,
+/obj/item/organ/cyberimp/arm/janitor,
 /turf/open/floor/plating/abductor,
 /area/awaymission/mothership_astrum/halls)
 "oF" = (
@@ -1042,7 +1042,7 @@
 /area/awaymission/mothership_astrum/halls)
 "sg" = (
 /obj/effect/decal/cleanable/blood,
-/obj/item/organ/internal/eyes/robotic/shield,
+/obj/item/organ/eyes/robotic/shield,
 /turf/open/floor/plating/abductor2,
 /area/awaymission/mothership_astrum/halls)
 "sk" = (
@@ -1477,7 +1477,7 @@
 /obj/structure/window/spawner/directional/north,
 /obj/structure/window/spawner/directional/east,
 /obj/structure/window/spawner/directional/west,
-/obj/item/organ/internal/cyberimp/chest/scanner,
+/obj/item/organ/cyberimp/chest/scanner,
 /turf/open/floor/plating/abductor2,
 /area/awaymission/mothership_astrum/halls)
 "yB" = (
@@ -1630,7 +1630,7 @@
 /area/awaymission/mothership_astrum/halls)
 "Bl" = (
 /obj/structure/table/abductor,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /turf/open/floor/plating/abductor,
 /area/awaymission/mothership_astrum/halls)
 "Bn" = (
@@ -1665,7 +1665,7 @@
 /obj/structure/window/spawner/directional/east,
 /obj/structure/window/spawner/directional/west,
 /obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/arm/hacker,
+/obj/item/organ/cyberimp/arm/hacker,
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "BE" = (
@@ -2037,7 +2037,7 @@
 /obj/structure/window/spawner/directional/east,
 /obj/structure/window/spawner/directional/west,
 /obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/mouth/breathing_tube,
+/obj/item/organ/cyberimp/mouth/breathing_tube,
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "FV" = (
@@ -2292,7 +2292,7 @@
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "Iv" = (
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /turf/open/floor/plating/abductor2,
 /area/awaymission/mothership_astrum/halls)
 "IA" = (
@@ -2325,7 +2325,7 @@
 /obj/structure/window/spawner/directional/north,
 /obj/structure/window/spawner/directional/east,
 /obj/structure/window/spawner/directional/west,
-/obj/item/organ/internal/cyberimp/brain/anti_drop,
+/obj/item/organ/cyberimp/brain/anti_drop,
 /turf/open/floor/plating/abductor2,
 /area/awaymission/mothership_astrum/halls)
 "IT" = (
@@ -2368,7 +2368,7 @@
 /area/awaymission/mothership_astrum/halls)
 "JB" = (
 /obj/structure/alien/weeds,
-/obj/item/organ/internal/eyes/night_vision/cyber,
+/obj/item/organ/eyes/night_vision/cyber,
 /turf/open/floor/plating/abductor2,
 /area/awaymission/mothership_astrum/deck4)
 "JO" = (
@@ -2634,7 +2634,7 @@
 /area/awaymission/mothership_astrum/deck2)
 "Nd" = (
 /obj/effect/decal/cleanable/blood,
-/obj/item/organ/internal/appendix/fly,
+/obj/item/organ/appendix/fly,
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "Ne" = (
@@ -2666,7 +2666,7 @@
 /area/awaymission/mothership_astrum/halls)
 "Ns" = (
 /obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/arm/armblade,
+/obj/item/organ/cyberimp/arm/armblade,
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "Nw" = (
@@ -2731,7 +2731,7 @@
 /area/awaymission/mothership_astrum/halls)
 "Oa" = (
 /obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/arm/toolset,
+/obj/item/organ/cyberimp/arm/toolset,
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "Om" = (
@@ -2771,7 +2771,7 @@
 /area/awaymission/mothership_astrum/deck1)
 "Os" = (
 /obj/structure/table/abductor,
-/obj/item/organ/internal/cyberimp/brain/anti_drop,
+/obj/item/organ/cyberimp/brain/anti_drop,
 /turf/open/floor/plating/abductor2,
 /area/awaymission/mothership_astrum/halls)
 "Ow" = (
@@ -2890,7 +2890,7 @@
 /obj/effect/turf_decal/sand,
 /obj/structure/table/wood,
 /obj/item/storage/medkit/brute,
-/obj/item/organ/internal/cyberimp/brain/anti_stun,
+/obj/item/organ/cyberimp/brain/anti_stun,
 /turf/open/misc/beach/sand,
 /area/awaymission/mothership_astrum/deck5)
 "PP" = (
@@ -2906,7 +2906,7 @@
 /turf/open/misc/ironsand,
 /area/awaymission/mothership_astrum/deck1)
 "PR" = (
-/obj/item/organ/internal/eyes/snail,
+/obj/item/organ/eyes/snail,
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "PV" = (
@@ -3120,7 +3120,7 @@
 "SA" = (
 /obj/structure/table/abductor,
 /obj/structure/window/reinforced/spawner/directional/west,
-/obj/item/organ/internal/cyberimp/chest/scanner,
+/obj/item/organ/cyberimp/chest/scanner,
 /turf/open/floor/mineral/abductor,
 /area/awaymission/mothership_astrum/halls)
 "SF" = (
@@ -3544,7 +3544,7 @@
 "XE" = (
 /obj/structure/table/wood,
 /obj/item/flashlight/flare/candle/infinite,
-/obj/item/organ/internal/cyberimp/chest/reviver,
+/obj/item/organ/cyberimp/chest/reviver,
 /turf/open/floor/plastic,
 /area/awaymission/mothership_astrum/deck2)
 "XH" = (
diff --git a/_maps/deathmatch/sunrise.dmm b/_maps/deathmatch/sunrise.dmm
index b4de46385cd..d58aac39aec 100644
--- a/_maps/deathmatch/sunrise.dmm
+++ b/_maps/deathmatch/sunrise.dmm
@@ -721,7 +721,7 @@
 /area/deathmatch)
 "Uk" = (
 /obj/structure/closet/crate/coffin,
-/obj/item/organ/internal/cyberimp/arm/shard/katana,
+/obj/item/organ/cyberimp/arm/shard/katana,
 /obj/structure/window/spawner/directional/east,
 /obj/structure/window/spawner/directional/west,
 /obj/structure/window/spawner/directional/south,
diff --git a/_maps/map_files/Basketball/lusty_xenomorphs.dmm b/_maps/map_files/Basketball/lusty_xenomorphs.dmm
index 534376d3f56..f3550c0c15f 100644
--- a/_maps/map_files/Basketball/lusty_xenomorphs.dmm
+++ b/_maps/map_files/Basketball/lusty_xenomorphs.dmm
@@ -135,7 +135,7 @@
 /turf/open/floor/engine,
 /area/centcom/basketball)
 "kT" = (
-/obj/item/organ/internal/body_egg/alien_embryo,
+/obj/item/organ/body_egg/alien_embryo,
 /turf/open/floor/engine,
 /area/centcom/basketball)
 "lh" = (
@@ -327,7 +327,7 @@
 /area/centcom/basketball)
 "Bd" = (
 /obj/structure/alien/weeds,
-/obj/item/organ/internal/body_egg/alien_embryo,
+/obj/item/organ/body_egg/alien_embryo,
 /turf/open/floor/iron/white,
 /area/centcom/basketball)
 "Cv" = (
diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm
index ef4ae3a2ae5..747e04d408c 100644
--- a/_maps/map_files/Birdshot/birdshot.dmm
+++ b/_maps/map_files/Birdshot/birdshot.dmm
@@ -2478,12 +2478,6 @@
 /obj/machinery/power/apc/auto_name/directional/south,
 /turf/open/floor/plating,
 /area/station/maintenance/department/science/xenobiology)
-"aVK" = (
-/obj/structure/rack,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/glass/fifty,
-/turf/open/floor/plating,
-/area/station/maintenance/department/science/xenobiology)
 "aVT" = (
 /obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior,
 /obj/effect/mapping_helpers/airlock/locked,
@@ -2633,6 +2627,10 @@
 /obj/structure/flora/bush/flowers_yw/style_random,
 /turf/open/misc/sandy_dirt,
 /area/station/service/lawoffice)
+"aZg" = (
+/obj/machinery/drone_dispenser,
+/turf/open/floor/plating,
+/area/station/maintenance/department/science/xenobiology)
 "aZh" = (
 /obj/machinery/modular_computer/preset/curator{
 	dir = 8
@@ -9500,24 +9498,6 @@
 	},
 /turf/open/floor/engine,
 /area/station/engineering/supermatter/room)
-"dzi" = (
-/obj/structure/table/wood,
-/obj/item/book/granter/action/spell/smoke/lesser{
-	name = "mysterious old book of cloud-chasing"
-	},
-/obj/item/reagent_containers/cup/glass/bottle/holywater{
-	pixel_x = -2;
-	pixel_y = 2
-	},
-/obj/item/nullrod{
-	pixel_x = 4
-	},
-/obj/item/organ/internal/heart,
-/obj/item/soulstone/anybody/chaplain,
-/obj/machinery/light/small/red/dim/directional/south,
-/obj/item/radio/intercom/chapel/directional/east,
-/turf/open/floor/iron/terracotta/diagonal,
-/area/station/service/chapel/office)
 "dzE" = (
 /obj/structure/cable,
 /obj/structure/disposalpipe/segment{
@@ -26384,10 +26364,6 @@
 /obj/structure/reagent_dispensers/fueltank,
 /turf/open/floor/plating,
 /area/station/maintenance/port/greater)
-"jar" = (
-/obj/machinery/drone_dispenser,
-/turf/open/floor/plating,
-/area/station/maintenance/department/science/xenobiology)
 "jat" = (
 /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
 	dir = 4
@@ -45498,6 +45474,24 @@
 	},
 /turf/open/floor/iron,
 /area/station/hallway/primary/port)
+"pEQ" = (
+/obj/structure/table/wood,
+/obj/item/book/granter/action/spell/smoke/lesser{
+	name = "mysterious old book of cloud-chasing"
+	},
+/obj/item/reagent_containers/cup/glass/bottle/holywater{
+	pixel_x = -2;
+	pixel_y = 2
+	},
+/obj/item/nullrod{
+	pixel_x = 4
+	},
+/obj/item/organ/heart,
+/obj/item/soulstone/anybody/chaplain,
+/obj/machinery/light/small/red/dim/directional/south,
+/obj/item/radio/intercom/chapel/directional/east,
+/turf/open/floor/iron/terracotta/diagonal,
+/area/station/service/chapel/office)
 "pET" = (
 /obj/effect/turf_decal/siding/wideplating{
 	dir = 8
@@ -70367,6 +70361,12 @@
 	},
 /turf/open/floor/iron/checker,
 /area/station/security/breakroom)
+"xtv" = (
+/obj/structure/rack,
+/obj/item/stack/sheet/iron/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/turf/open/floor/plating,
+/area/station/maintenance/department/science/xenobiology)
 "xtD" = (
 /obj/effect/turf_decal/siding/wood{
 	dir = 4
@@ -85969,7 +85969,7 @@ jte
 diI
 yea
 vmt
-dzi
+pEQ
 fEC
 wxR
 fEC
@@ -112964,7 +112964,7 @@ tjj
 tjj
 blb
 ssz
-jar
+aZg
 qRO
 ssz
 vLv
@@ -113221,7 +113221,7 @@ tjj
 blb
 blb
 ssz
-aVK
+xtv
 sPO
 ssz
 aSy
diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index e6134de2453..5a4a74216c4 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -52616,7 +52616,7 @@
 /turf/open/floor/iron/dark/textured,
 /area/station/ai_monitored/security/armory)
 "pgN" = (
-/obj/item/organ/external/tail/monkey,
+/obj/item/organ/tail/monkey,
 /obj/effect/decal/cleanable/blood/splatter,
 /turf/open/misc/asteroid/snow/icemoon,
 /area/icemoon/underground/explored)
@@ -56829,7 +56829,7 @@
 	pixel_y = 4
 	},
 /obj/item/bodypart/chest,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /turf/open/misc/asteroid/snow/icemoon,
 /area/icemoon/underground/explored)
 "qrj" = (
diff --git a/_maps/map_files/KiloStation2/KiloStation2.dmm b/_maps/map_files/KiloStation2/KiloStation2.dmm
index 98c9981aed4..5a2d9b45db6 100644
--- a/_maps/map_files/KiloStation2/KiloStation2.dmm
+++ b/_maps/map_files/KiloStation2/KiloStation2.dmm
@@ -48480,11 +48480,11 @@
 /obj/structure/closet/crate/freezer{
 	name = "organ storage"
 	},
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/heart,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/heart,
 /obj/structure/sign/poster/contraband/random/directional/east,
 /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{
 	dir = 8
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 88f7f830867..d056026b5ff 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -15680,14 +15680,6 @@
 /obj/structure/cable,
 /turf/open/floor/circuit/red,
 /area/station/ai_monitored/turret_protected/ai_upload)
-"fEV" = (
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/obj/machinery/door/airlock/security/glass{
-	name = "Security Post - Cargo"
-	},
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/supply)
 "fEW" = (
 /obj/structure/cable,
 /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -28021,22 +28013,6 @@
 /obj/item/kirbyplants/potty,
 /turf/open/floor/wood/large,
 /area/station/commons/lounge)
-"jTy" = (
-/obj/structure/table/wood,
-/obj/item/book/granter/action/spell/smoke/lesser{
-	name = "mysterious old book of cloud-chasing"
-	},
-/obj/item/reagent_containers/cup/glass/bottle/holywater{
-	pixel_x = -2;
-	pixel_y = 2
-	},
-/obj/item/nullrod{
-	pixel_x = 4
-	},
-/obj/item/organ/internal/heart,
-/obj/item/soulstone/anybody/chaplain,
-/turf/open/floor/cult,
-/area/station/service/chapel/office)
 "jTH" = (
 /obj/machinery/firealarm/directional/east,
 /obj/machinery/pdapainter/security,
@@ -38066,6 +38042,14 @@
 /obj/structure/cable,
 /turf/open/floor/iron,
 /area/station/security/prison/work)
+"nyu" = (
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/obj/machinery/door/airlock/security/glass{
+	name = "Security Post - Cargo"
+	},
+/obj/effect/mapping_helpers/airlock/access/all/security/general,
+/turf/open/floor/iron/dark,
+/area/station/security/checkpoint/supply)
 "nyy" = (
 /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
 /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -59521,6 +59505,22 @@
 "uXd" = (
 /turf/closed/wall/r_wall,
 /area/station/engineering/main)
+"uXh" = (
+/obj/structure/table/wood,
+/obj/item/book/granter/action/spell/smoke/lesser{
+	name = "mysterious old book of cloud-chasing"
+	},
+/obj/item/reagent_containers/cup/glass/bottle/holywater{
+	pixel_x = -2;
+	pixel_y = 2
+	},
+/obj/item/nullrod{
+	pixel_x = 4
+	},
+/obj/item/organ/heart,
+/obj/item/soulstone/anybody/chaplain,
+/turf/open/floor/cult,
+/area/station/service/chapel/office)
 "uXt" = (
 /obj/docking_port/stationary/syndicate/northwest{
 	dir = 8
@@ -63488,17 +63488,6 @@
 	},
 /turf/open/floor/iron/dark,
 /area/station/security/evidence)
-"wme" = (
-/obj/machinery/door/airlock/security/glass{
-	name = "Security Post - Cargo"
-	},
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/cable,
-/obj/effect/turf_decal/tile/brown/fourcorners,
-/obj/effect/mapping_helpers/airlock/access/all/security/general,
-/turf/open/floor/iron/dark,
-/area/station/security/checkpoint/supply)
 "wmf" = (
 /obj/effect/spawner/random/trash/garbage{
 	spawn_scatter_radius = 1
@@ -66216,6 +66205,17 @@
 	},
 /turf/open/floor/iron,
 /area/station/commons/locker)
+"xma" = (
+/obj/machinery/door/airlock/security/glass{
+	name = "Security Post - Cargo"
+	},
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/brown/fourcorners,
+/obj/effect/mapping_helpers/airlock/access/all/security/general,
+/turf/open/floor/iron/dark,
+/area/station/security/checkpoint/supply)
 "xmb" = (
 /obj/machinery/atmospherics/pipe/bridge_pipe/purple/visible{
 	dir = 4
@@ -89982,7 +89982,7 @@ hxd
 rtG
 oor
 oor
-wme
+xma
 oor
 xbu
 oor
@@ -90501,7 +90501,7 @@ kDb
 imT
 gPw
 qNL
-fEV
+nyu
 pVK
 xOw
 uCR
@@ -91337,7 +91337,7 @@ tSw
 tAH
 waD
 tSw
-jTy
+uXh
 vQg
 oCb
 gCA
diff --git a/_maps/map_files/NSVBlueshift/Blueshift.dmm b/_maps/map_files/NSVBlueshift/Blueshift.dmm
index 81c8edf1f82..c32169e95b8 100644
--- a/_maps/map_files/NSVBlueshift/Blueshift.dmm
+++ b/_maps/map_files/NSVBlueshift/Blueshift.dmm
@@ -3182,7 +3182,7 @@
 /area/station/service/hydroponics/garden)
 "aGN" = (
 /obj/effect/decal/cleanable/blood/old,
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
 /obj/item/pen{
 	pixel_x = 5;
 	pixel_y = 8
@@ -11792,7 +11792,7 @@
 /obj/structure/table/wood/fancy,
 /obj/item/book/granter/action/spell/smoke/lesser,
 /obj/item/nullrod,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /obj/item/reagent_containers/cup/glass/bottle/holywater,
 /obj/item/soulstone/anybody/chaplain,
 /obj/machinery/light/small/directional/north,
@@ -19939,7 +19939,7 @@
 /turf/open/floor/iron,
 /area/station/ai_monitored/command/storage/eva/upper)
 "dPO" = (
-/obj/item/organ/external/tail/monkey,
+/obj/item/organ/tail/monkey,
 /turf/open/floor/cult,
 /area/station/maintenance/department/science/xenobiology)
 "dPP" = (
@@ -37079,7 +37079,7 @@
 /turf/closed/wall,
 /area/space/nearstation)
 "hfi" = (
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
 /turf/open/floor/material/meat,
 /area/station/maintenance/department/science/xenobiology)
 "hfl" = (
@@ -40973,16 +40973,16 @@
 /area/station/common/wrestling/arena)
 "hSi" = (
 /obj/structure/table,
-/obj/item/organ/external/tail/cat{
+/obj/item/organ/tail/cat{
 	pixel_x = -5;
 	pixel_y = 4
 	},
-/obj/item/organ/external/tail/fluffy{
+/obj/item/organ/tail/fluffy{
 	pixel_x = -3;
 	pixel_y = 2
 	},
-/obj/item/organ/external/tail/lizard,
-/obj/item/organ/internal/ears/cat,
+/obj/item/organ/tail/lizard,
+/obj/item/organ/ears/cat,
 /obj/effect/decal/cleanable/dirt{
 	icon_state = "dirt-flat-1"
 	},
@@ -42233,9 +42233,9 @@
 	},
 /obj/effect/turf_decal/bot,
 /obj/item/bodypart/arm/left,
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
 /obj/effect/decal/cleanable/blood/old,
-/obj/item/organ/external/tail/lizard,
+/obj/item/organ/tail/lizard,
 /turf/open/floor/iron/dark,
 /area/station/maintenance/department/security/prison_upper)
 "ieW" = (
@@ -48303,7 +48303,7 @@
 	},
 /area/station/hallway/primary/upper)
 "jpm" = (
-/obj/item/organ/internal/liver,
+/obj/item/organ/liver,
 /turf/open/floor/material/meat,
 /area/station/maintenance/department/science/xenobiology)
 "jpn" = (
@@ -49102,7 +49102,7 @@
 "jxj" = (
 /mob/living/basic/mushroom,
 /obj/effect/decal/cleanable/blood/gibs,
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
 /turf/open/floor/plating,
 /area/station/maintenance/department/science/ordnance_maint)
 "jxk" = (
@@ -61911,8 +61911,8 @@
 /area/station/medical/patients_rooms)
 "lSU" = (
 /obj/structure/table,
-/obj/item/organ/internal/stomach/cybernetic,
-/obj/item/organ/internal/eyes/robotic/flashlight,
+/obj/item/organ/stomach/cybernetic,
+/obj/item/organ/eyes/robotic/flashlight,
 /obj/structure/disposalpipe/segment,
 /turf/open/floor/iron,
 /area/station/maintenance/starboard/fore)
@@ -73753,7 +73753,7 @@
 "oif" = (
 /obj/structure/table/optable,
 /obj/effect/decal/cleanable/blood/old,
-/obj/item/organ/internal/brain,
+/obj/item/organ/brain,
 /turf/open/floor/iron/white,
 /area/station/maintenance/abandon_surgery)
 "oih" = (
@@ -84868,9 +84868,9 @@
 /obj/structure/closet/crate/freezer{
 	name = "organ storage"
 	},
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/heart,
+/obj/item/organ/tail/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/heart,
 /obj/effect/decal/cleanable/dirt{
 	icon_state = "dirt-flat-1"
 	},
@@ -87462,7 +87462,7 @@
 /turf/open/floor/iron,
 /area/station/hallway/primary/upper)
 "qNf" = (
-/obj/item/organ/internal/tongue,
+/obj/item/organ/tongue,
 /turf/open/floor/material/meat,
 /area/station/maintenance/department/science/xenobiology)
 "qNi" = (
@@ -99607,7 +99607,7 @@
 /turf/open/floor/plating,
 /area/station/maintenance/department/engineering/atmos_aux_port)
 "tda" = (
-/obj/item/organ/internal/stomach,
+/obj/item/organ/stomach,
 /turf/open/floor/material/meat,
 /area/station/maintenance/department/science/xenobiology)
 "tdb" = (
@@ -115383,7 +115383,7 @@
 /turf/open/floor/plating,
 /area/station/maintenance/department/medical)
 "wbt" = (
-/obj/item/organ/internal/eyes,
+/obj/item/organ/eyes,
 /obj/effect/decal/cleanable/blood/old,
 /turf/open/floor/iron,
 /area/station/maintenance/rus_surgery)
@@ -120913,7 +120913,7 @@
 /obj/structure/closet/crate/freezer{
 	name = "limb storage"
 	},
-/obj/item/organ/internal/liver,
+/obj/item/organ/liver,
 /obj/item/bodypart/leg/left/digitigrade,
 /turf/open/floor/plating,
 /area/station/maintenance/rus_surgery)
@@ -122761,9 +122761,9 @@
 /obj/structure/closet/crate/freezer{
 	name = "organ storage"
 	},
-/obj/item/organ/internal/heart,
-/obj/item/organ/internal/eyes/fly,
-/obj/item/organ/internal/liver,
+/obj/item/organ/heart,
+/obj/item/organ/eyes/fly,
+/obj/item/organ/liver,
 /obj/effect/decal/cleanable/dirt{
 	icon_state = "dirt-flat-1"
 	},
diff --git a/_maps/map_files/Ouroboros/Ouroboros.dmm b/_maps/map_files/Ouroboros/Ouroboros.dmm
index 23ffdf81fd2..880a2bfa7db 100644
--- a/_maps/map_files/Ouroboros/Ouroboros.dmm
+++ b/_maps/map_files/Ouroboros/Ouroboros.dmm
@@ -24942,8 +24942,8 @@
 /obj/effect/spawner/random/medical/memeorgans,
 /obj/effect/spawner/random/medical/memeorgans,
 /obj/effect/spawner/random/medical/organs,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat{
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat{
 	pixel_x = 6
 	},
 /obj/machinery/power/apc/auto_name/directional/south,
diff --git a/_maps/map_files/SerenityStation/SerenityStation.dmm b/_maps/map_files/SerenityStation/SerenityStation.dmm
index 59aafac5889..0a11fddcd9d 100644
--- a/_maps/map_files/SerenityStation/SerenityStation.dmm
+++ b/_maps/map_files/SerenityStation/SerenityStation.dmm
@@ -27158,7 +27158,7 @@
 /obj/structure/table/wood/fancy,
 /obj/item/nullrod,
 /obj/item/book/granter/action/spell/smoke/lesser,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /turf/open/floor/iron/dark/side{
 	dir = 4
 	},
diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
index 0c3eccafc47..55435a6b39b 100644
--- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm
+++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
@@ -37899,11 +37899,11 @@
 /obj/structure/closet/crate/freezer{
 	name = "organ storage"
 	},
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/external/tail/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/ears/cat,
-/obj/item/organ/internal/heart,
+/obj/item/organ/tail/cat,
+/obj/item/organ/tail/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/ears/cat,
+/obj/item/organ/heart,
 /obj/structure/sign/poster/contraband/random/directional/east,
 /obj/machinery/vending/wallmed/directional/north,
 /obj/effect/decal/cleanable/cobweb/cobweb2,
@@ -40114,7 +40114,7 @@
 "lqF" = (
 /obj/structure/table/wood/fancy,
 /obj/item/nullrod,
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /obj/item/reagent_containers/cup/glass/bottle/holywater,
 /obj/machinery/light/small/directional/north,
 /turf/open/floor/pod/dark,
diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm
index d1b9a7ec350..a2457647837 100644
--- a/_maps/map_files/debug/runtimestation.dmm
+++ b/_maps/map_files/debug/runtimestation.dmm
@@ -2626,13 +2626,13 @@
 /area/station/hallway/primary/central)
 "XN" = (
 /obj/structure/table,
-/obj/item/organ/internal/cyberimp/bci{
+/obj/item/organ/cyberimp/bci{
 	pixel_y = 5
 	},
-/obj/item/organ/internal/cyberimp/bci{
+/obj/item/organ/cyberimp/bci{
 	pixel_y = 5
 	},
-/obj/item/organ/internal/cyberimp/bci{
+/obj/item/organ/cyberimp/bci{
 	pixel_y = 5
 	},
 /turf/open/floor/iron/dark,
diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm
index 0e8deac0a59..893f1208686 100644
--- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm
+++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm
@@ -102,7 +102,7 @@
 /area/station/asteroid)
 "N" = (
 /obj/item/instrument/trombone,
-/obj/item/organ/internal/tongue/bone,
+/obj/item/organ/tongue/bone,
 /turf/open/misc/asteroid/dug,
 /area/station/asteroid)
 "O" = (
diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm
index bbeaa4bd07c..66345284283 100644
--- a/_maps/map_files/wawastation/wawastation.dmm
+++ b/_maps/map_files/wawastation/wawastation.dmm
@@ -15446,7 +15446,7 @@
 /obj/item/nullrod{
 	pixel_x = 4
 	},
-/obj/item/organ/internal/heart,
+/obj/item/organ/heart,
 /obj/item/soulstone/anybody/chaplain,
 /turf/open/floor/cult,
 /area/station/service/chapel/office)
@@ -66282,11 +66282,11 @@
 /area/station/hallway/secondary/exit/departure_lounge)
 "xrt" = (
 /obj/effect/decal/cleanable/dirt/dust,
-/obj/item/organ/external/horns,
-/obj/item/organ/external/antennae,
-/obj/item/organ/external/frills,
-/obj/item/organ/external/spines,
-/obj/item/organ/external/tail/lizard/fake,
+/obj/item/organ/horns,
+/obj/item/organ/antennae,
+/obj/item/organ/frills,
+/obj/item/organ/spines,
+/obj/item/organ/tail/lizard/fake,
 /obj/structure/closet/crate/freezer,
 /turf/open/floor/plating,
 /area/station/maintenance/department/science)
diff --git a/_maps/shuttles/emergency_birdshot.dmm b/_maps/shuttles/emergency_birdshot.dmm
index bbcad398257..cdf903f0345 100644
--- a/_maps/shuttles/emergency_birdshot.dmm
+++ b/_maps/shuttles/emergency_birdshot.dmm
@@ -904,14 +904,14 @@
 /obj/structure/closet/crate/freezer,
 /obj/item/bodypart/arm/left/moth,
 /obj/item/bodypart/arm/left/moth,
-/obj/item/organ/external/tail/lizard,
+/obj/item/organ/tail/lizard,
 /obj/item/bodypart/leg/right/digitigrade,
 /obj/item/bodypart/leg/right/digitigrade,
 /obj/item/bodypart/leg/left/fly,
 /obj/item/bodypart/leg/left/fly,
 /obj/item/bodypart/arm/right,
 /obj/item/bodypart/arm/right,
-/obj/item/organ/external/tail/cat,
+/obj/item/organ/tail/cat,
 /obj/effect/turf_decal/stripes/white/end{
 	dir = 1
 	},
diff --git a/_maps/shuttles/emergency_zeta.dmm b/_maps/shuttles/emergency_zeta.dmm
index 720a906a767..ba22cc26301 100644
--- a/_maps/shuttles/emergency_zeta.dmm
+++ b/_maps/shuttles/emergency_zeta.dmm
@@ -198,10 +198,10 @@
 /area/shuttle/escape/brig)
 "IM" = (
 /obj/structure/table/abductor,
-/obj/item/organ/internal/heart/gland/access{
+/obj/item/organ/heart/gland/access{
 	pixel_x = 10
 	},
-/obj/item/organ/internal/heart/gland/egg,
+/obj/item/organ/heart/gland/egg,
 /turf/open/floor/plating/abductor,
 /area/shuttle/escape)
 "JK" = (
diff --git a/_maps/shuttles/ruin_cyborg_mothership.dmm b/_maps/shuttles/ruin_cyborg_mothership.dmm
index 4e0fff656e8..7864564eab1 100644
--- a/_maps/shuttles/ruin_cyborg_mothership.dmm
+++ b/_maps/shuttles/ruin_cyborg_mothership.dmm
@@ -480,7 +480,7 @@
 /turf/open/floor/circuit/airless,
 /area/shuttle/ruin/cyborg_mothership)
 "yQ" = (
-/obj/item/organ/internal/brain,
+/obj/item/organ/brain,
 /obj/structure/cable,
 /turf/open/floor/circuit/airless,
 /area/shuttle/ruin/cyborg_mothership)
diff --git a/_maps/shuttles/whiteship_kilo.dmm b/_maps/shuttles/whiteship_kilo.dmm
index 0192f6aa118..b895743cab0 100644
--- a/_maps/shuttles/whiteship_kilo.dmm
+++ b/_maps/shuttles/whiteship_kilo.dmm
@@ -100,7 +100,7 @@
 /obj/machinery/atmospherics/components/unary/vent_pump/on{
 	dir = 8
 	},
-/obj/item/organ/internal/stomach,
+/obj/item/organ/stomach,
 /obj/item/trash/syndi_cakes,
 /obj/effect/turf_decal/tile/bar{
 	dir = 1
diff --git a/_maps/templates/lazy_templates/ninja_den.dmm b/_maps/templates/lazy_templates/ninja_den.dmm
index 4a791a320d2..5d5acde1c35 100644
--- a/_maps/templates/lazy_templates/ninja_den.dmm
+++ b/_maps/templates/lazy_templates/ninja_den.dmm
@@ -1696,8 +1696,8 @@
 /obj/item/reagent_containers/medigel/synthflesh,
 /obj/item/reagent_containers/medigel/synthflesh,
 /obj/item/reagent_containers/medigel/synthflesh,
-/obj/item/organ/internal/heart/cybernetic/tier2,
-/obj/item/organ/internal/heart/cybernetic/tier2,
+/obj/item/organ/heart/cybernetic/tier2,
+/obj/item/organ/heart/cybernetic/tier2,
 /obj/item/defibrillator,
 /turf/open/floor/iron/sepia,
 /area/centcom/central_command_areas/holding)
diff --git a/_maps/virtual_domains/abductor_ship.dmm b/_maps/virtual_domains/abductor_ship.dmm
index b182c50ed66..b74435a9ab1 100644
--- a/_maps/virtual_domains/abductor_ship.dmm
+++ b/_maps/virtual_domains/abductor_ship.dmm
@@ -63,7 +63,7 @@
 /area/virtual_domain)
 "kl" = (
 /obj/structure/table_frame/abductor,
-/obj/item/organ/internal/lungs{
+/obj/item/organ/lungs{
 	pixel_x = 8;
 	pixel_y = 7
 	},
@@ -247,7 +247,7 @@
 /turf/open/floor/plating/abductor,
 /area/virtual_domain)
 "JC" = (
-/obj/item/organ/external/tail/cat,
+/obj/item/organ/tail/cat,
 /turf/open/floor/plating/abductor,
 /area/virtual_domain)
 "JR" = (
@@ -298,7 +298,7 @@
 /turf/open/floor/plating/abductor,
 /area/virtual_domain)
 "PB" = (
-/obj/item/organ/external/antennae,
+/obj/item/organ/antennae,
 /turf/open/floor/plating/abductor,
 /area/virtual_domain)
 "Qp" = (
diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index f68641b2984..d1fff3b20ed 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -452,3 +452,9 @@ GLOBAL_LIST_INIT(heretic_path_to_color, list(
 #define CM_COLOR_SAT_MAX 0.7
 #define CM_COLOR_LUM_MIN 0.65
 #define CM_COLOR_LUM_MAX 0.75
+
+// Lowest priority
+#define EYE_COLOR_ORGAN_PRIORITY 1
+#define EYE_COLOR_SPECIES_PRIORITY 10
+#define EYE_COLOR_WEED_PRIORITY 20
+#define EYE_COLOR_CULT_PRIORITY 30
diff --git a/code/__DEFINES/dcs/signals/signals_mod.dm b/code/__DEFINES/dcs/signals/signals_mod.dm
index 09b29c93784..58fd8ca689e 100644
--- a/code/__DEFINES/dcs/signals/signals_mod.dm
+++ b/code/__DEFINES/dcs/signals/signals_mod.dm
@@ -5,10 +5,12 @@
 #define COMSIG_MOD_DEPLOYED "mod_deployed"
 /// Called when a MOD user retracts one or more of its parts.
 #define COMSIG_MOD_RETRACTED "mod_retracted"
-/// Called when a MOD deploys a part.
+/// Called when a MOD deploys a part. (mob/user, datum/mod_part/part)
 #define COMSIG_MOD_PART_DEPLOYED "mod_part_deployed"
-/// Called when a MOD retracts a part.
+/// Called when a MOD retracts a part. (mob/user, datum/mod_part/part)
 #define COMSIG_MOD_PART_RETRACTED "mod_part_retracted"
+/// Called when a MOD seals/unseals a part. (datum/mod_part/part)
+#define COMSIG_MOD_PART_SEALED "mod_part_sealed"
 /// Called when a MOD is finished toggling itself.
 #define COMSIG_MOD_TOGGLED "mod_toggled"
 /// Called when a MOD activation is called from toggle_activate(mob/user)
diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm
index 53ac323b61c..2b6c1b32206 100644
--- a/code/__DEFINES/dcs/signals/signals_object.dm
+++ b/code/__DEFINES/dcs/signals/signals_object.dm
@@ -358,10 +358,10 @@
 //called in /obj/item/tank/jetpack/proc/turn_off() : ()
 #define COMSIG_JETPACK_DEACTIVATED "jetpack_deactivated"
 
-//called in /obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle() : ()
+//called in /obj/item/organ/cyberimp/chest/thrusters/proc/toggle() : ()
 #define COMSIG_THRUSTER_ACTIVATED "jetmodule_activated"
 	#define THRUSTER_ACTIVATION_FAILED (1<<0)
-//called in /obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle() : ()
+//called in /obj/item/organ/cyberimp/chest/thrusters/proc/toggle() : ()
 #define COMSIG_THRUSTER_DEACTIVATED "jetmodule_deactivated"
 
 // /obj/item/camera signals
diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm
index 79b0546283d..baf0ef93195 100644
--- a/code/__DEFINES/inventory.dm
+++ b/code/__DEFINES/inventory.dm
@@ -297,7 +297,7 @@ GLOBAL_LIST_INIT(mining_suit_allowed, list(
 	/obj/item/kinetic_crusher,
 	/obj/item/knife,
 	/obj/item/mining_scanner,
-	/obj/item/organ/internal/monster_core,
+	/obj/item/organ/monster_core,
 	/obj/item/storage/bag/ore,
 	/obj/item/pickaxe,
 	/obj/item/resonator,
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index b6aa66a5b1e..26baf699409 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -115,7 +115,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
 #define ismoth(A) (is_species(A, /datum/species/moth))
 #define isfelinid(A) (is_species(A, /datum/species/human/felinid))
 #define isethereal(A) (is_species(A, /datum/species/ethereal))
-#define isvampire(A) (is_species(A,/datum/species/vampire))
+#define isvampire(A) (is_species(A,/datum/species/human/vampire))
 #define isdullahan(A) (is_species(A, /datum/species/dullahan))
 #define ismonkey(A) (is_species(A, /datum/species/monkey))
 #define isandroid(A) (is_species(A, /datum/species/android))
@@ -257,10 +257,6 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
 
 #define isorgan(A) (istype(A, /obj/item/organ))
 
-#define isinternalorgan(A) (istype(A, /obj/item/organ/internal))
-
-#define isexternalorgan(A) (istype(A, /obj/item/organ/external))
-
 #define isclothing(A) (istype(A, /obj/item/clothing))
 
 #define ispickedupmob(A) (istype(A, /obj/item/clothing/head/mob_holder)) // Checks if clothing item is actually a held mob
diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm
index 08e18af74d1..bf0271ca5a9 100644
--- a/code/__DEFINES/reagents.dm
+++ b/code/__DEFINES/reagents.dm
@@ -25,7 +25,7 @@
 // Reagent exposure methods.
 /// Used for splashing.
 #define TOUCH (1<<0)
-/// Used for ingesting the reagents. Food, drinks, inhaling smoke.
+/// Used for ingesting the reagents. Food and drinks.
 #define INGEST (1<<1)
 /// Used by foams, sprays, and blob attacks.
 #define VAPOR (1<<2)
@@ -35,6 +35,8 @@
 #define INJECT (1<<4)
 /// Exclusive to just plumbing. if set we use the round robin technique else we use proportional
 #define LINEAR (1<<5)
+/// Used by smoke or inhaling from a source. Smoke and cigarettes.
+#define INHALE (1<<6)
 
 /// When returned by on_mob_life(), on_mob_dead(), overdose_start() or overdose_processed(), will cause the mob to updatehealth() afterwards
 #define UPDATE_MOB_HEALTH 1
diff --git a/code/__DEFINES/research/anomalies.dm b/code/__DEFINES/research/anomalies.dm
index 49769e8132e..c6060298fe2 100644
--- a/code/__DEFINES/research/anomalies.dm
+++ b/code/__DEFINES/research/anomalies.dm
@@ -26,26 +26,26 @@ GLOBAL_LIST_INIT(bioscrambler_parts_blacklist, typecacheof(list(
 /// Blacklist of organs which should not appear when bioscrambled.
 /// Either will look terrible outside of intended host, give you magical powers, are irreversible, or kill you
 GLOBAL_LIST_INIT(bioscrambler_organs_blacklist, typecacheof(list (
-	/obj/item/organ/external/pod_hair,
-	/obj/item/organ/external/spines,
-	/obj/item/organ/external/wings,
-	/obj/item/organ/external/wings/functional,
-	/obj/item/organ/internal/alien,
-	/obj/item/organ/internal/brain,
-	/obj/item/organ/internal/body_egg,
-	/obj/item/organ/internal/cyberimp,
-	/obj/item/organ/internal/ears/dullahan,
-	/obj/item/organ/internal/eyes/dullahan,
-	/obj/item/organ/internal/heart/cursed,
-	/obj/item/organ/internal/heart/demon,
-	/obj/item/organ/internal/lungs,
-	/obj/item/organ/internal/monster_core,
-	/obj/item/organ/internal/tongue/dullahan,
-	/obj/item/organ/internal/vocal_cords/colossus,
-	/obj/item/organ/internal/zombie_infection,
-	/obj/item/organ/internal/empowered_borer_egg, // NOVA EDIT ADDITION
-	/obj/item/organ/internal/eyes/robotic, // NOVA EDIT ADDITION
-	/obj/item/organ/internal/eyes/night_vision/cyber, // NOVA EDIT ADDITION
+	/obj/item/organ/pod_hair,
+	/obj/item/organ/spines,
+	/obj/item/organ/wings,
+	/obj/item/organ/wings/functional,
+	/obj/item/organ/alien,
+	/obj/item/organ/brain,
+	/obj/item/organ/body_egg,
+	/obj/item/organ/cyberimp,
+	/obj/item/organ/ears/dullahan,
+	/obj/item/organ/eyes/dullahan,
+	/obj/item/organ/heart/cursed,
+	/obj/item/organ/heart/demon,
+	/obj/item/organ/lungs,
+	/obj/item/organ/monster_core,
+	/obj/item/organ/tongue/dullahan,
+	/obj/item/organ/vocal_cords/colossus,
+	/obj/item/organ/zombie_infection,
+	/obj/item/organ/empowered_borer_egg, // NOVA EDIT ADDITION
+	/obj/item/organ/eyes/robotic, // NOVA EDIT ADDITION
+	/obj/item/organ/eyes/night_vision/cyber, // NOVA EDIT ADDITION
 )))
 
 /// List of body parts we can apply to people
diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm
index 9f0cdf853d1..0bdb104d039 100644
--- a/code/__DEFINES/surgery.dm
+++ b/code/__DEFINES/surgery.dm
@@ -30,9 +30,11 @@
 #define ORGAN_PROMINENT (1<<11)
 /// An organ that is ostensibly dangerous when inside a body
 #define ORGAN_HAZARDOUS (1<<12)
+/// This is an external organ, not an inner one. Used in several checks.
+#define ORGAN_EXTERNAL (1<<13)
 // NOVA EDIT ADDITION START - Customization
 /// Synthetic organ granted by a species (for use for organ replacements between species)
-#define ORGAN_SYNTHETIC_FROM_SPECIES (1<<13)
+#define ORGAN_SYNTHETIC_FROM_SPECIES (1<<14)
 // NOVA EDIT ADDITION END
 
 /// Scarring on the right eye
diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm
index a5b89445425..01c13a05c2d 100644
--- a/code/__DEFINES/traits/declarations.dm
+++ b/code/__DEFINES/traits/declarations.dm
@@ -619,7 +619,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
 // example. Through years of training/abuse, their livers have taken
 // a liking to those substances. Steal a sec officer's liver, eat donuts good.
 
-// These traits are applied to /obj/item/organ/internal/liver
+// These traits are applied to /obj/item/organ/liver
 #define TRAIT_LAW_ENFORCEMENT_METABOLISM "law_enforcement_metabolism"
 #define TRAIT_CULINARY_METABOLISM "culinary_metabolism"
 #define TRAIT_COMEDY_METABOLISM "comedy_metabolism"
diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm
index 0045cfd111f..3552bea70cc 100644
--- a/code/__DEFINES/traits/sources.dm
+++ b/code/__DEFINES/traits/sources.dm
@@ -273,7 +273,7 @@
 
 /**
 * Trait granted by [/mob/living/carbon/Initialize] and
-* granted/removed by [/obj/item/organ/internal/tongue]
+* granted/removed by [/obj/item/organ/tongue]
 * Used for ensuring that carbons without tongues cannot taste anything
 * so it is added in Initialize, and then removed when a tongue is inserted
 * and readded when a tongue is removed.
diff --git a/code/__DEFINES/~nova_defines/signals.dm b/code/__DEFINES/~nova_defines/signals.dm
index b417f8c0a31..39b2e7013b2 100644
--- a/code/__DEFINES/~nova_defines/signals.dm
+++ b/code/__DEFINES/~nova_defines/signals.dm
@@ -58,7 +58,7 @@
 //when someone pulls back their fishing rod
 #define COMSIG_FINISH_FISHING "finish_fishing"
 
-/// From /obj/item/organ/internal/stomach/after_eat(atom/edible)
+/// From /obj/item/organ/stomach/after_eat(atom/edible)
 #define COMSIG_STOMACH_AFTER_EAT "stomach_after_eat"
 
 /// For when a Hemophage's pulsating tumor gets added to their body.
diff --git a/code/__HELPERS/honkerblast.dm b/code/__HELPERS/honkerblast.dm
index f49a5ca4aca..4f1f6b71dd3 100644
--- a/code/__HELPERS/honkerblast.dm
+++ b/code/__HELPERS/honkerblast.dm
@@ -23,7 +23,7 @@
 		victim.Stun(100)
 		victim.adjust_stutter(30 SECONDS)
 		victim.set_jitter_if_lower(1000 SECONDS)
-		var/obj/item/organ/internal/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
+		var/obj/item/organ/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
 		ears?.adjustEarDamage(10, 15)
 		to_chat(victim, "<font color='red' size='8'>HONK</font>")
 		var/obj/item/clothing/shoes/victim_shoes = victim.get_item_by_slot(ITEM_SLOT_FEET)
@@ -35,13 +35,13 @@
 		victim.Paralyze(20)
 		victim.Stun(50)
 		victim.set_jitter_if_lower(500 SECONDS)
-		var/obj/item/organ/internal/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
+		var/obj/item/organ/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
 		ears?.adjustEarDamage(7, 10)
 		to_chat(victim, "<font color='red' size='5'>HONK</font>")
 
 	for(var/mob/living/carbon/victim in lightly_honked)
 		victim.Knockdown(20)
 		victim.set_jitter_if_lower(200 SECONDS)
-		var/obj/item/organ/internal/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
+		var/obj/item/organ/ears/ears = victim.get_organ_slot(ORGAN_SLOT_EARS)
 		ears?.adjustEarDamage(4, 5)
 		to_chat(victim, "<font color='red' size='2'>HONK</font>")
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index f29ba81366c..47286c26c57 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -772,7 +772,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list(
 		mob_occupant = occupant
 
 	else if(isorgan(occupant))
-		var/obj/item/organ/internal/brain/brain = occupant
+		var/obj/item/organ/brain/brain = occupant
 		mob_occupant = brain.brainmob
 
 	return mob_occupant
diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm
index aca1f97e624..5fd8f6dfa89 100644
--- a/code/_globalvars/lists/quirks.dm
+++ b/code/_globalvars/lists/quirks.dm
@@ -27,8 +27,8 @@ GLOBAL_LIST_INIT(part_choice_transhuman, list(
 	"Right Arm" = /obj/item/bodypart/arm/right/robot,
 	"Left Leg" = /obj/item/bodypart/leg/left/robot,
 	"Right Leg" = /obj/item/bodypart/leg/right/robot,
-	"Robotic Voice Box" = /obj/item/organ/internal/tongue/robot,
-	"Flashlights for Eyes" = /obj/item/organ/internal/eyes/robotic/flashlight,
+	"Robotic Voice Box" = /obj/item/organ/tongue/robot,
+	"Flashlights for Eyes" = /obj/item/organ/eyes/robotic/flashlight,
 ))
 
 ///Hemiplegic Quirk
diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm
index 6248eccd7e1..d6677a213a4 100644
--- a/code/_globalvars/phobias.dm
+++ b/code/_globalvars/phobias.dm
@@ -125,8 +125,8 @@ GLOBAL_LIST_INIT(phobia_objs, list(
 		/obj/item/gun/energy/alien,
 		/obj/item/hemostat/alien,
 		/obj/item/melee/baton/abductor,
-		/obj/item/organ/internal/body_egg/alien_embryo,
-		/obj/item/organ/internal/heart/gland,
+		/obj/item/organ/body_egg/alien_embryo,
+		/obj/item/organ/heart/gland,
 		/obj/item/radio/headset/abductor,
 		/obj/item/retractor/alien,
 		/obj/item/scalpel/alien,
@@ -255,10 +255,10 @@ GLOBAL_LIST_INIT(phobia_objs, list(
 		/obj/item/grenade/spawnergrenade/spesscarp,
 		/obj/item/knife/carp,
 		/obj/item/nullrod/carp,
-		/obj/item/organ/internal/lungs/carp,
-		/obj/item/organ/internal/tongue/carp,
-		/obj/item/organ/internal/brain/carp,
-		/obj/item/organ/internal/heart/carp,
+		/obj/item/organ/lungs/carp,
+		/obj/item/organ/tongue/carp,
+		/obj/item/organ/brain/carp,
+		/obj/item/organ/heart/carp,
 		/obj/item/storage/fancy/cigarettes/cigpack_carp,
 		/obj/item/stack/sheet/animalhide/carp,
 		/obj/item/toy/plush/carpplushie,
@@ -434,7 +434,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
 		/obj/item/clothing/head/costume/lizard,
 		/obj/item/clothing/shoes/cowboy/lizard,
 		/obj/item/food/kebab/tail,
-		/obj/item/organ/external/tail/lizard,
+		/obj/item/organ/tail/lizard,
 		/obj/item/reagent_containers/cup/glass/bottle/lizardwine,
 		/obj/item/toy/plush/lizard_plushie,
 	)),
@@ -476,7 +476,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
 		/obj/effect/decal/remains/human,
 		/obj/item/clothing/suit/armor/bone,
 		/obj/item/food/meat/slab/human/mutant/skeleton,
-		/obj/item/organ/internal/tongue/bone,
+		/obj/item/organ/tongue/bone,
 		/obj/item/stack/sheet/bone,
 	)),
 	"snakes" = typecacheof(list(
diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm
index 6c1ff83cde2..7da9ea16a45 100644
--- a/code/_globalvars/traits/_traits.dm
+++ b/code/_globalvars/traits/_traits.dm
@@ -680,7 +680,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
 		"TRAIT_LIVING_HEART" = TRAIT_LIVING_HEART,
 		"TRAIT_USED_ORGAN" = TRAIT_USED_ORGAN,
 	),
-	/obj/item/organ/internal/liver = list(
+	/obj/item/organ/liver = list(
 		"TRAIT_BALLMER_SCIENTIST" = TRAIT_BALLMER_SCIENTIST,
 		"TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM,
 		"TRAIT_CORONER_METABOLISM" = TRAIT_CORONER_METABOLISM,
@@ -693,7 +693,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
 		"TRAIT_PRETENDER_ROYAL_METABOLISM" = TRAIT_PRETENDER_ROYAL_METABOLISM,
 		"TRAIT_ROYAL_METABOLISM" = TRAIT_ROYAL_METABOLISM,
 	),
-	/obj/item/organ/internal/lungs = list(
+	/obj/item/organ/lungs = list(
 		"TRAIT_SPACEBREATHING" = TRAIT_SPACEBREATHING,
 	),
 	/obj/machinery/modular_computer = list(
diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm
index 1058b1d0b40..b5488683779 100644
--- a/code/_globalvars/traits/admin_tooling.dm
+++ b/code/_globalvars/traits/admin_tooling.dm
@@ -380,7 +380,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
 		"TRAIT_ROD_LAVA_USABLE" = TRAIT_ROD_LAVA_USABLE,
 		"TRAIT_ROD_REMOVE_FISHING_DUD" = TRAIT_ROD_REMOVE_FISHING_DUD,
 	),
-	/obj/item/organ/internal/liver = list(
+	/obj/item/organ/liver = list(
 		"TRAIT_BALLMER_SCIENTIST" = TRAIT_BALLMER_SCIENTIST,
 		"TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM,
 		"TRAIT_CORONER_METABOLISM" = TRAIT_CORONER_METABOLISM,
@@ -392,7 +392,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
 		"TRAIT_PRETENDER_ROYAL_METABOLISM" = TRAIT_PRETENDER_ROYAL_METABOLISM,
 		"TRAIT_ROYAL_METABOLISM" = TRAIT_ROYAL_METABOLISM,
 	),
-	/obj/item/organ/internal/lungs = list(
+	/obj/item/organ/lungs = list(
 		"TRAIT_SPACEBREATHING" = TRAIT_SPACEBREATHING,
 	),
 	// NOVA EDIT ADDITION START - NOVA TRAITS
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 1b3f950edd6..5eaff57b609 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -129,7 +129,7 @@
 
 //Gas alerts
 // Gas alerts are continuously thrown/cleared by:
-// * /obj/item/organ/internal/lungs/proc/check_breath()
+// * /obj/item/organ/lungs/proc/check_breath()
 // * /mob/living/carbon/check_breath()
 // * /mob/living/carbon/human/check_breath()
 // * /datum/element/atmos_requirements/proc/on_non_stasis_life()
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 4269727e3ea..bf460c97fea 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -333,7 +333,7 @@
 		var/obj/item/bodypart/head/head = human_mob.get_bodypart(BODY_ZONE_HEAD)
 		if(isnull(head))
 			blocked_slots |= ITEM_SLOT_HEAD|ITEM_SLOT_EARS|ITEM_SLOT_EYES|ITEM_SLOT_MASK
-		var/obj/item/organ/internal/eyes/eyes = human_mob.get_organ_slot(ORGAN_SLOT_EYES)
+		var/obj/item/organ/eyes/eyes = human_mob.get_organ_slot(ORGAN_SLOT_EYES)
 		if(eyes?.no_glasses)
 			blocked_slots |= ITEM_SLOT_EYES
 		if(human_mob.bodyshape & BODYSHAPE_DIGITIGRADE)
diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
index 4641e4f0e50..da9eba3fde7 100644
--- a/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
+++ b/code/controllers/subsystem/dynamic/dynamic_rulesets_midround.dm
@@ -863,7 +863,7 @@
 	candidates = living_players
 	for(var/mob/living/carbon/human/candidate in candidates)
 		if( \
-			!candidate.get_organ_by_type(/obj/item/organ/internal/brain) \
+			!candidate.get_organ_by_type(/obj/item/organ/brain) \
 			|| candidate.mind.has_antag_datum(/datum/antagonist/obsessed) \
 			|| candidate.stat == DEAD \
 			|| !(ROLE_OBSESSED in candidate.client?.prefs?.be_special) \
diff --git a/code/datums/actions/items/toggles.dm b/code/datums/actions/items/toggles.dm
index f450b96fc2a..efd9725691a 100644
--- a/code/datums/actions/items/toggles.dm
+++ b/code/datums/actions/items/toggles.dm
@@ -90,7 +90,7 @@
 	. = ..()
 	if(!.)
 		return
-	var/obj/item/organ/internal/cyberimp/eyes/hud/hud_implant = target
+	var/obj/item/organ/cyberimp/eyes/hud/hud_implant = target
 	hud_implant.toggle_hud(owner)
 
 /datum/action/item_action/wheelys
diff --git a/code/datums/ai/monkey/monkey_controller.dm b/code/datums/ai/monkey/monkey_controller.dm
index 9d459f3160c..0074d206983 100644
--- a/code/datums/ai/monkey/monkey_controller.dm
+++ b/code/datums/ai/monkey/monkey_controller.dm
@@ -123,8 +123,8 @@ have ways of interacting with a specific mob and control it.
 /datum/ai_controller/monkey/proc/set_trip_mode(mode = TRUE)
 	var/mob/living/carbon/regressed_monkey = pawn
 	var/brain = regressed_monkey.get_organ_slot(ORGAN_SLOT_BRAIN)
-	if(istype(brain, /obj/item/organ/internal/brain/primate)) // In case we are a monkey AI in a human brain by who was previously controlled by a client but it now not by some marvel
-		var/obj/item/organ/internal/brain/primate/monkeybrain = brain
+	if(istype(brain, /obj/item/organ/brain/primate)) // In case we are a monkey AI in a human brain by who was previously controlled by a client but it now not by some marvel
+		var/obj/item/organ/brain/primate/monkeybrain = brain
 		monkeybrain.tripping = mode
 
 ///re-used behavior pattern by monkeys for finding a weapon
diff --git a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm
index df7123e6f19..e6d6ae24f31 100644
--- a/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm
+++ b/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm
@@ -8,6 +8,11 @@
 
 	///The color this organ draws with. Updated by bodypart/inherit_color()
 	var/draw_color
+	///Override of the color of the organ, from dye sprays
+	var/dye_color
+	///Can this bodypart overlay be dyed?
+	var/dyable = FALSE
+
 	///Where does this organ inherit its color from?
 	var/color_source = ORGAN_COLOR_INHERIT
 	///Take on the dna/preference from whoever we're gonna be inserted in
@@ -93,7 +98,7 @@
 	return appearance
 
 /datum/bodypart_overlay/mutant/color_image(image/overlay, layer, obj/item/bodypart/limb)
-	overlay.color = sprite_datum.color_src ? draw_color : null
+	overlay.color = sprite_datum.color_src ? (dye_color || draw_color) : null
 
 /datum/bodypart_overlay/mutant/added_to_limb(obj/item/bodypart/limb)
 	inherit_color(limb)
@@ -113,7 +118,7 @@
 	. = list()
 	. += "[get_base_icon_state()]"
 	. += "[feature_key]"
-	. += "[draw_color]"
+	. += "[dye_color || draw_color]"
 	return .
 
 ///Return a dumb glob list for this specific feature (called from parse_sprite)
@@ -173,3 +178,10 @@
 	else
 		CRASH("External organ [type] had fetch_sprite_datum called with a null accessory name!")
 
+///From dye sprays. Set the dye_color (draw_color override) of this organ to a new value.
+/datum/bodypart_overlay/mutant/proc/set_dye_color(new_color, obj/item/organ/organ)
+	dye_color = new_color
+	if(organ.owner)
+		organ.owner.update_body_parts()
+	else
+		organ.bodypart_owner?.update_icon_dropped()
diff --git a/code/datums/brain_damage/brain_trauma.dm b/code/datums/brain_damage/brain_trauma.dm
index 8f0f8cfb048..422ad075ea0 100644
--- a/code/datums/brain_damage/brain_trauma.dm
+++ b/code/datums/brain_damage/brain_trauma.dm
@@ -8,7 +8,7 @@
 	var/desc = "A trauma caused by brain damage, which causes issues to the patient."
 	var/scan_desc = "generic brain trauma" //description when detected by a health scanner
 	var/mob/living/carbon/owner //the poor bastard
-	var/obj/item/organ/internal/brain/brain //the poor bastard's brain
+	var/obj/item/organ/brain/brain //the poor bastard's brain
 	var/gain_text = span_notice("You feel traumatized.")
 	var/lose_text = span_notice("You no longer feel traumatized.")
 	var/can_gain = TRUE
diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm
index 198b6746317..195d33c4b4b 100644
--- a/code/datums/brain_damage/split_personality.dm
+++ b/code/datums/brain_damage/split_personality.dm
@@ -191,7 +191,7 @@
 	var/codeword
 	var/objective
 
-/datum/brain_trauma/severe/split_personality/brainwashing/New(obj/item/organ/internal/brain/B, _permanent, _codeword, _objective)
+/datum/brain_trauma/severe/split_personality/brainwashing/New(obj/item/organ/brain/B, _permanent, _codeword, _objective)
 	..()
 	if(_codeword)
 		codeword = _codeword
diff --git a/code/datums/components/crafting/entertainment.dm b/code/datums/components/crafting/entertainment.dm
index f1aa865e0cb..0602624dbb8 100644
--- a/code/datums/components/crafting/entertainment.dm
+++ b/code/datums/components/crafting/entertainment.dm
@@ -22,7 +22,7 @@
 	result = /obj/item/toy/plush/moth
 	reqs = list(
 		/obj/item/stack/sheet/animalhide/mothroach = 1,
-		/obj/item/organ/internal/heart = 1,
+		/obj/item/organ/heart = 1,
 		/obj/item/stack/sheet/cloth = 3,
 	)
 	category = CAT_ENTERTAINMENT
diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm
index d6d3c178e9b..205d30da456 100644
--- a/code/datums/components/crafting/equipment.dm
+++ b/code/datums/components/crafting/equipment.dm
@@ -156,7 +156,7 @@
 
 /datum/crafting_recipe/flashlight_eyes
 	name = "Flashlight Eyes"
-	result = /obj/item/organ/internal/eyes/robotic/flashlight
+	result = /obj/item/organ/eyes/robotic/flashlight
 	time = 10
 	reqs = list(
 		/obj/item/flashlight = 2,
diff --git a/code/datums/components/crafting/melee_weapon.dm b/code/datums/components/crafting/melee_weapon.dm
index b8771257cfa..a8805c56577 100644
--- a/code/datums/components/crafting/melee_weapon.dm
+++ b/code/datums/components/crafting/melee_weapon.dm
@@ -37,10 +37,10 @@
 	name = "Tail Club"
 	result = /obj/item/tailclub
 	reqs = list(
-		/obj/item/organ/external/tail/lizard = 1,
+		/obj/item/organ/tail/lizard = 1,
 		/obj/item/stack/sheet/iron = 1,
 	)
-	blacklist = list(/obj/item/organ/external/tail/lizard/fake)
+	blacklist = list(/obj/item/organ/tail/lizard/fake)
 	time = 4 SECONDS
 	category = CAT_WEAPON_MELEE
 
@@ -63,10 +63,10 @@
 	name = "Liz O' Nine Tails"
 	result = /obj/item/melee/chainofcommand/tailwhip
 	reqs = list(
-		/obj/item/organ/external/tail/lizard = 1,
+		/obj/item/organ/tail/lizard = 1,
 		/obj/item/stack/cable_coil = 1,
 	)
-	blacklist = list(/obj/item/organ/external/tail/lizard/fake)
+	blacklist = list(/obj/item/organ/tail/lizard/fake)
 	time = 4 SECONDS
 	category = CAT_WEAPON_MELEE
 
@@ -74,7 +74,7 @@
 	name = "Cat O' Nine Tails"
 	result = /obj/item/melee/chainofcommand/tailwhip/kitty
 	reqs = list(
-		/obj/item/organ/external/tail/cat = 1,
+		/obj/item/organ/tail/cat = 1,
 		/obj/item/stack/cable_coil = 1,
 	)
 	time = 4 SECONDS
diff --git a/code/datums/components/crafting/robot.dm b/code/datums/components/crafting/robot.dm
index 09c8455a77b..21abedb8b47 100644
--- a/code/datums/components/crafting/robot.dm
+++ b/code/datums/components/crafting/robot.dm
@@ -184,7 +184,7 @@
 		/obj/item/stack/cable_coil = 5,
 		/obj/item/stack/rods = 2,
 		/obj/item/stack/sheet/glass = 1,
-		/obj/item/organ/internal/heart/ethereal = 1,
+		/obj/item/organ/heart/ethereal = 1,
 	)
 	category = CAT_ROBOT
 
diff --git a/code/datums/components/crafting/tailoring.dm b/code/datums/components/crafting/tailoring.dm
index 2196a88325a..45c021aca6c 100644
--- a/code/datums/components/crafting/tailoring.dm
+++ b/code/datums/components/crafting/tailoring.dm
@@ -253,7 +253,7 @@
 	name = "Lizard Cloche Hat"
 	result = /obj/item/clothing/head/costume/lizard
 	time = 1 SECONDS
-	reqs = list(/obj/item/organ/external/tail/lizard = 1)
+	reqs = list(/obj/item/organ/tail/lizard = 1)
 	category = CAT_CLOTHING
 
 /datum/crafting_recipe/lizardhat_alternate
@@ -268,8 +268,8 @@
 	result = /obj/item/clothing/head/costume/kitty/genuine
 	time = 1 SECONDS
 	reqs = list(
-		/obj/item/organ/external/tail/cat = 1,
-		/obj/item/organ/internal/ears/cat = 1,
+		/obj/item/organ/tail/cat = 1,
+		/obj/item/organ/ears/cat = 1,
 	)
 	category = CAT_CLOTHING
 
diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm
index 554e3d611ba..053782f6ed6 100644
--- a/code/datums/components/cult_ritual_item.dm
+++ b/code/datums/components/cult_ritual_item.dm
@@ -162,7 +162,7 @@
 	// For carbonss we also want to clear out the stomach of any holywater
 	if(iscarbon(target))
 		var/mob/living/carbon/carbon_target = target
-		var/obj/item/organ/internal/stomach/belly = carbon_target.get_organ_slot(ORGAN_SLOT_STOMACH)
+		var/obj/item/organ/stomach/belly = carbon_target.get_organ_slot(ORGAN_SLOT_STOMACH)
 		if(belly)
 			holy_to_unholy += belly.reagents.get_reagent_amount(/datum/reagent/water/holywater)
 			belly.reagents.del_reagent(/datum/reagent/water/holywater)
diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm
index cfd04fc3ac2..62e446f5a28 100644
--- a/code/datums/components/food/edible.dm
+++ b/code/datums/components/food/edible.dm
@@ -212,10 +212,12 @@ Behavior that's still missing from this component that original food items had t
 
 	for(var/rid in reagents)
 		var/amount = reagents[rid]
-		if(length(tastes) && (rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin))
-			owner.reagents.add_reagent(rid, amount, tastes.Copy(), added_purity = reagent_purity)
-		else
-			owner.reagents.add_reagent(rid, amount, added_purity = reagent_purity)
+		if(length(tastes) && ispath(rid, /datum/reagent/consumable/nutriment))
+			var/datum/reagent/consumable/nutriment/nid = rid
+			if(initial(nid.carry_food_tastes))
+				owner.reagents.add_reagent(rid, amount, tastes.Copy(), added_purity = reagent_purity)
+				continue
+		owner.reagents.add_reagent(rid, amount, added_purity = reagent_purity)
 
 /datum/component/edible/proc/examine(datum/source, mob/user, list/examine_list)
 	SIGNAL_HANDLER
@@ -282,7 +284,7 @@ Behavior that's still missing from this component that original food items had t
 		examine_list += span_notice("It could use a little more Sodium Chloride...")
 	if (isliving(user))
 		var/mob/living/living_user = user
-		living_user.taste(owner.reagents)
+		living_user.taste_container(owner.reagents)
 
 /datum/component/edible/proc/UseFromHand(obj/item/source, mob/living/M, mob/living/user)
 	SIGNAL_HANDLER
@@ -499,7 +501,7 @@ Behavior that's still missing from this component that original food items had t
 	//Invoke the eater's stomach's after_eat callback if valid
 	if(iscarbon(eater))
 		var/mob/living/carbon/carbon_eater = eater
-		var/obj/item/organ/internal/stomach/stomach = carbon_eater.get_organ_slot(ORGAN_SLOT_STOMACH)
+		var/obj/item/organ/stomach/stomach = carbon_eater.get_organ_slot(ORGAN_SLOT_STOMACH)
 		if(istype(stomach))
 			stomach.after_eat(owner)
 
@@ -686,7 +688,7 @@ Behavior that's still missing from this component that original food items had t
 	bitecount++
 	. = COMPONENT_CANCEL_ATTACK_CHAIN
 
-	doggy.taste(food.reagents) // why should carbons get all the fun?
+	doggy.taste_container(food.reagents) // why should carbons get all the fun?
 	if(bitecount >= 5)
 		var/satisfaction_text = pick("burps from enjoyment.", "yaps for more!", "woofs twice.", "looks at the area where \the [food] was.")
 		doggy.manual_emote(satisfaction_text)
diff --git a/code/datums/components/ghostrole_on_revive.dm b/code/datums/components/ghostrole_on_revive.dm
index cc09d99643b..d9638b2d46a 100644
--- a/code/datums/components/ghostrole_on_revive.dm
+++ b/code/datums/components/ghostrole_on_revive.dm
@@ -17,10 +17,10 @@
 		prepare_mob(parent)
 		return
 
-	if(!istype(parent, /obj/item/organ/internal/brain))
+	if(!istype(parent, /obj/item/organ/brain))
 		return COMPONENT_INCOMPATIBLE
 
-	var/obj/item/organ/internal/brain/brein = parent
+	var/obj/item/organ/brain/brein = parent
 	if(brein.owner)
 		prepare_mob(brein.owner)
 	else
@@ -34,7 +34,7 @@
 
 	if(iscarbon(liver))
 		var/mob/living/carbon/carbon = liver
-		var/obj/item/organ/brain = carbon.get_organ_by_type(/obj/item/organ/internal/brain)
+		var/obj/item/organ/brain = carbon.get_organ_by_type(/obj/item/organ/brain)
 		if(brain)
 			RegisterSignal(brain, COMSIG_ORGAN_REMOVED, PROC_REF(on_remove))
 
@@ -57,7 +57,7 @@
 	RegisterSignal(brein, COMSIG_ORGAN_IMPLANTED, PROC_REF(prepare_mob_from_brain))
 	UnregisterSignal(brein, COMSIG_ORGAN_REMOVED)
 
-/datum/component/ghostrole_on_revive/proc/prepare_mob_from_brain(obj/item/organ/internal/brain/brein, mob/living/owner)
+/datum/component/ghostrole_on_revive/proc/prepare_mob_from_brain(obj/item/organ/brain/brein, mob/living/owner)
 	SIGNAL_HANDLER
 
 	UnregisterSignal(brein, COMSIG_ORGAN_IMPLANTED)
@@ -111,8 +111,8 @@
 	var/mob/living/living
 	if(isliving(parent))
 		living = parent
-	else if(istype(parent, /obj/item/organ/internal/brain))
-		var/obj/item/organ/internal/brain/brain = parent
+	else if(istype(parent, /obj/item/organ/brain))
+		var/obj/item/organ/brain/brain = parent
 		living = brain.owner
 	living?.med_hud_set_status()
 
diff --git a/code/datums/components/heart_eater.dm b/code/datums/components/heart_eater.dm
index 722c4b1636d..122716b3be5 100644
--- a/code/datums/components/heart_eater.dm
+++ b/code/datums/components/heart_eater.dm
@@ -44,7 +44,7 @@
 /datum/component/heart_eater/proc/prepare_species(mob/living/carbon/human/eater)
 	if(eater.get_liked_foodtypes() & GORE)
 		return
-	var/obj/item/organ/internal/tongue/eater_tongue = eater.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/eater_tongue = eater.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!eater_tongue)
 		return
 	eater_tongue.disliked_foodtypes &= ~GORE
@@ -62,10 +62,10 @@
 
 	if(get_area(eater) == GLOB.areas_by_type[/area/centcom/wizard_station])
 		return
-	if(!istype(what_we_ate, /obj/item/organ/internal/heart))
+	if(!istype(what_we_ate, /obj/item/organ/heart))
 		return
-	var/obj/item/organ/internal/heart/we_ate_heart = what_we_ate
-	var/obj/item/organ/internal/heart/previous_heart = last_heart_we_ate?.resolve()
+	var/obj/item/organ/heart/we_ate_heart = what_we_ate
+	var/obj/item/organ/heart/previous_heart = last_heart_we_ate?.resolve()
 	if(we_ate_heart == previous_heart)
 		return
 	if (!HAS_TRAIT(we_ate_heart, TRAIT_USED_ORGAN))
diff --git a/code/datums/components/ling_decoy_brain.dm b/code/datums/components/ling_decoy_brain.dm
index 917e8f2fbbd..d6368aeee0e 100644
--- a/code/datums/components/ling_decoy_brain.dm
+++ b/code/datums/components/ling_decoy_brain.dm
@@ -6,7 +6,7 @@
 	VAR_FINAL/datum/action/changeling/mmi_talk/talk_action
 
 /datum/component/ling_decoy_brain/Initialize(datum/antagonist/changeling/ling)
-	if(!istype(parent, /obj/item/organ/internal/brain))
+	if(!istype(parent, /obj/item/organ/brain))
 		return COMPONENT_INCOMPATIBLE
 	if(isnull(ling))
 		stack_trace("[type] instantiated without a changeling to link to.")
@@ -22,13 +22,13 @@
 	return ..()
 
 /datum/component/ling_decoy_brain/RegisterWithParent()
-	var/obj/item/organ/internal/brain/ling_brain = parent
+	var/obj/item/organ/brain/ling_brain = parent
 	ling_brain.organ_flags &= ~ORGAN_VITAL
 	ling_brain.decoy_override = TRUE
 	RegisterSignal(ling_brain, COMSIG_ATOM_ENTERING, PROC_REF(entered_mmi))
 
 /datum/component/ling_decoy_brain/UnregisterFromParent()
-	var/obj/item/organ/internal/brain/ling_brain = parent
+	var/obj/item/organ/brain/ling_brain = parent
 	ling_brain.organ_flags |= ORGAN_VITAL
 	ling_brain.decoy_override = FALSE
 	UnregisterSignal(ling_brain, COMSIG_ATOM_ENTERING, PROC_REF(entered_mmi))
@@ -38,7 +38,7 @@
  *
  * Unfortunately this is hooked on Entering rather than its own dedicated MMI signal becuase MMI code is a fuck
  */
-/datum/component/ling_decoy_brain/proc/entered_mmi(obj/item/organ/internal/brain/source, atom/entering, atom/old_loc, ...)
+/datum/component/ling_decoy_brain/proc/entered_mmi(obj/item/organ/brain/source, atom/entering, atom/old_loc, ...)
 	SIGNAL_HANDLER
 
 	var/mob/living/the_real_ling = parent_ling.owner.current
diff --git a/code/datums/components/manual_blinking.dm b/code/datums/components/manual_blinking.dm
index 67229a8b85f..f7d7d65e5d1 100644
--- a/code/datums/components/manual_blinking.dm
+++ b/code/datums/components/manual_blinking.dm
@@ -1,7 +1,7 @@
 /datum/component/manual_blinking
 	dupe_mode = COMPONENT_DUPE_UNIQUE
 
-	var/obj/item/organ/internal/eyes/E
+	var/obj/item/organ/eyes/E
 	var/warn_grace = FALSE
 	var/warn_dying = FALSE
 	var/last_blink
@@ -69,18 +69,18 @@
 /datum/component/manual_blinking/proc/check_added_organ(mob/who_cares, obj/item/organ/O)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/eyes/new_eyes = O
+	var/obj/item/organ/eyes/new_eyes = O
 
-	if(istype(new_eyes,/obj/item/organ/internal/eyes))
+	if(istype(new_eyes,/obj/item/organ/eyes))
 		E = new_eyes
 		START_PROCESSING(SSdcs, src)
 
 /datum/component/manual_blinking/proc/check_removed_organ(mob/who_cares, obj/item/organ/O)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/eyes/bye_beyes = O // oh come on, that's pretty good
+	var/obj/item/organ/eyes/bye_beyes = O // oh come on, that's pretty good
 
-	if(istype(bye_beyes, /obj/item/organ/internal/eyes))
+	if(istype(bye_beyes, /obj/item/organ/eyes))
 		E = null
 		STOP_PROCESSING(SSdcs, src)
 
diff --git a/code/datums/components/manual_breathing.dm b/code/datums/components/manual_breathing.dm
index d8d4fea07d9..8e5f096766a 100644
--- a/code/datums/components/manual_breathing.dm
+++ b/code/datums/components/manual_breathing.dm
@@ -1,7 +1,7 @@
 /datum/component/manual_breathing
 	dupe_mode = COMPONENT_DUPE_UNIQUE
 
-	var/obj/item/organ/internal/lungs/L
+	var/obj/item/organ/lungs/L
 	var/warn_grace = FALSE
 	var/warn_dying = FALSE
 	var/last_breath
@@ -71,18 +71,18 @@
 /datum/component/manual_breathing/proc/check_added_organ(mob/who_cares, obj/item/organ/O)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/eyes/new_lungs = O
+	var/obj/item/organ/eyes/new_lungs = O
 
-	if(istype(new_lungs,/obj/item/organ/internal/lungs))
+	if(istype(new_lungs,/obj/item/organ/lungs))
 		L = new_lungs
 		START_PROCESSING(SSdcs, src)
 
 /datum/component/manual_breathing/proc/check_removed_organ(mob/who_cares, obj/item/organ/O)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/lungs/old_lungs = O
+	var/obj/item/organ/lungs/old_lungs = O
 
-	if(istype(old_lungs, /obj/item/organ/internal/lungs))
+	if(istype(old_lungs, /obj/item/organ/lungs))
 		L = null
 		STOP_PROCESSING(SSdcs, src)
 
diff --git a/code/datums/components/manual_heart.dm b/code/datums/components/manual_heart.dm
index 09448acfc67..d8d74854900 100644
--- a/code/datums/components/manual_heart.dm
+++ b/code/datums/components/manual_heart.dm
@@ -56,7 +56,7 @@
 	pump_action.Grant(parent)
 
 	var/mob/living/carbon/carbon_parent = parent
-	var/obj/item/organ/internal/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART)
 	if(parent_heart && !HAS_TRAIT(carbon_parent, TRAIT_NOBLOOD) && carbon_parent.stat != DEAD)
 		START_PROCESSING(SSdcs, src)
 		COOLDOWN_START(src, heart_timer, pump_delay)
@@ -126,7 +126,7 @@
 /datum/component/manual_heart/proc/check_added_organ(mob/organ_owner, obj/item/organ/new_organ)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/heart/new_heart = new_organ
+	var/obj/item/organ/heart/new_heart = new_organ
 
 	if(!istype(new_heart) || !check_valid())
 		return
@@ -141,7 +141,7 @@
 /datum/component/manual_heart/proc/check_removed_organ(mob/organ_owner, obj/item/organ/removed_organ)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/heart/removed_heart = removed_organ
+	var/obj/item/organ/heart/removed_heart = removed_organ
 
 	if(istype(removed_heart))
 		pump_action.build_all_button_icons(UPDATE_BUTTON_STATUS)
@@ -150,7 +150,7 @@
 ///Helper proc to check if processing can be restarted.
 /datum/component/manual_heart/proc/check_valid()
 	var/mob/living/carbon/carbon_parent = parent
-	var/obj/item/organ/internal/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/parent_heart = carbon_parent.get_organ_slot(ORGAN_SLOT_HEART)
 	return !isnull(parent_heart) && !HAS_TRAIT(carbon_parent, TRAIT_NOBLOOD) && carbon_parent.stat != DEAD
 
 ///Action to pump your heart. Cooldown will always be set to 1 second less than the pump delay.
@@ -171,7 +171,7 @@
 	var/mob/living/carbon/heart_haver = owner
 	if(!istype(heart_haver) || HAS_TRAIT(heart_haver, TRAIT_NOBLOOD) || heart_haver.stat == DEAD)
 		return FALSE
-	var/obj/item/organ/internal/heart/heart_havers_heart = heart_haver.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/heart_havers_heart = heart_haver.get_organ_slot(ORGAN_SLOT_HEART)
 	if(isnull(heart_havers_heart))
 		return FALSE
 	return ..()
diff --git a/code/datums/components/phylactery.dm b/code/datums/components/phylactery.dm
index 572f816b5ad..9c96416f800 100644
--- a/code/datums/components/phylactery.dm
+++ b/code/datums/components/phylactery.dm
@@ -169,7 +169,7 @@
 	var/mob/living/carbon/human/lich = new(parent_turf)
 	ADD_TRAIT(lich, TRAIT_NO_SOUL, LICH_TRAIT)
 
-	var/obj/item/organ/internal/brain/new_lich_brain = lich.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/new_lich_brain = lich.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(new_lich_brain) // Prevent MMI cheese
 		new_lich_brain.organ_flags &= ~ORGAN_VITAL
 		new_lich_brain.decoy_override = TRUE
@@ -201,7 +201,7 @@
 			var/mob/living/carbon/carbon_body = corpse
 			for(var/obj/item/organ/to_drop as anything in carbon_body.organs)
 				// Skip the brain - it can disappear, we don't need it anymore
-				if(istype(to_drop, /obj/item/organ/internal/brain))
+				if(istype(to_drop, /obj/item/organ/brain))
 					continue
 
 				// For the rest, drop all the organs onto the floor (for style)
diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm
index fe723e4e804..8b6f744f144 100644
--- a/code/datums/components/riding/riding_mob.dm
+++ b/code/datums/components/riding/riding_mob.dm
@@ -329,7 +329,7 @@
 				TEXT_WEST = list(REGULAR_OFFSET, REGULAR_SIDE_OFFSET)
 			)
 	if (ride_check_flags & RIDING_TAUR)
-		var/obj/item/organ/external/taur_body/taur_body = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+		var/obj/item/organ/taur_body/taur_body = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
 		return taur_body.get_riding_offset(oversized = HAS_TRAIT(H, TRAIT_OVERSIZED))
 
 	// NOVA EDIT ADDITION END
diff --git a/code/datums/components/sign_language.dm b/code/datums/components/sign_language.dm
index 054a4de4af0..478de762afc 100644
--- a/code/datums/components/sign_language.dm
+++ b/code/datums/components/sign_language.dm
@@ -75,7 +75,7 @@
 	SIGNAL_HANDLER
 
 	var/mob/living/carbon/carbon_parent = parent
-	var/obj/item/organ/internal/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(tongue)
 		tongue.temp_say_mod = "signs"
 	//this speech relies on hands, which we have our own way of garbling speech when they're occupied, so we can have this always on
@@ -102,7 +102,7 @@
 	SIGNAL_HANDLER
 
 	var/mob/living/carbon/carbon_parent = parent
-	var/obj/item/organ/internal/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = carbon_parent.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(tongue)
 		tongue.temp_say_mod = ""
 	REMOVE_TRAIT(carbon_parent, TRAIT_SPEAKS_CLEARLY, SPEAKING_FROM_HANDS)
@@ -128,9 +128,9 @@
 /datum/component/sign_language/proc/on_added_organ(mob/living/source, obj/item/organ/new_organ)
 	SIGNAL_HANDLER
 
-	if(!istype(new_organ, /obj/item/organ/internal/tongue))
+	if(!istype(new_organ, /obj/item/organ/tongue))
 		return
-	var/obj/item/organ/internal/tongue/new_tongue = new_organ
+	var/obj/item/organ/tongue/new_tongue = new_organ
 	new_tongue.temp_say_mod = "signs"
 
 /// Signal proc for [COMSIG_MOB_TRY_SPEECH]
@@ -238,7 +238,7 @@
 	return SPELL_INVOCATION_ALWAYS_SUCCEED
 
 /// Signal proc for [COMSIG_LIVING_TREAT_MESSAGE]
-/// Changes our message based on conditions that limit or alter our ability to communicate 
+/// Changes our message based on conditions that limit or alter our ability to communicate
 /datum/component/sign_language/proc/on_treat_living_message(atom/movable/source, list/message_args)
 	SIGNAL_HANDLER
 
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index afd8cce49e8..ca1bb82ace7 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -46,7 +46,7 @@
 		else if(isstructure(parent))
 			RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(use_squeak))
 
-	if(istype(parent, /obj/item/organ/internal/liver))
+	if(istype(parent, /obj/item/organ/liver))
 		// Liver squeaking is depending on them functioning like a clown's liver
 		RegisterSignal(parent, SIGNAL_REMOVETRAIT(TRAIT_COMEDY_METABOLISM), PROC_REF(on_comedy_metabolism_removal))
 
diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm
index 53a0797c2e1..4dac194c158 100644
--- a/code/datums/components/supermatter_crystal.dm
+++ b/code/datums/components/supermatter_crystal.dm
@@ -130,7 +130,7 @@
 			)
 			return
 
-		var/obj/item/organ/internal/tongue/licking_tongue = user.get_organ_slot(ORGAN_SLOT_TONGUE)
+		var/obj/item/organ/tongue/licking_tongue = user.get_organ_slot(ORGAN_SLOT_TONGUE)
 		if(licking_tongue)
 			dust_mob(source, user,
 				span_danger("As [user] hesitantly leans in and licks [atom_source] everything goes silent before [user.p_their()] body starts to glow and burst into flames before flashing to ash!"),
diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm
index 9df4c57d328..a4652d354a5 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -399,13 +399,13 @@
 		if(HAS_TRAIT(tackle_target, TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)) // riot armor and such
 			defense_mod += 5
 
-		var/obj/item/organ/external/tail/lizard/el_tail = tackle_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+		var/obj/item/organ/tail/lizard/el_tail = tackle_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 		if(HAS_TRAIT(tackle_target, TRAIT_TACKLING_TAILED_DEFENDER) && !el_tail)
 			defense_mod -= 1
 		if(el_tail && (el_tail.wag_flags & WAG_WAGGING)) // lizard tail wagging is robust and can swat away assailants!
 			defense_mod += 1
 
-		var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = tackle_target.get_organ_slot(ORGAN_SLOT_SPINE)
+		var/obj/item/organ/cyberimp/chest/spine/potential_spine = tackle_target.get_organ_slot(ORGAN_SLOT_SPINE)
 		if(istype(potential_spine))
 			defense_mod += potential_spine.strength_bonus
 
@@ -434,14 +434,14 @@
 		attack_mod += 2
 
 	if(HAS_TRAIT(sacker, TRAIT_TACKLING_WINGED_ATTACKER))
-		var/obj/item/organ/external/wings/moth/sacker_moth_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+		var/obj/item/organ/wings/moth/sacker_moth_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
 		if(!sacker_moth_wing || sacker_moth_wing.burnt)
 			attack_mod -= 2
-	var/obj/item/organ/external/wings/sacker_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+	var/obj/item/organ/wings/sacker_wing = sacker.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
 	if(sacker_wing)
 		attack_mod += 2
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = sacker.get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = sacker.get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		attack_mod += potential_spine.strength_bonus
 
@@ -508,7 +508,7 @@
 	if(HAS_TRAIT(user, TRAIT_HEAD_INJURY_BLOCKED))
 		oopsie_mod -= 6
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) // Can't snap that spine if it's made of metal.
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE) // Can't snap that spine if it's made of metal.
 	if(istype(potential_spine))
 		oopsie_mod -= potential_spine.strength_bonus
 
diff --git a/code/datums/components/vision_hurting.dm b/code/datums/components/vision_hurting.dm
index acf2d186bb4..925395f3d39 100644
--- a/code/datums/components/vision_hurting.dm
+++ b/code/datums/components/vision_hurting.dm
@@ -16,7 +16,7 @@
 	for(var/mob/living/carbon/viewer in viewers(parent))
 		if(viewer.is_blind() || viewer.get_eye_protection() >= damage_per_second)
 			continue
-		var/obj/item/organ/internal/eyes/burning_orbs = locate() in viewer.organs
+		var/obj/item/organ/eyes/burning_orbs = locate() in viewer.organs
 		if(!burning_orbs)
 			continue
 		burning_orbs.apply_organ_damage(damage_per_second * seconds_per_tick)
diff --git a/code/datums/diseases/advance/symptoms/deafness.dm b/code/datums/diseases/advance/symptoms/deafness.dm
index c93d94023df..bf096a9fb4a 100644
--- a/code/datums/diseases/advance/symptoms/deafness.dm
+++ b/code/datums/diseases/advance/symptoms/deafness.dm
@@ -45,7 +45,7 @@
 		return
 
 	var/mob/living/carbon/infected_mob = advanced_disease.affected_mob
-	var/obj/item/organ/internal/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS)
 
 	switch(advanced_disease.stage)
 		if(3, 4)
diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm
index 79c4909d277..2848ec484b3 100644
--- a/code/datums/diseases/advance/symptoms/sensory.dm
+++ b/code/datums/diseases/advance/symptoms/sensory.dm
@@ -95,13 +95,13 @@
 	switch(advanced_disease.stage)
 		if(4, 5)
 			if(advanced_disease.has_required_infectious_organ(infected_mob, ORGAN_SLOT_EARS))
-				var/obj/item/organ/internal/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS)
+				var/obj/item/organ/ears/ears = infected_mob.get_organ_slot(ORGAN_SLOT_EARS)
 				ears.adjustEarDamage(-4, -4)
 
 			if(!advanced_disease.has_required_infectious_organ(infected_mob, ORGAN_SLOT_EYES))
 				return
 
-			var/obj/item/organ/internal/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+			var/obj/item/organ/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES)
 			infected_mob.adjust_temp_blindness(-4 SECONDS)
 			infected_mob.adjust_eye_blur(-4 SECONDS)
 
diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm
index e53faf5bac5..cc9e70a2421 100644
--- a/code/datums/diseases/advance/symptoms/vision.dm
+++ b/code/datums/diseases/advance/symptoms/vision.dm
@@ -42,7 +42,7 @@
 		return
 
 	var/mob/living/carbon/infected_mob = source_disease.affected_mob
-	var/obj/item/organ/internal/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = infected_mob.get_organ_slot(ORGAN_SLOT_EYES)
 
 	switch(source_disease.stage)
 		if(1, 2)
diff --git a/code/datums/diseases/chronic_illness.dm b/code/datums/diseases/chronic_illness.dm
index fcb27ed9434..6ef3874d1ff 100644
--- a/code/datums/diseases/chronic_illness.dm
+++ b/code/datums/diseases/chronic_illness.dm
@@ -112,7 +112,7 @@
 					if(affected_mob.stat == CONSCIOUS)
 						affected_mob.visible_message(span_danger("[affected_mob] clutches at [affected_mob.p_their()] chest as if [affected_mob.p_their()] heart is stopping!"), \
 					span_userdanger("You feel a horrible pain as your heart is replaced with one from another dimension!"))
-					var/obj/item/organ/internal/heart/cursed/cheart = new /obj/item/organ/internal/heart/cursed()
+					var/obj/item/organ/heart/cursed/cheart = new /obj/item/organ/heart/cursed()
 					cheart.replace_into(affected_mob)
 					playsound(affected_mob, 'sound/effects/hallucinations/far_noise.ogg', 50, 1)
 					update_stage(1)
diff --git a/code/datums/diseases/gastrolisis.dm b/code/datums/diseases/gastrolisis.dm
index aab0fcded1d..f7348c38cb8 100644
--- a/code/datums/diseases/gastrolisis.dm
+++ b/code/datums/diseases/gastrolisis.dm
@@ -37,9 +37,9 @@
 				if(isopenturf(OT))
 					OT.MakeSlippery(TURF_WET_LUBE, 100)
 		if(4)
-			var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes/snail) in affected_mob.organs
+			var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes/snail) in affected_mob.organs
 			if(!eyes && SPT_PROB(2.5, seconds_per_tick))
-				var/obj/item/organ/internal/eyes/snail/new_eyes = new()
+				var/obj/item/organ/eyes/snail/new_eyes = new()
 				new_eyes.Insert(affected_mob)
 				affected_mob.visible_message(span_warning("[affected_mob]'s eyes fall out, with snail eyes taking its place!"), \
 				span_userdanger("You scream in pain as your eyes are pushed out by your new snail eyes!"))
@@ -57,9 +57,9 @@
 					affected_mob.emote("scream")
 					return
 
-			var/obj/item/organ/internal/tongue/tongue = locate(/obj/item/organ/internal/tongue/snail) in affected_mob.organs
+			var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue/snail) in affected_mob.organs
 			if(!tongue && SPT_PROB(2.5, seconds_per_tick))
-				var/obj/item/organ/internal/tongue/snail/new_tongue = new()
+				var/obj/item/organ/tongue/snail/new_tongue = new()
 				new_tongue.Insert(affected_mob)
 				to_chat(affected_mob, span_userdanger("You feel your speech slow down..."))
 				return
@@ -84,13 +84,13 @@
 	. = ..()
 	if(affected_mob && !is_species(affected_mob, /datum/species/snail)) //undo all the snail fuckening
 		var/mob/living/carbon/human/H = affected_mob
-		var/obj/item/organ/internal/tongue/tongue = locate(/obj/item/organ/internal/tongue/snail) in H.organs
+		var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue/snail) in H.organs
 		if(tongue)
-			var/obj/item/organ/internal/tongue/new_tongue = new H.dna.species.mutanttongue ()
+			var/obj/item/organ/tongue/new_tongue = new H.dna.species.mutanttongue ()
 			new_tongue.Insert(H)
-		var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes/snail) in H.organs
+		var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes/snail) in H.organs
 		if(eyes)
-			var/obj/item/organ/internal/eyes/new_eyes = new H.dna.species.mutanteyes ()
+			var/obj/item/organ/eyes/new_eyes = new H.dna.species.mutanteyes ()
 			new_eyes.Insert(H)
 		var/obj/item/storage/backpack/bag = H.get_item_by_slot(ITEM_SLOT_BACK)
 		if(istype(bag, /obj/item/storage/backpack/snail))
diff --git a/code/datums/diseases/parasitic_infection.dm b/code/datums/diseases/parasitic_infection.dm
index 64bb59f01fd..53b61266271 100644
--- a/code/datums/diseases/parasitic_infection.dm
+++ b/code/datums/diseases/parasitic_infection.dm
@@ -43,7 +43,7 @@
 					to_chat(affected_mob, span_warning("You feel much, MUCH lighter!"))
 					affected_mob.vomit(VOMIT_CATEGORY_BLOOD, lost_nutrition = 20)
 					// disease code already checks if the liver exists otherwise it is cured
-					var/obj/item/organ/internal/liver/affected_liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+					var/obj/item/organ/liver/affected_liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 					affected_liver.Remove(affected_mob)
 					affected_liver.forceMove(get_turf(affected_mob))
 					cure()
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 15e70d3792b..9145106d6e0 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -999,7 +999,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
 
 /mob/living/carbon/human/proc/something_horrible_mindmelt()
 	if(!is_blind())
-		var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes) in organs
+		var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes) in organs
 		if(!eyes)
 			return
 		eyes.Remove(src)
diff --git a/code/datums/elements/climbable.dm b/code/datums/elements/climbable.dm
index 5700ca3bc2e..eb3bc611b29 100644
--- a/code/datums/elements/climbable.dm
+++ b/code/datums/elements/climbable.dm
@@ -62,8 +62,19 @@
 	climbed_thing.add_fingerprint(user)
 	user.visible_message(span_warning("[user] starts climbing onto [climbed_thing]."), \
 								span_notice("You start climbing onto [climbed_thing]..."))
+	// Time in deciseoncds it takes to complete the climb do_after()
 	var/adjusted_climb_time = climb_time
+	// Time in deciseonds that the mob is stunned after climbing successfully.
 	var/adjusted_climb_stun = climb_stun
+	// Our climbers fitness level, which removes some climb time and speeds up our climbing do_after, assuming they worked out
+	var/fitness_level = user.mind?.get_skill_level(/datum/skill/athletics) - 1
+	adjusted_climb_time = clamp(adjusted_climb_time - fitness_level, 1, climb_time) //Here we adjust the number of deciseconds we shave off per level of fitness, with a minimum of 1 decisecond and a maximum of climb_time (just in case)
+
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+	if(istype(potential_spine))
+		adjusted_climb_time *= potential_spine.athletics_boost_multiplier
+		adjusted_climb_stun *= potential_spine.athletics_boost_multiplier
+
 	if(HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) //climbing takes twice as long without help from the hands.
 		adjusted_climb_time *= 2
 	if(isalien(user))
@@ -88,6 +99,7 @@
 			if(istype(buckle_target))
 				if(buckle_target.is_buckle_possible(user))
 					buckle_target.buckle_mob(user)
+			user.mind?.adjust_experience(/datum/skill/athletics, 5) //Get a bit fitter with every climb.
 		else
 			to_chat(user, span_warning("You fail to climb onto [climbed_thing]."))
 	LAZYREMOVEASSOC(current_climbers, climbed_thing, user)
diff --git a/code/datums/elements/corrupted_organ.dm b/code/datums/elements/corrupted_organ.dm
index 504c6851e00..fda892887ca 100644
--- a/code/datums/elements/corrupted_organ.dm
+++ b/code/datums/elements/corrupted_organ.dm
@@ -2,9 +2,9 @@
 /// Mostly just does something spooky when it is removed
 /datum/element/corrupted_organ
 
-/datum/element/corrupted_organ/Attach(datum/target)
+/datum/element/corrupted_organ/Attach(obj/item/organ/target)
 	. = ..()
-	if (!isinternalorgan(target))
+	if (!istype(target) || (target.organ_flags & ORGAN_EXTERNAL))
 		return ELEMENT_INCOMPATIBLE
 
 	RegisterSignal(target, COMSIG_ORGAN_SURGICALLY_REMOVED, PROC_REF(on_removed))
diff --git a/code/datums/elements/cult_eyes.dm b/code/datums/elements/cult_eyes.dm
index 3e685419836..68d70a47092 100644
--- a/code/datums/elements/cult_eyes.dm
+++ b/code/datums/elements/cult_eyes.dm
@@ -26,13 +26,11 @@
 		return
 
 	ADD_TRAIT(target, TRAIT_UNNATURAL_RED_GLOWY_EYES, CULT_TRAIT)
-	if (ishuman(target))
-		var/mob/living/carbon/human/human_parent = target
-		human_parent.eye_color_left = BLOODCULT_EYE
-		human_parent.eye_color_right = BLOODCULT_EYE
-		human_parent.dna.update_ui_block(DNA_EYE_COLOR_LEFT_BLOCK)
-		human_parent.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK)
-		human_parent.update_body()
+	if (!ishuman(target))
+		return
+	var/mob/living/carbon/human/human_parent = target
+	human_parent.add_eye_color(BLOODCULT_EYE, EYE_COLOR_CULT_PRIORITY)
+	human_parent.update_body()
 
 /**
  * Detach proc
@@ -43,10 +41,7 @@
 	REMOVE_TRAIT(target, TRAIT_UNNATURAL_RED_GLOWY_EYES, CULT_TRAIT)
 	if (ishuman(target))
 		var/mob/living/carbon/human/human_parent = target
-		human_parent.eye_color_left = initial(human_parent.eye_color_left)
-		human_parent.eye_color_right = initial(human_parent.eye_color_right)
-		human_parent.dna.update_ui_block(DNA_EYE_COLOR_LEFT_BLOCK)
-		human_parent.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK)
+		human_parent.remove_eye_color(EYE_COLOR_CULT_PRIORITY)
 		human_parent.update_body()
 	UnregisterSignal(target, list(COMSIG_CHANGELING_TRANSFORM, COMSIG_HUMAN_MONKEYIZE, COMSIG_MONKEY_HUMANIZE))
 	return ..()
diff --git a/code/datums/elements/earhealing.dm b/code/datums/elements/earhealing.dm
index f1b34652059..ac69e8cc18e 100644
--- a/code/datums/elements/earhealing.dm
+++ b/code/datums/elements/earhealing.dm
@@ -26,7 +26,7 @@
 /datum/element/earhealing/process(seconds_per_tick)
 	for(var/i in user_by_item)
 		var/mob/living/carbon/user = user_by_item[i]
-		var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
+		var/obj/item/organ/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
 		if(!ears || !ears.damage || (ears.organ_flags & ORGAN_FAILING) || IS_ROBOTIC_ORGAN(ears))
 			continue
 		ears.deaf = max(ears.deaf - 0.25 * seconds_per_tick, (ears.damage < ears.maxHealth ? 0 : 1)) // Do not clear deafness if our ears are too damaged
diff --git a/code/datums/elements/eyestab.dm b/code/datums/elements/eyestab.dm
index a6757f67fb3..7821b26fab8 100644
--- a/code/datums/elements/eyestab.dm
+++ b/code/datums/elements/eyestab.dm
@@ -77,7 +77,7 @@
 	target.add_mood_event("eye_stab", /datum/mood_event/eye_stab)
 	log_combat(user, target, "attacked", "[item.name]", "(Combat mode: [user.combat_mode ? "On" : "Off"])")
 
-	var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
 	if (!eyes)
 		return
 
diff --git a/code/datums/elements/frozen.dm b/code/datums/elements/frozen.dm
index df857cdd6ef..b65d44096bd 100644
--- a/code/datums/elements/frozen.dm
+++ b/code/datums/elements/frozen.dm
@@ -20,11 +20,11 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
 	target_obj.add_atom_colour(GLOB.freon_color_matrix, TEMPORARY_COLOUR_PRIORITY)
 	target_obj.alpha -= 25
 
-	if (isinternalorgan(target))
-		var/obj/item/organ/internal/organ = target
+	if(isorgan(target))
+		var/obj/item/organ/organ = target
 		organ.organ_flags |= ORGAN_FROZEN
 	else if (isbodypart(target))
-		for(var/obj/item/organ/internal/organ in target_obj.contents)
+		for(var/obj/item/organ/organ in target_obj.contents)
 			organ.organ_flags |= ORGAN_FROZEN
 
 	RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved))
@@ -40,11 +40,11 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
 	obj_source.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, GLOB.freon_color_matrix)
 	obj_source.alpha += 25
 
-	if (isinternalorgan(source))
-		var/obj/item/organ/internal/organ = source
+	if (isorgan(source))
+		var/obj/item/organ/organ = source
 		organ.organ_flags &= ~ORGAN_FROZEN
 	else if (isbodypart(source))
-		for(var/obj/item/organ/internal/organ in obj_source.contents)
+		for(var/obj/item/organ/organ in obj_source.contents)
 			organ.organ_flags &= ~ORGAN_FROZEN
 
 	return ..()
diff --git a/code/datums/elements/kneejerk.dm b/code/datums/elements/kneejerk.dm
index 78c0ba7654d..52b2e00e19c 100644
--- a/code/datums/elements/kneejerk.dm
+++ b/code/datums/elements/kneejerk.dm
@@ -28,7 +28,7 @@
 	var/selected_zone = user.zone_selected
 	var/obj/item/bodypart/leg/right = target.get_bodypart(BODY_ZONE_R_LEG)
 	var/obj/item/bodypart/leg/left = target.get_bodypart(BODY_ZONE_L_LEG)
-	var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 
 	if(!ishuman(target))
 		return
diff --git a/code/datums/instability_meltdown.dm b/code/datums/instability_meltdown.dm
index d8e6fbd77ac..4e3a82fd376 100644
--- a/code/datums/instability_meltdown.dm
+++ b/code/datums/instability_meltdown.dm
@@ -72,8 +72,9 @@
 
 /datum/instability_meltdown/organ_vomit/meltdown(mob/living/carbon/human/victim)
 	var/list/elligible_organs = list()
-	for(var/obj/item/organ/internal/internal_organ in victim.organs) //make sure we dont get an implant or cavity item
-		elligible_organs += internal_organ
+	for(var/obj/item/organ/organ as anything in victim.organs) //make sure we dont get an implant or cavity item
+		if(!(organ.organ_flags & ORGAN_EXTERNAL))
+			elligible_organs += organ
 	victim.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 10)
 	if(!elligible_organs.len)
 		return
diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm
index 9d6252855d3..e46467327ed 100644
--- a/code/datums/martial/boxing.dm
+++ b/code/datums/martial/boxing.dm
@@ -107,7 +107,7 @@
 	if(honor_check(defender))
 		var/strength_bonus = HAS_TRAIT(attacker, TRAIT_STRENGTH) ? 2 : 0 //Investing into genetic strength improvements makes you a better boxer
 
-		var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = attacker.get_organ_slot(ORGAN_SLOT_SPINE) //Getting a cyberspine also pushes you further than just mere meat
+		var/obj/item/organ/cyberimp/chest/spine/potential_spine = attacker.get_organ_slot(ORGAN_SLOT_SPINE) //Getting a cyberspine also pushes you further than just mere meat
 		if(istype(potential_spine))
 			strength_bonus *= potential_spine.strength_bonus
 
diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm
index ce8b8bfdea8..816dd1698ab 100644
--- a/code/datums/mutations/body.dm
+++ b/code/datums/mutations/body.dm
@@ -583,7 +583,7 @@
 
 	explosion(owner, light_impact_range = 2, adminlog = TRUE, explosion_cause = src)
 	for(var/mob/living/carbon/human/splashed in view(2, owner))
-		var/obj/item/organ/internal/eyes/eyes = splashed.get_organ_slot(ORGAN_SLOT_EYES)
+		var/obj/item/organ/eyes/eyes = splashed.get_organ_slot(ORGAN_SLOT_EYES)
 		if(eyes)
 			to_chat(splashed, span_userdanger("You are blinded by a shower of blood!"))
 			eyes.apply_organ_damage(5)
@@ -611,7 +611,7 @@
 	if(.)//cant add
 		return TRUE
 
-	var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(brain)
 		brain.Remove(owner, special = TRUE, movement_flags = NO_ID_TRANSFER)
 		brain.zone = BODY_ZONE_CHEST
@@ -636,7 +636,7 @@
 	if(!successful)
 		stack_trace("HARS mutation head regeneration failed! (usually caused by headless syndrome having a head)")
 		return TRUE
-	var/obj/item/organ/internal/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(brain)
 		brain.Remove(owner, special = TRUE, movement_flags = NO_ID_TRANSFER)
 		brain.zone = initial(brain.zone)
diff --git a/code/datums/mutations/tongue_spike.dm b/code/datums/mutations/tongue_spike.dm
index d5db738213f..c6a48a32a14 100644
--- a/code/datums/mutations/tongue_spike.dm
+++ b/code/datums/mutations/tongue_spike.dm
@@ -30,7 +30,7 @@
 		to_chat(cast_on, span_notice("You concentrate really hard, but nothing happens."))
 		return
 
-	var/obj/item/organ/internal/tongue/to_fire = locate() in cast_on.organs
+	var/obj/item/organ/tongue/to_fire = locate() in cast_on.organs
 	if(!to_fire)
 		to_chat(cast_on, span_notice("You don't have a tongue to shoot!"))
 		return
diff --git a/code/datums/quirks/negative_quirks/addict.dm b/code/datums/quirks/negative_quirks/addict.dm
index 5eb88795bdc..62262dc3bf7 100644
--- a/code/datums/quirks/negative_quirks/addict.dm
+++ b/code/datums/quirks/negative_quirks/addict.dm
@@ -145,15 +145,15 @@
 	quirk_holder.add_mob_memory(/datum/memory/key/quirk_smoker, protagonist = quirk_holder, preferred_brand = initial(drug_container_type.name))
 	// smoker lungs have 25% less health and healing
 	var/mob/living/carbon/carbon_holder = quirk_holder
-	var/obj/item/organ/internal/lungs/smoker_lungs = null
-	var/obj/item/organ/internal/lungs/old_lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/smoker_lungs = null
+	var/obj/item/organ/lungs/old_lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(old_lungs && IS_ORGANIC_ORGAN(old_lungs))
 		if(isplasmaman(carbon_holder))
-			smoker_lungs = /obj/item/organ/internal/lungs/plasmaman/plasmaman_smoker
+			smoker_lungs = /obj/item/organ/lungs/plasmaman/plasmaman_smoker
 		else if(isethereal(carbon_holder))
-			smoker_lungs = /obj/item/organ/internal/lungs/ethereal/ethereal_smoker
+			smoker_lungs = /obj/item/organ/lungs/ethereal/ethereal_smoker
 		else
-			smoker_lungs = /obj/item/organ/internal/lungs/smoker_lungs
+			smoker_lungs = /obj/item/organ/lungs/smoker_lungs
 	if(!isnull(smoker_lungs))
 		smoker_lungs = new smoker_lungs
 		smoker_lungs.Insert(carbon_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
@@ -217,7 +217,7 @@
 
 	quirk_holder.add_mob_memory(/datum/memory/key/quirk_alcoholic, protagonist = quirk_holder, preferred_brandy = initial(favorite_alcohol.name))
 	// alcoholic livers have 25% less health and healing
-	var/obj/item/organ/internal/liver/alcohol_liver = quirk_holder.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/alcohol_liver = quirk_holder.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(alcohol_liver && IS_ORGANIC_ORGAN(alcohol_liver)) // robotic livers aren't affected
 		alcohol_liver.maxHealth = alcohol_liver.maxHealth * 0.75
 		alcohol_liver.healing_factor = alcohol_liver.healing_factor * 0.75
diff --git a/code/datums/quirks/negative_quirks/photophobia.dm b/code/datums/quirks/negative_quirks/photophobia.dm
index ea9ef428a50..89be1c82676 100644
--- a/code/datums/quirks/negative_quirks/photophobia.dm
+++ b/code/datums/quirks/negative_quirks/photophobia.dm
@@ -27,23 +27,23 @@
 		COMSIG_CARBON_LOSE_ORGAN,
 		COMSIG_MOVABLE_MOVED,))
 	quirk_holder.clear_mood_event(MOOD_CATEGORY_PHOTOPHOBIA)
-	var/obj/item/organ/internal/eyes/normal_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/normal_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES)
 	if(istype(normal_eyes))
 		normal_eyes.flash_protect = initial(normal_eyes.flash_protect)
 
-/datum/quirk/photophobia/proc/check_eyes(obj/item/organ/internal/eyes/sensitive_eyes)
+/datum/quirk/photophobia/proc/check_eyes(obj/item/organ/eyes/sensitive_eyes)
 	SIGNAL_HANDLER
 	if(!istype(sensitive_eyes))
 		return
 	update_eyes(sensitive_eyes)
 
-/datum/quirk/photophobia/proc/update_eyes(obj/item/organ/internal/eyes/target_eyes)
+/datum/quirk/photophobia/proc/update_eyes(obj/item/organ/eyes/target_eyes)
 	if(!istype(target_eyes))
 		return
 	target_eyes.flash_protect = max(target_eyes.flash_protect - severity, FLASH_PROTECTION_HYPER_SENSITIVE) // NOVA EDIT CHANGE - ORIGINAL: target_eyes.flash_protect = max(target_eyes.flash_protect - 1, FLASH_PROTECTION_HYPER_SENSITIVE)
 	target_eyes.refresh() // NOVA EDIT ADDITION
 
-/datum/quirk/photophobia/proc/restore_eyes(obj/item/organ/internal/eyes/normal_eyes)
+/datum/quirk/photophobia/proc/restore_eyes(obj/item/organ/eyes/normal_eyes)
 	SIGNAL_HANDLER
 	if(!istype(normal_eyes))
 		return
diff --git a/code/datums/quirks/negative_quirks/prosthetic_organ.dm b/code/datums/quirks/negative_quirks/prosthetic_organ.dm
index 4a377699b40..2b0f20b0d9f 100644
--- a/code/datums/quirks/negative_quirks/prosthetic_organ.dm
+++ b/code/datums/quirks/negative_quirks/prosthetic_organ.dm
@@ -46,16 +46,16 @@
 	var/obj/item/organ/prosthetic
 	switch(organ_slot)
 		if(ORGAN_SLOT_HEART)
-			prosthetic = new /obj/item/organ/internal/heart/cybernetic/surplus
+			prosthetic = new /obj/item/organ/heart/cybernetic/surplus
 			slot_string = "heart"
 		if(ORGAN_SLOT_LUNGS)
-			prosthetic = new /obj/item/organ/internal/lungs/cybernetic/surplus
+			prosthetic = new /obj/item/organ/lungs/cybernetic/surplus
 			slot_string = "lungs"
 		if(ORGAN_SLOT_LIVER)
-			prosthetic = new /obj/item/organ/internal/liver/cybernetic/surplus
+			prosthetic = new /obj/item/organ/liver/cybernetic/surplus
 			slot_string = "liver"
 		if(ORGAN_SLOT_STOMACH)
-			prosthetic = new /obj/item/organ/internal/stomach/cybernetic/surplus
+			prosthetic = new /obj/item/organ/stomach/cybernetic/surplus
 			slot_string = "stomach"
 	medical_record_text = "During physical examination, patient was found to have a low-budget prosthetic [slot_string]. \
 		Removal of these organs is known to be dangerous to the patient as well as the practitioner."
diff --git a/code/datums/quirks/negative_quirks/scarred_eye.dm b/code/datums/quirks/negative_quirks/scarred_eye.dm
index 49628545cfa..11b3f16f8aa 100644
--- a/code/datums/quirks/negative_quirks/scarred_eye.dm
+++ b/code/datums/quirks/negative_quirks/scarred_eye.dm
@@ -35,7 +35,7 @@
 
 /datum/quirk/item_quirk/scarred_eye/add(client/client_source)
 	var/mob/living/carbon/human/human_owner = quirk_holder
-	var/obj/item/organ/internal/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES)
 	if (isnull(eyes))
 		return
 
@@ -57,7 +57,7 @@
 
 /datum/quirk/item_quirk/scarred_eye/remove()
 	var/mob/living/carbon/human/human_owner = quirk_holder
-	var/obj/item/organ/internal/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = human_owner.get_organ_slot(ORGAN_SLOT_EYES)
 	if (!isnull(eyes))
 		eyes.fix_scar(RIGHT_EYE_SCAR)
 		eyes.fix_scar(LEFT_EYE_SCAR)
diff --git a/code/datums/quirks/negative_quirks/tin_man.dm b/code/datums/quirks/negative_quirks/tin_man.dm
index e6d411bc772..0afd8874bed 100644
--- a/code/datums/quirks/negative_quirks/tin_man.dm
+++ b/code/datums/quirks/negative_quirks/tin_man.dm
@@ -11,10 +11,10 @@
 /datum/quirk/tin_man/add_unique(client/client_source)
 	var/mob/living/carbon/human/human_holder = quirk_holder
 	var/static/list/organ_slots = list(
-		ORGAN_SLOT_HEART = /obj/item/organ/internal/heart/cybernetic/surplus,
-		ORGAN_SLOT_LUNGS = /obj/item/organ/internal/lungs/cybernetic/surplus,
-		ORGAN_SLOT_LIVER = /obj/item/organ/internal/liver/cybernetic/surplus,
-		ORGAN_SLOT_STOMACH = /obj/item/organ/internal/stomach/cybernetic/surplus,
+		ORGAN_SLOT_HEART = /obj/item/organ/heart/cybernetic/surplus,
+		ORGAN_SLOT_LUNGS = /obj/item/organ/lungs/cybernetic/surplus,
+		ORGAN_SLOT_LIVER = /obj/item/organ/liver/cybernetic/surplus,
+		ORGAN_SLOT_STOMACH = /obj/item/organ/stomach/cybernetic/surplus,
 	)
 	var/list/possible_organ_slots = organ_slots.Copy()
 	if(HAS_TRAIT(human_holder, TRAIT_NOBLOOD))
diff --git a/code/datums/quirks/neutral_quirks/deviant_tastes.dm b/code/datums/quirks/neutral_quirks/deviant_tastes.dm
index 566b469c7a7..5be181f96b5 100644
--- a/code/datums/quirks/neutral_quirks/deviant_tastes.dm
+++ b/code/datums/quirks/neutral_quirks/deviant_tastes.dm
@@ -9,7 +9,7 @@
 	mail_goodies = list(/obj/item/food/urinalcake, /obj/item/food/badrecipe) // Mhhhmmm yummy
 
 /datum/quirk/deviant_tastes/add(client/client_source)
-	var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		return
 	var/liked_foodtypes = tongue.liked_foodtypes
@@ -17,7 +17,7 @@
 	tongue.disliked_foodtypes = liked_foodtypes
 
 /datum/quirk/deviant_tastes/remove()
-	var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		return
 	tongue.liked_foodtypes = initial(tongue.liked_foodtypes)
diff --git a/code/datums/quirks/neutral_quirks/gamer.dm b/code/datums/quirks/neutral_quirks/gamer.dm
index 0ab2e780480..9055b09ce7f 100644
--- a/code/datums/quirks/neutral_quirks/gamer.dm
+++ b/code/datums/quirks/neutral_quirks/gamer.dm
@@ -13,7 +13,7 @@
 	var/gaming_withdrawal_timer = TIMER_ID_NULL
 
 /datum/quirk/gamer/add(client/client_source)
-	var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(tongue)
 		// Gamer diet
 		tongue.liked_foodtypes = JUNKFOOD
@@ -26,7 +26,7 @@
 	gaming_withdrawal_timer = addtimer(CALLBACK(src, PROC_REF(enter_withdrawal)), GAMING_WITHDRAWAL_TIME, TIMER_STOPPABLE)
 
 /datum/quirk/gamer/remove()
-	var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(tongue)
 		tongue.liked_foodtypes = initial(tongue.liked_foodtypes)
 	UnregisterSignal(quirk_holder, COMSIG_MOB_WON_VIDEOGAME)
diff --git a/code/datums/quirks/neutral_quirks/heretochromatic.dm b/code/datums/quirks/neutral_quirks/heretochromatic.dm
index 311cbf66868..96982b4089a 100644
--- a/code/datums/quirks/neutral_quirks/heretochromatic.dm
+++ b/code/datums/quirks/neutral_quirks/heretochromatic.dm
@@ -22,12 +22,11 @@
 	human_holder.eye_color_right = color
 	human_holder.dna.update_ui_block(DNA_EYE_COLOR_RIGHT_BLOCK)
 
-	var/obj/item/organ/internal/eyes/eyes_of_the_holder = quirk_holder.get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/eyes_of_the_holder = quirk_holder.get_organ_by_type(/obj/item/organ/eyes)
 	if(!eyes_of_the_holder)
 		return
 
 	eyes_of_the_holder.eye_color_right = color
-	eyes_of_the_holder.old_eye_color_right = color
 	eyes_of_the_holder.refresh()
 
 	if(was_not_hetero)
@@ -39,7 +38,7 @@
 	human_holder.eye_color_right = human_holder.eye_color_left
 	UnregisterSignal(human_holder, COMSIG_CARBON_LOSE_ORGAN)
 
-/datum/quirk/heterochromatic/proc/check_eye_removal(datum/source, obj/item/organ/internal/eyes/removed)
+/datum/quirk/heterochromatic/proc/check_eye_removal(datum/source, obj/item/organ/eyes/removed)
 	SIGNAL_HANDLER
 
 	if(!istype(removed))
diff --git a/code/datums/quirks/neutral_quirks/pineapple_hater.dm b/code/datums/quirks/neutral_quirks/pineapple_hater.dm
index f17eb4224ec..858963e0a36 100644
--- a/code/datums/quirks/neutral_quirks/pineapple_hater.dm
+++ b/code/datums/quirks/neutral_quirks/pineapple_hater.dm
@@ -15,13 +15,13 @@
 	)
 
 /datum/quirk/pineapple_hater/add(client/client_source)
-	var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		return
 	tongue.disliked_foodtypes |= PINEAPPLE
 
 /datum/quirk/pineapple_hater/remove()
-	var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		return
 	tongue.disliked_foodtypes = initial(tongue.disliked_foodtypes)
diff --git a/code/datums/quirks/neutral_quirks/pineapple_liker.dm b/code/datums/quirks/neutral_quirks/pineapple_liker.dm
index c342e14769c..d2de14a0e81 100644
--- a/code/datums/quirks/neutral_quirks/pineapple_liker.dm
+++ b/code/datums/quirks/neutral_quirks/pineapple_liker.dm
@@ -9,13 +9,13 @@
 	mail_goodies = list(/obj/item/food/pizzaslice/pineapple)
 
 /datum/quirk/pineapple_liker/add(client/client_source)
-	var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		return
 	tongue.liked_foodtypes |= PINEAPPLE
 
 /datum/quirk/pineapple_liker/remove()
-	var/obj/item/organ/internal/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = quirk_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		return
 	tongue.liked_foodtypes = initial(tongue.liked_foodtypes)
diff --git a/code/datums/quirks/positive_quirks/chip_connector.dm b/code/datums/quirks/positive_quirks/chip_connector.dm
index c12809bbfd2..6fcc5bf9d31 100644
--- a/code/datums/quirks/positive_quirks/chip_connector.dm
+++ b/code/datums/quirks/positive_quirks/chip_connector.dm
@@ -7,7 +7,7 @@
 	lose_text = span_danger("You don't feel so CONNECTED anymore.")
 	medical_record_text = "Patient has a cybernetic implant on their back of their head that lets them install and remove skillchips at will. Gross."
 	mail_goodies = list()
-	var/obj/item/organ/internal/cyberimp/brain/connector/connector
+	var/obj/item/organ/cyberimp/brain/connector/connector
 
 /datum/quirk/chip_connector/New()
 	. = ..()
diff --git a/code/datums/quirks/positive_quirks/chipped.dm b/code/datums/quirks/positive_quirks/chipped.dm
index 30c226c1300..7f43fc07b5b 100644
--- a/code/datums/quirks/positive_quirks/chipped.dm
+++ b/code/datums/quirks/positive_quirks/chipped.dm
@@ -42,7 +42,7 @@
 		quirk_holder_carbon.implant_skillchip(installed_chip, force = TRUE)
 	installed_chip.try_activate_skillchip(silent = FALSE, force = TRUE)
 
-	var/obj/item/organ/internal/brain/itchy_brain = quirk_holder.get_organ_by_type(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/itchy_brain = quirk_holder.get_organ_by_type(ORGAN_SLOT_BRAIN)
 	itchy_timer = addtimer(CALLBACK(src, PROC_REF(cause_itchy), itchy_brain), rand(5 SECONDS, 10 MINUTES)) // they get The Itch from a poor quality install every so often
 
 /datum/quirk/chipped/remove()
@@ -50,7 +50,7 @@
 	deltimer(itchy_timer)
 	. = ..()
 
-/datum/quirk/chipped/proc/cause_itchy(obj/item/organ/internal/brain/itchy_brain)
+/datum/quirk/chipped/proc/cause_itchy(obj/item/organ/brain/itchy_brain)
 
 	itchy_brain.apply_organ_damage(rand(1, 5), maximum = itchy_brain.maxHealth * 0.3)
 	to_chat(itchy_brain.owner, span_warning("Your [itchy_brain] itches."))
diff --git a/code/datums/quirks/positive_quirks/friendly.dm b/code/datums/quirks/positive_quirks/friendly.dm
index 943bc2c4b84..26b42f554f9 100644
--- a/code/datums/quirks/positive_quirks/friendly.dm
+++ b/code/datums/quirks/positive_quirks/friendly.dm
@@ -12,12 +12,12 @@
 
 /datum/quirk/friendly/add_unique(client/client_source)
 	var/mob/living/carbon/human/human_quirkholder = quirk_holder
-	var/obj/item/organ/internal/heart/holder_heart = human_quirkholder.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/holder_heart = human_quirkholder.get_organ_slot(ORGAN_SLOT_HEART)
 	if(isnull(holder_heart) || isnull(holder_heart.reagents))
 		return
 	holder_heart.reagents.maximum_volume = 20
 	// We have a bigger heart full of love!
 	holder_heart.reagents.add_reagent(/datum/reagent/love, 2.5)
 	// Like, physically bigger.
-	holder_heart.reagents.add_reagent(/datum/reagent/consumable/nutriment, 5)
+	holder_heart.reagents.add_reagent(/datum/reagent/consumable/nutriment/organ_tissue, 5)
 	holder_heart.transform = holder_heart.transform.Scale(1.5)
diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm
index 3598bd764ca..fadcbb85709 100644
--- a/code/datums/saymode.dm
+++ b/code/datums/saymode.dm
@@ -64,7 +64,7 @@
 /datum/saymode/vocalcords/handle_message(mob/living/user, message, datum/language/language)
 	if(iscarbon(user))
 		var/mob/living/carbon/C = user
-		var/obj/item/organ/internal/vocal_cords/V = C.get_organ_slot(ORGAN_SLOT_VOICE)
+		var/obj/item/organ/vocal_cords/V = C.get_organ_slot(ORGAN_SLOT_VOICE)
 		if(V?.can_speak_with())
 			V.handle_speech(message) //message
 			V.speak_with(message) //action
diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm
index 8e3c7e55616..c1a928fa6cd 100644
--- a/code/datums/station_traits/positive_traits.dm
+++ b/code/datums/station_traits/positive_traits.dm
@@ -258,54 +258,54 @@
 	trait_to_give = STATION_TRAIT_CYBERNETIC_REVOLUTION
 	/// List of all job types with the cybernetics they should receive.
 	var/static/list/job_to_cybernetic = list(
-		/datum/job/assistant = /obj/item/organ/internal/heart/cybernetic, //real cardiac
-		/datum/job/atmospheric_technician = /obj/item/organ/internal/cyberimp/mouth/breathing_tube,
-		/datum/job/bartender = /obj/item/organ/internal/liver/cybernetic/tier3,
-		/datum/job/bitrunner = /obj/item/organ/internal/eyes/robotic/thermals,
-		/datum/job/botanist = /obj/item/organ/internal/cyberimp/chest/nutriment,
-		/datum/job/captain = /obj/item/organ/internal/heart/cybernetic/tier3,
-		/datum/job/cargo_technician = /obj/item/organ/internal/stomach/cybernetic/tier2,
-		/datum/job/chaplain = /obj/item/organ/internal/cyberimp/brain/anti_drop,
-		/datum/job/chemist = /obj/item/organ/internal/liver/cybernetic/tier2,
-		/datum/job/chief_engineer = /obj/item/organ/internal/cyberimp/chest/thrusters,
-		/datum/job/chief_medical_officer = /obj/item/organ/internal/cyberimp/chest/reviver,
-		/datum/job/clown = /obj/item/organ/internal/cyberimp/brain/anti_stun, //HONK!
-		/datum/job/cook = /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
-		/datum/job/coroner = /obj/item/organ/internal/tongue/bone, //hes got a bone to pick with you
-		/datum/job/curator = /obj/item/organ/internal/cyberimp/brain/connector,
-		/datum/job/detective = /obj/item/organ/internal/lungs/cybernetic/tier3,
-		/datum/job/doctor = /obj/item/organ/internal/cyberimp/arm/surgery,
-		/datum/job/geneticist = /obj/item/organ/internal/fly, //we don't care about implants, we have cancer.
-		/datum/job/head_of_personnel = /obj/item/organ/internal/eyes/robotic,
-		/datum/job/head_of_security = /obj/item/organ/internal/eyes/robotic/thermals,
-		/datum/job/human_ai = /obj/item/organ/internal/brain/cybernetic,
-		/datum/job/janitor = /obj/item/organ/internal/eyes/robotic/xray,
-		/datum/job/lawyer = /obj/item/organ/internal/heart/cybernetic/tier2,
-		/datum/job/mime = /obj/item/organ/internal/tongue/robot, //...
-		/datum/job/paramedic = /obj/item/organ/internal/cyberimp/eyes/hud/medical,
-		/datum/job/prisoner = /obj/item/organ/internal/eyes/robotic/shield,
-		/datum/job/psychologist = /obj/item/organ/internal/ears/cybernetic/whisper,
-		/datum/job/pun_pun = /obj/item/organ/internal/cyberimp/arm/strongarm,
-		/datum/job/quartermaster = /obj/item/organ/internal/stomach/cybernetic/tier3,
-		/datum/job/research_director = /obj/item/organ/internal/cyberimp/bci,
-		/datum/job/roboticist = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic,
-		/datum/job/scientist = /obj/item/organ/internal/ears/cybernetic,
-		/datum/job/security_officer = /obj/item/organ/internal/cyberimp/arm/flash,
-		/datum/job/shaft_miner = /obj/item/organ/internal/monster_core/rush_gland,
-		/datum/job/station_engineer = /obj/item/organ/internal/cyberimp/arm/toolset,
-		/datum/job/warden = /obj/item/organ/internal/cyberimp/eyes/hud/security,
+		/datum/job/assistant = /obj/item/organ/heart/cybernetic, //real cardiac
+		/datum/job/atmospheric_technician = /obj/item/organ/cyberimp/mouth/breathing_tube,
+		/datum/job/bartender = /obj/item/organ/liver/cybernetic/tier3,
+		/datum/job/bitrunner = /obj/item/organ/eyes/robotic/thermals,
+		/datum/job/botanist = /obj/item/organ/cyberimp/chest/nutriment,
+		/datum/job/captain = /obj/item/organ/heart/cybernetic/tier3,
+		/datum/job/cargo_technician = /obj/item/organ/stomach/cybernetic/tier2,
+		/datum/job/chaplain = /obj/item/organ/cyberimp/brain/anti_drop,
+		/datum/job/chemist = /obj/item/organ/liver/cybernetic/tier2,
+		/datum/job/chief_engineer = /obj/item/organ/cyberimp/chest/thrusters,
+		/datum/job/chief_medical_officer = /obj/item/organ/cyberimp/chest/reviver,
+		/datum/job/clown = /obj/item/organ/cyberimp/brain/anti_stun, //HONK!
+		/datum/job/cook = /obj/item/organ/cyberimp/chest/nutriment/plus,
+		/datum/job/coroner = /obj/item/organ/tongue/bone, //hes got a bone to pick with you
+		/datum/job/curator = /obj/item/organ/cyberimp/brain/connector,
+		/datum/job/detective = /obj/item/organ/lungs/cybernetic/tier3,
+		/datum/job/doctor = /obj/item/organ/cyberimp/arm/surgery,
+		/datum/job/geneticist = /obj/item/organ/fly, //we don't care about implants, we have cancer.
+		/datum/job/head_of_personnel = /obj/item/organ/eyes/robotic,
+		/datum/job/head_of_security = /obj/item/organ/eyes/robotic/thermals,
+		/datum/job/human_ai = /obj/item/organ/brain/cybernetic,
+		/datum/job/janitor = /obj/item/organ/eyes/robotic/xray,
+		/datum/job/lawyer = /obj/item/organ/heart/cybernetic/tier2,
+		/datum/job/mime = /obj/item/organ/tongue/robot, //...
+		/datum/job/paramedic = /obj/item/organ/cyberimp/eyes/hud/medical,
+		/datum/job/prisoner = /obj/item/organ/eyes/robotic/shield,
+		/datum/job/psychologist = /obj/item/organ/ears/cybernetic/whisper,
+		/datum/job/pun_pun = /obj/item/organ/cyberimp/arm/strongarm,
+		/datum/job/quartermaster = /obj/item/organ/stomach/cybernetic/tier3,
+		/datum/job/research_director = /obj/item/organ/cyberimp/bci,
+		/datum/job/roboticist = /obj/item/organ/cyberimp/eyes/hud/diagnostic,
+		/datum/job/scientist = /obj/item/organ/ears/cybernetic,
+		/datum/job/security_officer = /obj/item/organ/cyberimp/arm/flash,
+		/datum/job/shaft_miner = /obj/item/organ/monster_core/rush_gland,
+		/datum/job/station_engineer = /obj/item/organ/cyberimp/arm/toolset,
+		/datum/job/warden = /obj/item/organ/cyberimp/eyes/hud/security,
 		// NOVA EDIT ADDITION START - MODULAR JOBS
-		/datum/job/virologist = /obj/item/organ/internal/lungs/cybernetic/tier2,
-		/datum/job/blueshield = /obj/item/organ/internal/cyberimp/brain/anti_stun,
-		/datum/job/nanotrasen_consultant = /obj/item/organ/internal/heart/cybernetic/tier3,
-		/datum/job/barber = /obj/item/organ/internal/ears/cybernetic/whisper,
-		/datum/job/corrections_officer = /obj/item/organ/internal/cyberimp/arm/flash,
-		/datum/job/orderly = /obj/item/organ/internal/cyberimp/brain/anti_drop,
-		/datum/job/science_guard = /obj/item/organ/internal/cyberimp/arm/flash,
-		/datum/job/customs_agent = /obj/item/organ/internal/cyberimp/eyes/hud/security,
-		/datum/job/bouncer = /obj/item/organ/internal/cyberimp/arm/strongarm,
-		/datum/job/engineering_guard = /obj/item/organ/internal/cyberimp/arm/flash,
-		/datum/job/telecomms_specialist = /obj/item/organ/internal/ears/cybernetic/xray,
+		/datum/job/virologist = /obj/item/organ/lungs/cybernetic/tier2,
+		/datum/job/blueshield = /obj/item/organ/cyberimp/brain/anti_stun,
+		/datum/job/nanotrasen_consultant = /obj/item/organ/heart/cybernetic/tier3,
+		/datum/job/barber = /obj/item/organ/ears/cybernetic/whisper,
+		/datum/job/corrections_officer = /obj/item/organ/cyberimp/arm/flash,
+		/datum/job/orderly = /obj/item/organ/cyberimp/brain/anti_drop,
+		/datum/job/science_guard = /obj/item/organ/cyberimp/arm/flash,
+		/datum/job/customs_agent = /obj/item/organ/cyberimp/eyes/hud/security,
+		/datum/job/bouncer = /obj/item/organ/cyberimp/arm/strongarm,
+		/datum/job/engineering_guard = /obj/item/organ/cyberimp/arm/flash,
+		/datum/job/telecomms_specialist = /obj/item/organ/ears/cybernetic/xray,
 		// NOVA EDIT END
 	)
 
@@ -325,7 +325,7 @@
 			var/mob/living/silicon/ai/ai = spawned
 			ai.eyeobj.relay_speech = TRUE //surveillance upgrade. the ai gets cybernetics too.
 		return
-	var/obj/item/organ/internal/cybernetic = new cybernetic_type()
+	var/obj/item/organ/cybernetic = new cybernetic_type()
 	cybernetic.Insert(spawned, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 
 /datum/station_trait/luxury_escape_pods
diff --git a/code/datums/status_effects/debuffs/drunk.dm b/code/datums/status_effects/debuffs/drunk.dm
index 928841f1049..e0f61d91584 100644
--- a/code/datums/status_effects/debuffs/drunk.dm
+++ b/code/datums/status_effects/debuffs/drunk.dm
@@ -138,7 +138,7 @@
 	// Handle the Ballmer Peak.
 	// If our owner is a scientist (has the trait "TRAIT_BALLMER_SCIENTIST"), there's a 5% chance
 	// that they'll say one of the special "ballmer message" lines, depending their drunk-ness level.
-	var/obj/item/organ/internal/liver/liver_organ = owner.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver_organ = owner.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver_organ && HAS_TRAIT(liver_organ, TRAIT_BALLMER_SCIENTIST) && prob(5))
 		if(drunk_value >= BALLMER_PEAK_LOW_END && drunk_value <= BALLMER_PEAK_HIGH_END)
 			owner.say(pick_list_replacements(VISTA_FILE, "ballmer_good_msg"), forced = "ballmer")
diff --git a/code/datums/status_effects/drug_effects.dm b/code/datums/status_effects/drug_effects.dm
index 849d3cb4d1e..7e8466f3372 100644
--- a/code/datums/status_effects/drug_effects.dm
+++ b/code/datums/status_effects/drug_effects.dm
@@ -65,19 +65,13 @@
 	duration = 10 SECONDS
 	alert_type = /atom/movable/screen/alert/status_effect/stoned
 	status_type = STATUS_EFFECT_REFRESH
-	var/original_eye_color_left
-	var/original_eye_color_right
 
 /datum/status_effect/stoned/on_apply()
 	if(!ishuman(owner))
 		return FALSE
 	var/mob/living/carbon/human/human_owner = owner
-	original_eye_color_left = human_owner.eye_color_left
-	original_eye_color_right = human_owner.eye_color_right
 	human_owner.add_movespeed_modifier(/datum/movespeed_modifier/reagent/cannabis) //slows you down
-	human_owner.eye_color_left = BLOODCULT_EYE //makes cult eyes less obvious
-	human_owner.eye_color_right = BLOODCULT_EYE //makes cult eyes less obvious
-	human_owner.update_body() //updates eye color
+	human_owner.add_eye_color(BLOODCULT_EYE, EYE_COLOR_WEED_PRIORITY) //makes cult eyes less obvious
 	human_owner.add_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), type) // impairs motor coordination and dilates blood vessels in eyes
 	human_owner.add_mood_event("stoned", /datum/mood_event/stoned) //improves mood
 	human_owner.sound_environment_override = SOUND_ENVIRONMENT_DRUGGED //not realistic but very immersive
@@ -88,9 +82,7 @@
 		return
 	var/mob/living/carbon/human/human_owner = owner
 	human_owner.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/cannabis)
-	human_owner.eye_color_left = original_eye_color_left
-	human_owner.eye_color_right = original_eye_color_right
-	human_owner.update_body()
+	human_owner.remove_eye_color(EYE_COLOR_WEED_PRIORITY)
 	human_owner.remove_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), type)
 	human_owner.clear_mood_event("stoned")
 	human_owner.sound_environment_override = SOUND_ENVIRONMENT_NONE
diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm
index 90f9a3c3097..d65c9fbfca3 100644
--- a/code/datums/status_effects/neutral.dm
+++ b/code/datums/status_effects/neutral.dm
@@ -547,7 +547,7 @@
 			if(QDELETED(human_mob))
 				return
 			if(prob(1))//low chance of the alternative reality returning to monkey
-				var/obj/item/organ/external/tail/monkey/monkey_tail = new ()
+				var/obj/item/organ/tail/monkey/monkey_tail = new ()
 				monkey_tail.Insert(human_mob, movement_flags = DELETE_IF_REPLACED)
 			var/datum/species/human_species = human_mob.dna?.species
 			if(human_species)
diff --git a/code/datums/wounds/cranial_fissure.dm b/code/datums/wounds/cranial_fissure.dm
index 071b6d19e70..f45aa165957 100644
--- a/code/datums/wounds/cranial_fissure.dm
+++ b/code/datums/wounds/cranial_fissure.dm
@@ -66,7 +66,7 @@
 	if (source.stat == DEAD)
 		return
 
-	var/obj/item/organ/internal/brain/brain = source.get_organ_by_type(/obj/item/organ/internal/brain)
+	var/obj/item/organ/brain/brain = source.get_organ_by_type(/obj/item/organ/brain)
 	if (isnull(brain))
 		return
 
@@ -91,7 +91,7 @@
 	if (victim.body_position != LYING_DOWN)
 		return FALSE
 
-	var/obj/item/organ/internal/eyes/eyes = victim.get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/eyes = victim.get_organ_by_type(/obj/item/organ/eyes)
 	if (isnull(eyes))
 		victim.balloon_alert(user, "no eyes to take!")
 		return TRUE
@@ -131,9 +131,9 @@
 
 	return TRUE
 
-/datum/wound/cranial_fissure/proc/still_has_eyes(obj/item/organ/internal/eyes/eyes)
+/datum/wound/cranial_fissure/proc/still_has_eyes(obj/item/organ/eyes/eyes)
 	PRIVATE_PROC(TRUE)
 
-	return victim?.get_organ_by_type(/obj/item/organ/internal/eyes) == eyes
+	return victim?.get_organ_by_type(/obj/item/organ/eyes) == eyes
 
 #undef CRANIAL_FISSURE_FILTER_DISPLACEMENT
diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm
index 8b5529f5112..fa357d47fe9 100644
--- a/code/datums/wounds/pierce.dm
+++ b/code/datums/wounds/pierce.dm
@@ -262,7 +262,7 @@
 	var/right_side = FALSE
 
 /datum/wound/pierce/bleed/severe/eye/apply_wound(obj/item/bodypart/limb, silent, datum/wound/old_wound, smited, attack_direction, wound_source, replacing, right_side)
-	var/obj/item/organ/internal/eyes/eyes = locate() in limb
+	var/obj/item/organ/eyes/eyes = locate() in limb
 	if (!istype(eyes))
 		return FALSE
 	. = ..()
@@ -294,7 +294,7 @@
 	can_be_randomly_generated = FALSE
 
 /datum/wound_pregen_data/flesh_pierce/open_puncture/eye/can_be_applied_to(obj/item/bodypart/limb, list/suggested_wounding_types, datum/wound/old_wound, random_roll, duplicates_allowed, care_about_existing_wounds)
-	if (isnull(locate(/obj/item/organ/internal/eyes) in limb))
+	if (isnull(locate(/obj/item/organ/eyes) in limb))
 		return FALSE
 	return ..()
 
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index aaa56433b27..93d6adcd773 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -364,7 +364,7 @@ GLOBAL_LIST_EMPTY(objectives) //NOVA EDIT ADDITION
 	var/human_check = TRUE
 
 /datum/objective/protect/check_completion()
-	var/obj/item/organ/internal/brain/brain_target
+	var/obj/item/organ/brain/brain_target
 	if(isnull(target))
 		return FALSE
 	if(human_check)
diff --git a/code/game/machinery/dna_infuser/dna_infusion.dm b/code/game/machinery/dna_infuser/dna_infusion.dm
index 9b85ae856e2..82e562fb7ed 100644
--- a/code/game/machinery/dna_infuser/dna_infusion.dm
+++ b/code/game/machinery/dna_infuser/dna_infusion.dm
@@ -67,7 +67,7 @@
 		if(old_organ)
 			if((old_organ.type != new_organ) && !IS_ROBOTIC_ORGAN(old_organ))
 				continue // Old organ can be mutated!
-		else if(ispath(new_organ, /obj/item/organ/external))
+		else if(new_organ::organ_flags & ORGAN_EXTERNAL)
 			continue // External organ can be grown!
 		// Internal organ is either missing, or is non-organic.
 		potential_new_organs -= new_organ
diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm
index ff951c587c0..e69a78f132d 100644
--- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm
+++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_one_entries.dm
@@ -19,10 +19,10 @@
 		/mob/living/basic/mining/goliath,
 	)
 	output_organs = list(
-		/obj/item/organ/internal/brain/goliath,
-		/obj/item/organ/internal/eyes/night_vision/goliath,
-		/obj/item/organ/internal/heart/goliath,
-		/obj/item/organ/internal/lungs/lavaland/goliath,
+		/obj/item/organ/brain/goliath,
+		/obj/item/organ/eyes/night_vision/goliath,
+		/obj/item/organ/heart/goliath,
+		/obj/item/organ/lungs/lavaland/goliath,
 	)
 	infusion_desc = "armored tendril-like"
 	tier = DNA_MUTANT_TIER_ONE
@@ -43,10 +43,10 @@
 		/mob/living/basic/carp,
 	)
 	output_organs = list(
-		/obj/item/organ/internal/brain/carp,
-		/obj/item/organ/internal/heart/carp,
-		/obj/item/organ/internal/lungs/carp,
-		/obj/item/organ/internal/tongue/carp,
+		/obj/item/organ/brain/carp,
+		/obj/item/organ/heart/carp,
+		/obj/item/organ/lungs/carp,
+		/obj/item/organ/tongue/carp,
 	)
 	infusion_desc = "nomadic"
 	tier = DNA_MUTANT_TIER_ONE
@@ -67,10 +67,10 @@
 		/obj/item/food/deadmouse,
 	)
 	output_organs = list(
-		/obj/item/organ/internal/eyes/night_vision/rat,
-		/obj/item/organ/internal/heart/rat,
-		/obj/item/organ/internal/stomach/rat,
-		/obj/item/organ/internal/tongue/rat,
+		/obj/item/organ/eyes/night_vision/rat,
+		/obj/item/organ/heart/rat,
+		/obj/item/organ/stomach/rat,
+		/obj/item/organ/tongue/rat,
 	)
 	infusion_desc = "skittish"
 	tier = DNA_MUTANT_TIER_ONE
@@ -97,10 +97,10 @@
 		/mob/living/basic/cockroach,
 	)
 	output_organs = list(
-		/obj/item/organ/internal/heart/roach,
-		/obj/item/organ/internal/stomach/roach,
-		/obj/item/organ/internal/liver/roach,
-		/obj/item/organ/internal/appendix/roach,
+		/obj/item/organ/heart/roach,
+		/obj/item/organ/stomach/roach,
+		/obj/item/organ/liver/roach,
+		/obj/item/organ/appendix/roach,
 	)
 	infusion_desc = "kafkaesque" // Gregor Samsa !!
 	tier = DNA_MUTANT_TIER_ONE
@@ -128,9 +128,9 @@
 		/obj/item/fish,
 	)
 	output_organs = list(
-		/obj/item/organ/internal/lungs/fish,
-		/obj/item/organ/internal/stomach/fish,
-		/obj/item/organ/external/tail/fish,
+		/obj/item/organ/lungs/fish,
+		/obj/item/organ/stomach/fish,
+		/obj/item/organ/tail/fish,
 	)
 	infusion_desc = "piscine"
 	tier = DNA_MUTANT_TIER_ONE
@@ -158,7 +158,7 @@
 
 	var/list/organs = ..()
 	if(infused_from.required_fluid_type == AQUARIUM_FLUID_AIR || HAS_TRAIT(infused_from, TRAIT_FISH_AMPHIBIOUS))
-		organs -= /obj/item/organ/internal/lungs/fish
+		organs -= /obj/item/organ/lungs/fish
 	return organs
 
 
@@ -172,7 +172,7 @@
 		"spit ink to blind foes",
 	)
 	output_organs = list(
-		/obj/item/organ/internal/tongue/inky
+		/obj/item/organ/tongue/inky
 	)
 	tier = DNA_MUTANT_TIER_ONE
 
@@ -187,7 +187,7 @@
 		"drink like a fish",
 	)
 	output_organs = list(
-		/obj/item/organ/internal/liver/fish
+		/obj/item/organ/liver/fish
 	)
 	tier = DNA_MUTANT_TIER_ONE
 	unreachable_effect = TRUE
@@ -208,7 +208,7 @@
 		/mob/living/basic/crab,
 	)
 	output_organs = list(
-		/obj/item/organ/internal/lungs/fish/amphibious,
+		/obj/item/organ/lungs/fish/amphibious,
 	)
 	infusion_desc = "semi-aquatic"
 	tier = DNA_MUTANT_TIER_ONE
diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm
index 1620607d5f0..045fa669c4f 100644
--- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm
+++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_two_entries.dm
@@ -22,9 +22,9 @@
 		/obj/item/food/meat/slab/gondola,
 	)
 	output_organs = list(
-		/obj/item/organ/internal/heart/gondola,
-		/obj/item/organ/internal/tongue/gondola,
-		/obj/item/organ/internal/liver/gondola,
+		/obj/item/organ/heart/gondola,
+		/obj/item/organ/tongue/gondola,
+		/obj/item/organ/liver/gondola,
 	)
 	infusion_desc = "observant"
 	tier = DNA_MUTANT_TIER_TWO
diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm
index e93cffd5143..e4d93a587f8 100644
--- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm
+++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm
@@ -17,12 +17,12 @@
 		"this is a bad idea",
 	)
 	output_organs = list(
-		/obj/item/organ/internal/appendix/fly,
-		/obj/item/organ/internal/eyes/fly,
-		/obj/item/organ/internal/heart/fly,
-		/obj/item/organ/internal/lungs/fly,
-		/obj/item/organ/internal/stomach/fly,
-		/obj/item/organ/internal/tongue/fly,
+		/obj/item/organ/appendix/fly,
+		/obj/item/organ/eyes/fly,
+		/obj/item/organ/heart/fly,
+		/obj/item/organ/lungs/fly,
+		/obj/item/organ/stomach/fly,
+		/obj/item/organ/tongue/fly,
 	)
 	infusion_desc = "fly-like"
 	tier = DNA_MUTANT_TIER_ZERO
@@ -41,7 +41,7 @@
 		/mob/living/basic/pet/fox,
 	)
 	output_organs = list(
-		/obj/item/organ/internal/ears/fox,
+		/obj/item/organ/ears/fox,
 	)
 	infusion_desc = "inexcusable"
 	tier = DNA_MUTANT_TIER_ZERO
@@ -61,10 +61,10 @@
 		/mob/living/basic/mothroach,
 	)
 	output_organs = list(
-		/obj/item/organ/external/antennae,
-		/obj/item/organ/external/wings/moth,
-		/obj/item/organ/internal/eyes/moth,
-		/obj/item/organ/internal/tongue/moth,
+		/obj/item/organ/antennae,
+		/obj/item/organ/wings/moth,
+		/obj/item/organ/eyes/moth,
+		/obj/item/organ/tongue/moth,
 	)
 	infusion_desc = "fluffy"
 	tier = DNA_MUTANT_TIER_ZERO
@@ -84,11 +84,11 @@
 		/mob/living/basic/lizard,
 	)
 	output_organs = list(
-		/obj/item/organ/external/horns,
-		/obj/item/organ/external/frills,
-		/obj/item/organ/external/snout,
-		/obj/item/organ/external/tail/lizard,
-		/obj/item/organ/internal/tongue/lizard,
+		/obj/item/organ/horns,
+		/obj/item/organ/frills,
+		/obj/item/organ/snout,
+		/obj/item/organ/tail/lizard,
+		/obj/item/organ/tongue/lizard,
 	)
 	infusion_desc = "scaly"
 	tier = DNA_MUTANT_TIER_ZERO
@@ -105,8 +105,8 @@
 		/mob/living/basic/pet/cat,
 	)
 	output_organs = list(
-		/obj/item/organ/internal/ears/cat,
-		/obj/item/organ/external/tail/cat,
+		/obj/item/organ/ears/cat,
+		/obj/item/organ/tail/cat,
 	)
 	infusion_desc = "domestic"
 	tier = DNA_MUTANT_TIER_ZERO
diff --git a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
index 622cafaa7bf..1e4bc41ae41 100644
--- a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
@@ -15,7 +15,7 @@
 
 ///Carp lungs! You can breathe in space! Oh... you can't breathe on the station, you need low oxygen environments.
 /// Inverts behavior of lungs. Bypasses suffocation due to space / lack of gas, but also allows Oxygen to suffocate.
-/obj/item/organ/internal/lungs/carp
+/obj/item/organ/lungs/carp
 	name = "mutated carp-lungs"
 	desc = "Carp DNA infused into what was once some normal lungs."
 	// Oxygen causes suffocation.
@@ -27,14 +27,14 @@
 	greyscale_config = /datum/greyscale_config/mutant_organ
 	greyscale_colors = CARP_COLORS
 
-/obj/item/organ/internal/lungs/carp/Initialize(mapload)
+/obj/item/organ/lungs/carp/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their neck has odd gills.", BODY_ZONE_HEAD)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
 	ADD_TRAIT(src, TRAIT_SPACEBREATHING, REF(src))
 
 ///occasionally sheds carp teeth, stronger melee (bite) attacks, but you can't cover your mouth anymore.
-/obj/item/organ/internal/tongue/carp
+/obj/item/organ/tongue/carp
 	name = "mutated carp-jaws"
 	desc = "Carp DNA infused into what was once some normal teeth."
 
@@ -45,12 +45,12 @@
 	greyscale_config = /datum/greyscale_config/mutant_organ
 	greyscale_colors = CARP_COLORS
 
-/obj/item/organ/internal/tongue/carp/Initialize(mapload)
+/obj/item/organ/tongue/carp/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their teeth are big and sharp.", BODY_ZONE_PRECISE_MOUTH)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
 
-/obj/item/organ/internal/tongue/carp/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/carp/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
 	. = ..()
 	if(!ishuman(tongue_owner))
 		return
@@ -60,14 +60,14 @@
 	var/datum/species/rec_species = human_receiver.dna.species
 	rec_species.update_no_equip_flags(tongue_owner, rec_species.no_equip_flags | ITEM_SLOT_MASK)
 
-/obj/item/organ/internal/tongue/carp/on_bodypart_insert(obj/item/bodypart/head)
+/obj/item/organ/tongue/carp/on_bodypart_insert(obj/item/bodypart/head)
 	. = ..()
 	head.unarmed_damage_low = 10
 	head.unarmed_damage_high = 15
 	head.unarmed_effectiveness = 15
 	head.unarmed_attack_effect = ATTACK_EFFECT_BITE
 
-/obj/item/organ/internal/tongue/carp/on_mob_remove(mob/living/carbon/tongue_owner)
+/obj/item/organ/tongue/carp/on_mob_remove(mob/living/carbon/tongue_owner)
 	. = ..()
 	if(!ishuman(tongue_owner))
 		return
@@ -77,14 +77,14 @@
 	var/datum/species/rec_species = human_receiver.dna.species
 	rec_species.update_no_equip_flags(tongue_owner, initial(rec_species.no_equip_flags))
 
-/obj/item/organ/internal/tongue/carp/on_bodypart_remove(obj/item/bodypart/head)
+/obj/item/organ/tongue/carp/on_bodypart_remove(obj/item/bodypart/head)
 	. = ..()
 	head.unarmed_damage_low = initial(head.unarmed_damage_low)
 	head.unarmed_damage_high = initial(head.unarmed_damage_high)
 	head.unarmed_effectiveness = initial(head.unarmed_effectiveness)
 	head.unarmed_attack_effect = initial(head.unarmed_attack_effect)
 
-/obj/item/organ/internal/tongue/carp/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/tongue/carp/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if(owner.stat != CONSCIOUS || !prob(0.1))
 		return
@@ -99,7 +99,7 @@
 	icon_state = "carptooth"
 
 ///carp brain. you need to occasionally go to a new zlevel. think of it as... walking your dog!
-/obj/item/organ/internal/brain/carp
+/obj/item/organ/brain/carp
 	name = "mutated carp-brain"
 	desc = "Carp DNA infused into what was once a normal brain."
 
@@ -114,35 +114,35 @@
 	///how much time the timer is given
 	var/cooldown_time = 10 MINUTES
 
-/obj/item/organ/internal/brain/carp/Initialize(mapload)
+/obj/item/organ/brain/carp/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_They seem%PRONOUN_s unable to stay still.")
 
-/obj/item/organ/internal/brain/carp/on_mob_insert(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/carp/on_mob_insert(mob/living/carbon/brain_owner)
 	. = ..()
 	cooldown_timer = addtimer(CALLBACK(src, PROC_REF(unsatisfied_nomad)), cooldown_time, TIMER_STOPPABLE|TIMER_OVERRIDE|TIMER_UNIQUE)
 	RegisterSignal(brain_owner, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(satisfied_nomad))
 
 //technically you could get around the mood issue by extracting and reimplanting the brain but it will be far easier to just go one z there and back
-/obj/item/organ/internal/brain/carp/on_mob_remove(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/carp/on_mob_remove(mob/living/carbon/brain_owner)
 	. = ..()
 	UnregisterSignal(brain_owner, COMSIG_MOVABLE_Z_CHANGED)
 	deltimer(cooldown_timer)
 
-/obj/item/organ/internal/brain/carp/get_attacking_limb(mob/living/carbon/human/target)
+/obj/item/organ/brain/carp/get_attacking_limb(mob/living/carbon/human/target)
 	return owner.get_bodypart(BODY_ZONE_HEAD)
 
-/obj/item/organ/internal/brain/carp/proc/unsatisfied_nomad()
+/obj/item/organ/brain/carp/proc/unsatisfied_nomad()
 	owner.add_mood_event("nomad", /datum/mood_event/unsatisfied_nomad)
 
-/obj/item/organ/internal/brain/carp/proc/satisfied_nomad()
+/obj/item/organ/brain/carp/proc/satisfied_nomad()
 	SIGNAL_HANDLER
 	owner.clear_mood_event("nomad")
 	cooldown_timer = addtimer(CALLBACK(src, PROC_REF(unsatisfied_nomad)), cooldown_time, TIMER_STOPPABLE|TIMER_OVERRIDE|TIMER_UNIQUE)
 
 /// makes you cold resistant, but heat-weak.
-/obj/item/organ/internal/heart/carp
+/obj/item/organ/heart/carp
 	name = "mutated carp-heart"
 	desc = "Carp DNA infused into what was once a normal heart."
 
@@ -153,7 +153,7 @@
 
 	organ_traits = list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE)
 
-/obj/item/organ/internal/heart/carp/Initialize(mapload)
+/obj/item/organ/heart/carp/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their skin has small patches of scales growing on it.", BODY_ZONE_CHEST)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
diff --git a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
index 7ac41ab28c0..aa479f1d316 100644
--- a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
@@ -40,7 +40,7 @@
 	else
 		ADD_TRAIT(owner, TRAIT_GRABRESISTANCE, REF(src))
 		owner.add_mood_event("fish_organs_bonus", /datum/mood_event/fish_water)
-	if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish))
+	if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
 		add_speed_buff()
 	owner.mind?.adjust_experience(/datum/skill/fishing, SKILL_EXP_JOURNEYMAN, silent = TRUE)
 
@@ -62,7 +62,7 @@
 	if(ishuman(owner))
 		var/mob/living/carbon/human/human = owner
 		human.physiology.damage_resistance -= 8
-	if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish))
+	if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
 		remove_speed_buff()
 	owner.mind?.adjust_experience(/datum/skill/fishing, -SKILL_EXP_JOURNEYMAN, silent = TRUE)
 
@@ -86,11 +86,11 @@
 	SIGNAL_HANDLER
 	if(HAS_TRAIT(owner, TRAIT_IS_WET)) //remove the debuffs from being dry
 		remove_debuff()
-		if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish))
+		if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
 			add_speed_buff()
 		return
 	apply_debuff()
-	if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail/fish))
+	if(istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
 		remove_speed_buff()
 
 /datum/status_effect/organ_set_bonus/fish/proc/apply_debuff()
@@ -125,7 +125,7 @@
 
 /datum/status_effect/organ_set_bonus/fish/proc/check_tail(mob/living/carbon/source, obj/item/organ/organ, special)
 	SIGNAL_HANDLER
-	if(!HAS_TRAIT(owner, TRAIT_IS_WET) || !istype(organ, /obj/item/organ/external/tail/fish))
+	if(!HAS_TRAIT(owner, TRAIT_IS_WET) || !istype(organ, /obj/item/organ/tail/fish))
 		return
 	var/obj/item/organ/tail = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 	if(tail != organ)
@@ -152,7 +152,7 @@
 
 
 ///Tail for fish DNA-infused spacemen. It provides a speed buff while in water. It's also needed for the crawl speed bonus once the threshold is reached.
-/obj/item/organ/external/tail/fish
+/obj/item/organ/tail/fish
 	name = "fish tail"
 	desc = "A severed tail from some sort of marine creature... or a fish-infused spaceman. It's smooth, faintly wet and definitely not flopping."
 	icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -180,29 +180,29 @@
 	/// The amount of fillets this gets processed into
 	var/fillet_amount = 5
 
-/obj/item/organ/external/tail/fish/Initialize(mapload)
+/obj/item/organ/tail/fish/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish)
 	var/time_to_fillet = fillet_amount * 0.5 SECONDS
 	AddElement(/datum/element/processable, TOOL_KNIFE, fillet_type, fillet_amount, time_to_fillet, screentip_verb = "Cut")
 
-/obj/item/organ/external/tail/fish/on_mob_insert(mob/living/carbon/owner)
+/obj/item/organ/tail/fish/on_mob_insert(mob/living/carbon/owner)
 	. = ..()
 	owner.AddElementTrait(TRAIT_WADDLING, type, /datum/element/waddling)
 	RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_location))
 	check_location(owner, null)
 
-/obj/item/organ/external/tail/fish/on_mob_remove(mob/living/carbon/owner)
+/obj/item/organ/tail/fish/on_mob_remove(mob/living/carbon/owner)
 	. = ..()
 	owner.remove_traits(list(TRAIT_WADDLING, TRAIT_NO_STAGGER), type)
 	owner.remove_movespeed_modifier(/datum/movespeed_modifier/fish_on_water)
 	owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/fish_on_water)
 	UnregisterSignal(owner, COMSIG_MOVABLE_MOVED)
 
-/obj/item/organ/external/tail/fish/get_greyscale_color_from_draw_color()
+/obj/item/organ/tail/fish/get_greyscale_color_from_draw_color()
 	set_greyscale(bodypart_overlay.draw_color)
 
-/obj/item/organ/external/tail/fish/proc/check_location(mob/living/carbon/source, atom/movable/old_loc, dir, forced)
+/obj/item/organ/tail/fish/proc/check_location(mob/living/carbon/source, atom/movable/old_loc, dir, forced)
 	SIGNAL_HANDLER
 	var/was_water = istype(old_loc, /turf/open/water)
 	var/is_water = istype(source.loc, /turf/open/water) && !HAS_TRAIT(source.loc, TRAIT_TURF_IGNORE_SLOWDOWN)
@@ -240,7 +240,7 @@
 
 
 ///Lungs that replace the need of oxygen with water vapor or being wet
-/obj/item/organ/internal/lungs/fish
+/obj/item/organ/lungs/fish
 	name = "mutated gills"
 	desc = "Fish DNA infused on what once was a normal pair of lungs that now require spacemen to breathe water vapor, or keep themselves covered in water."
 	icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -258,7 +258,7 @@
 
 	var/has_gills = TRUE
 
-/obj/item/organ/internal/lungs/fish/Initialize(mapload)
+/obj/item/organ/lungs/fish/Initialize(mapload)
 	. = ..()
 	add_gas_reaction(/datum/gas/water_vapor, always = PROC_REF(breathe_water))
 	respiration_type |= RESPIRATION_OXYGEN //after all, we get oxygen from water
@@ -269,26 +269,26 @@
 	AddComponent(/datum/component/bubble_icon_override, "fish", BUBBLE_ICON_PRIORITY_ORGAN)
 	AddComponent(/datum/component/speechmod, replacements = strings("crustacean_replacement.json", "crustacean"))
 
-/obj/item/organ/internal/lungs/fish/Destroy()
+/obj/item/organ/lungs/fish/Destroy()
 	QDEL_NULL(gills)
 	return ..()
 
-/obj/item/organ/internal/lungs/fish/on_bodypart_insert(obj/item/bodypart/limb)
+/obj/item/organ/lungs/fish/on_bodypart_insert(obj/item/bodypart/limb)
 	. = ..()
 	if(gills)
 		limb.add_bodypart_overlay(gills)
 
-/obj/item/organ/internal/lungs/fish/on_bodypart_remove(obj/item/bodypart/limb)
+/obj/item/organ/lungs/fish/on_bodypart_remove(obj/item/bodypart/limb)
 	. = ..()
 	if(gills)
 		limb.remove_bodypart_overlay(gills)
 
-/obj/item/organ/internal/lungs/fish/on_mob_remove(mob/living/carbon/owner)
+/obj/item/organ/lungs/fish/on_mob_remove(mob/living/carbon/owner)
 	. = ..()
 	owner.clear_alert(ALERT_NOT_ENOUGH_WATER)
 
 /// Requires the spaceman to have either water vapor or be wet.
-/obj/item/organ/internal/lungs/fish/proc/breathe_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp, old_water_pp)
+/obj/item/organ/lungs/fish/proc/breathe_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp, old_water_pp)
 	var/need_to_breathe = !HAS_TRAIT(src, TRAIT_SPACEBREATHING) && !HAS_TRAIT(breather, TRAIT_IS_WET)
 	if(water_pp < safe_water_level && need_to_breathe)
 		on_low_water(breather, breath, water_pp)
@@ -305,7 +305,7 @@
 		breather.adjustOxyLoss(-5)
 
 /// Called when there isn't enough water to breath
-/obj/item/organ/internal/lungs/fish/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
+/obj/item/organ/lungs/fish/proc/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
 	breather.throw_alert(ALERT_NOT_ENOUGH_WATER, /atom/movable/screen/alert/not_enough_water)
 	var/gas_breathed = handle_suffocation(breather, water_pp, safe_water_level, breath.gases[/datum/gas/water_vapor][MOLES])
 	if(water_pp)
@@ -325,10 +325,10 @@
 	)
 
 /// Subtype of gills that allow the mob to optionally breathe water.
-/obj/item/organ/internal/lungs/fish/amphibious
+/obj/item/organ/lungs/fish/amphibious
 	name = "mutated semi-aquatic lungs"
 	desc = "DNA from an amphibious or semi-aquatic creature infused on a pair lungs. Enjoy breathing underwater without drowning outside water."
-	safe_oxygen_min = /obj/item/organ/internal/lungs::safe_oxygen_min
+	safe_oxygen_min = /obj/item/organ/lungs::safe_oxygen_min
 	has_gills = FALSE
 	/**
 	 * If false, we don't breathe air since we've got water instead.
@@ -336,7 +336,7 @@
 	 */
 	var/should_breathe_oxygen = FALSE
 
-/obj/item/organ/internal/lungs/fish/amphibious/Initialize(mapload)
+/obj/item/organ/lungs/fish/amphibious/Initialize(mapload)
 	. = ..()
 	/**
 	 * We're setting the gas reaction for breathing oxygen here,
@@ -344,18 +344,18 @@
 	 * and we want breathe_water() to run before breathe_oxygen,
 	 * so that if we're breathing water vapor (or are wet), we won't have to breathe oxygen.
 	 */
-	safe_oxygen_min = /obj/item/organ/internal/lungs::safe_oxygen_min
+	safe_oxygen_min = /obj/item/organ/lungs::safe_oxygen_min
 	add_gas_reaction(/datum/gas/oxygen, always = PROC_REF(breathe_oxygen))
 
-/obj/item/organ/internal/lungs/fish/amphibious/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
+/obj/item/organ/lungs/fish/amphibious/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
 	should_breathe_oxygen = FALSE //assume we don't have to breathe oxygen until we fail to breathe water
 	return ..()
 
-/obj/item/organ/internal/lungs/fish/amphibious/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
+/obj/item/organ/lungs/fish/amphibious/on_low_water(mob/living/carbon/breather, datum/gas_mixture/breath, water_pp)
 	should_breathe_oxygen = TRUE
 	return
 
-/obj/item/organ/internal/lungs/fish/amphibious/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
+/obj/item/organ/lungs/fish/amphibious/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
 	if(!should_breathe_oxygen)
 		if(breather.failed_last_breath) //in case we had neither oxygen nor water last tick.
 			breather.clear_alert(ALERT_NOT_ENOUGH_OXYGEN)
@@ -363,7 +363,7 @@
 	return ..()
 
 ///Fish infuser organ, allows mobs to safely eat raw fish.
-/obj/item/organ/internal/stomach/fish
+/obj/item/organ/stomach/fish
 	name = "mutated fish-stomach"
 	desc = "Fish DNA infused into a stomach now permeated by the faint smell of salt and slightly putrefied fish."
 	icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -382,13 +382,13 @@
 		"putrid fish" = 1,
 	)
 
-/obj/item/organ/internal/stomach/fish/Initialize(mapload)
+/obj/item/organ/stomach/fish/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish)
 
 
 ///Organ from fish with the ink production trait. Doesn't count toward the organ set bonus but is buffed once it's active.
-/obj/item/organ/internal/tongue/inky
+/obj/item/organ/tongue/inky
 	name = "ink-secreting tongue"
 	desc = "A black tongue linked to two swollen black sacs underneath the palate."
 	icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -403,12 +403,12 @@
 		"the sea" = 0.2,
 	)
 
-/obj/item/organ/internal/tongue/inky/Initialize(mapload)
+/obj/item/organ/tongue/inky/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "Slick black ink seldom rivulets from %PRONOUN_their mouth.", BODY_ZONE_PRECISE_MOUTH)
 
 ///Organ from fish with the toxic trait. Allows the user to use tetrodotoxin as a healing chem instead of a toxin.
-/obj/item/organ/internal/liver/fish
+/obj/item/organ/liver/fish
 	name = "mutated fish-liver"
 	desc = "Fish DNA infused into a stomach that now uses tetrodotoxin as regenerative material. It also processes alcohol quite well."
 	icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -418,7 +418,7 @@
 
 	organ_traits = list(TRAIT_TETRODOTOXIN_HEALING, TRAIT_ALCOHOL_TOLERANCE) //drink like a fish :^)
 	liver_resistance = parent_type::liver_resistance * 1.5
-	food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/iron = 5, /datum/reagent/toxin/tetrodotoxin = 5)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/iron = 5, /datum/reagent/toxin/tetrodotoxin = 5)
 	grind_results = list(/datum/reagent/consumable/nutriment/peptides = 5, /datum/reagent/toxin/tetrodotoxin = 5)
 
 	// Seafood instead of meat, because it's a fish organ
@@ -426,7 +426,7 @@
 	// Just fish, the toxin isn't obvious
 	food_tastes = list("fish" = 1)
 
-/obj/item/organ/internal/liver/fish/Initialize(mapload)
+/obj/item/organ/liver/fish/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fish)
 
diff --git a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm
index 4fb894394cb..23f9a377ab6 100644
--- a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm
@@ -19,7 +19,7 @@
 	to_chat(new_fly, span_danger("Too much fly DNA! Your skin begins to discolor into a horrible black as you become more fly than person!"))
 	new_fly.set_species(/datum/species/fly)
 
-/obj/item/organ/internal/eyes/fly
+/obj/item/organ/eyes/fly
 	name = "fly eyes"
 	desc = "These eyes seem to stare back no matter the direction you look at it from."
 	eye_icon_state = "flyeyes"
@@ -27,11 +27,11 @@
 	flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE
 	native_fov = NONE //flies can see all around themselves.
 
-/obj/item/organ/internal/eyes/fly/Initialize(mapload)
+/obj/item/organ/eyes/fly/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
 
-/obj/item/organ/internal/tongue/fly
+/obj/item/organ/tongue/fly
 	name = "proboscis"
 	desc = "A freakish looking meat tube that apparently can take in liquids."
 	icon = 'icons/obj/medical/organs/fly_organs.dmi'
@@ -61,56 +61,56 @@
 	)
 	// NOVA EDIT ADDITION END
 
-/obj/item/organ/internal/tongue/fly/New(class, timer, datum/mutation/human/copymut)
+/obj/item/organ/tongue/fly/New(class, timer, datum/mutation/human/copymut)
 	. = ..()
 	AddComponent(/datum/component/speechmod, replacements = CONFIG_GET(flag/russian_text_formation) ? russian_speech_replacements : speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) // NOVA EDIT CHANGE - ORIGINAL:AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech)))
 
-/obj/item/organ/internal/tongue/fly/Initialize(mapload)
+/obj/item/organ/tongue/fly/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
 
-/obj/item/organ/internal/tongue/fly/get_possible_languages()
+/obj/item/organ/tongue/fly/get_possible_languages()
 	return ..() + /datum/language/buzzwords
 
-/obj/item/organ/internal/heart/fly
+/obj/item/organ/heart/fly
 	desc = FLY_INFUSED_ORGAN_DESC
 
-/obj/item/organ/internal/heart/fly/Initialize(mapload)
+/obj/item/organ/heart/fly/Initialize(mapload)
 	. = ..()
 	name = odd_organ_name()
 	icon_state = FLY_INFUSED_ORGAN_ICON
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
 	AddElement(/datum/element/update_icon_blocker)
 
-/obj/item/organ/internal/lungs/fly
+/obj/item/organ/lungs/fly
 	desc = FLY_INFUSED_ORGAN_DESC
 
-/obj/item/organ/internal/lungs/fly/Initialize(mapload)
+/obj/item/organ/lungs/fly/Initialize(mapload)
 	. = ..()
 	name = odd_organ_name()
 	icon_state = FLY_INFUSED_ORGAN_ICON
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
 
-/obj/item/organ/internal/liver/fly
+/obj/item/organ/liver/fly
 	desc = FLY_INFUSED_ORGAN_DESC
 	alcohol_tolerance = 0.007 //flies eat vomit, so a lower alcohol tolerance is perfect!
 
-/obj/item/organ/internal/liver/fly/Initialize(mapload)
+/obj/item/organ/liver/fly/Initialize(mapload)
 	. = ..()
 	name = odd_organ_name()
 	icon_state = FLY_INFUSED_ORGAN_ICON
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
 
-/obj/item/organ/internal/stomach/fly
+/obj/item/organ/stomach/fly
 	desc = FLY_INFUSED_ORGAN_DESC
 
-/obj/item/organ/internal/stomach/fly/Initialize(mapload)
+/obj/item/organ/stomach/fly/Initialize(mapload)
 	. = ..()
 	name = odd_organ_name()
 	icon_state = FLY_INFUSED_ORGAN_ICON
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
 
-/obj/item/organ/internal/stomach/fly/after_eat(edible)
+/obj/item/organ/stomach/fly/after_eat(edible)
 	var/mob/living/carbon/body = owner
 	ASSERT(istype(body))
 	// we do not lose any nutrition as a fly when vomiting out food
@@ -122,28 +122,28 @@
 	)
 	return ..()
 
-/obj/item/organ/internal/appendix/fly
+/obj/item/organ/appendix/fly
 	desc = FLY_INFUSED_ORGAN_DESC
 
-/obj/item/organ/internal/appendix/fly/Initialize(mapload)
+/obj/item/organ/appendix/fly/Initialize(mapload)
 	. = ..()
 	name = odd_organ_name()
 	icon_state = FLY_INFUSED_ORGAN_ICON
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly)
 
-/obj/item/organ/internal/appendix/fly/update_appearance(updates=ALL)
+/obj/item/organ/appendix/fly/update_appearance(updates=ALL)
 	return ..(updates & ~(UPDATE_NAME|UPDATE_ICON)) //don't set name or icon thank you
 
 //useless organs we throw in just to fuck with surgeons a bit more. they aren't part of a bonus, just the (absolute) state of flies
-/obj/item/organ/internal/fly
+/obj/item/organ/fly
 	desc = FLY_INFUSED_ORGAN_DESC
 
-/obj/item/organ/internal/fly/Initialize(mapload)
+/obj/item/organ/fly/Initialize(mapload)
 	. = ..()
 	name = odd_organ_name()
 	icon_state = FLY_INFUSED_ORGAN_ICON
 
-/obj/item/organ/internal/fly/groin //appendix is the only groin organ so we gotta have one of these too lol
+/obj/item/organ/fly/groin //appendix is the only groin organ so we gotta have one of these too lol
 	zone = BODY_ZONE_PRECISE_GROIN
 
 #undef FLY_INFUSED_ORGAN_DESC
diff --git a/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm
index 3fecac3bb6d..4c1f701e355 100644
--- a/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/fox_organs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/ears/fox
+/obj/item/organ/ears/fox
 	name = "fox ears"
 	icon = 'icons/obj/clothing/head/costume.dmi'
 	worn_icon = 'icons/mob/clothing/head/costume.dmi'
@@ -6,4 +6,6 @@
 	visual = TRUE
 	damage_multiplier = 2
 
+	//dna_block = DNA_EARS_BLOCK // NOVA EDIT REMOVAL - Customization - We have our own system to handle DNA.
+	bodypart_overlay = /datum/bodypart_overlay/mutant/cat_ears
 	sprite_accessory_override = /datum/sprite_accessory/ears/fox
diff --git a/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm b/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm
index 3962d59b845..5a06aa8e8c2 100644
--- a/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm
@@ -12,7 +12,7 @@
 	bonus_traits = list(TRAIT_LAVA_IMMUNE)
 
 ///goliath eyes, simple night vision
-/obj/item/organ/internal/eyes/night_vision/goliath
+/obj/item/organ/eyes/night_vision/goliath
 	name = "goliath eyes"
 	desc = "goliath DNA infused into what was once some normal eyes."
 
@@ -29,13 +29,13 @@
 	high_light_cutoff = list(50, 10, 40)
 	organ_traits = list(TRAIT_UNNATURAL_RED_GLOWY_EYES)
 
-/obj/item/organ/internal/eyes/night_vision/goliath/Initialize(mapload)
+/obj/item/organ/eyes/night_vision/goliath/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their eyes are blood red and stone-like.", BODY_ZONE_PRECISE_EYES)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath)
 
 ///goliath lungs! You can breathe lavaland air mix but can't breath pure O2 from a tank anymore.
-/obj/item/organ/internal/lungs/lavaland/goliath
+/obj/item/organ/lungs/lavaland/goliath
 	name = "mutated goliath-lungs"
 	desc = "goliath DNA infused into what was once some normal lungs."
 
@@ -44,13 +44,13 @@
 	greyscale_config = /datum/greyscale_config/mutant_organ
 	greyscale_colors = GOLIATH_COLORS
 
-/obj/item/organ/internal/lungs/lavaland/goliath/Initialize(mapload)
+/obj/item/organ/lungs/lavaland/goliath/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their back is covered in small tendrils.", BODY_ZONE_CHEST)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath)
 
 ///goliath brain. you can't use gloves but one of your arms becomes a tendril hammer that can be used to mine!
-/obj/item/organ/internal/brain/goliath
+/obj/item/organ/brain/goliath
 	name = "mutated goliath-brain"
 	desc = "goliath DNA infused into what was once a normal brain."
 
@@ -62,12 +62,12 @@
 
 	var/obj/item/goliath_infuser_hammer/hammer
 
-/obj/item/organ/internal/brain/goliath/Initialize(mapload)
+/obj/item/organ/brain/goliath/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their arm is just a mass of plate and tendrils.", BODY_ZONE_CHEST)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath)
 
-/obj/item/organ/internal/brain/goliath/on_mob_insert(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/goliath/on_mob_insert(mob/living/carbon/brain_owner)
 	. = ..()
 	if(!ishuman(brain_owner))
 		return
@@ -79,7 +79,7 @@
 	hammer = new/obj/item/goliath_infuser_hammer
 	brain_owner.put_in_hands(hammer)
 
-/obj/item/organ/internal/brain/goliath/on_mob_remove(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/goliath/on_mob_remove(mob/living/carbon/brain_owner)
 	. = ..()
 	UnregisterSignal(brain_owner)
 	if(!ishuman(brain_owner))
@@ -159,7 +159,7 @@
 		target.throw_at(get_edge_target_turf(target, get_cardinal_dir(src, target)), rand(1, 2), prob(60) ? 1 : 4, user)
 
 /// goliath heart gives you the ability to survive ash storms.
-/obj/item/organ/internal/heart/goliath
+/obj/item/organ/heart/goliath
 	name = "mutated goliath-heart"
 	desc = "goliath DNA infused into what was once a normal heart."
 
@@ -170,7 +170,7 @@
 
 	organ_traits = list(TRAIT_ASHSTORM_IMMUNE)
 
-/obj/item/organ/internal/heart/goliath/Initialize(mapload)
+/obj/item/organ/heart/goliath/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their skin has visible hard plates growing from within.", BODY_ZONE_CHEST)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/goliath)
diff --git a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
index 9fcf7e483bb..82c9c9fc8e8 100644
--- a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
@@ -16,7 +16,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
 	bonus_traits = list(TRAIT_RESISTHEAT, TRAIT_RESISTCOLD, TRAIT_NOBREATH, TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTHIGHPRESSURE)
 
 /// makes you a pacifist and turns most mobs neutral towards you
-/obj/item/organ/internal/heart/gondola
+/obj/item/organ/heart/gondola
 	name = "mutated gondola-heart"
 	desc = "Gondola DNA infused into what was once a normal heart."
 
@@ -28,13 +28,13 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
 	///keeps track of whether the receiver actually gained factions
 	var/list/factions_to_remove = list()
 
-/obj/item/organ/internal/heart/gondola/Initialize(mapload)
+/obj/item/organ/heart/gondola/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola)
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_They radiate%PRONOUN_s an aura of serenity.")
 	AddElement(/datum/element/update_icon_blocker)
 
-/obj/item/organ/internal/heart/gondola/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/heart/gondola/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	. = ..()
 	if(!(FACTION_HOSTILE in receiver.faction))
 		factions_to_remove += FACTION_HOSTILE
@@ -42,7 +42,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
 		factions_to_remove += FACTION_MINING
 	receiver.faction |= list(FACTION_HOSTILE, FACTION_MINING)
 
-/obj/item/organ/internal/heart/gondola/mob_remove(mob/living/carbon/heartless, special, movement_flags)
+/obj/item/organ/heart/gondola/mob_remove(mob/living/carbon/heartless, special, movement_flags)
 	. = ..()
 	for(var/faction in factions_to_remove)
 		heartless.faction -= faction
@@ -50,7 +50,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
 	factions_to_remove = list()
 
 /// Zen (tounge): You can no longer speak, but get a powerful positive moodlet
-/obj/item/organ/internal/tongue/gondola
+/obj/item/organ/tongue/gondola
 	name = "mutated gondola-tongue"
 	desc = "Gondola DNA infused into what was once a normal tongue."
 	icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -59,21 +59,21 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
 	greyscale_colors = GONDOLA_COLORS
 	organ_traits = list(TRAIT_MUTE)
 
-/obj/item/organ/internal/tongue/gondola/Initialize(mapload)
+/obj/item/organ/tongue/gondola/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their mouth is permanently affixed into a relaxed smile.", BODY_ZONE_PRECISE_MOUTH)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola)
 
-/obj/item/organ/internal/tongue/gondola/mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/gondola/mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
 	. = ..()
 	tongue_owner.add_mood_event("gondola_zen", /datum/mood_event/gondola_serenity)
 
-/obj/item/organ/internal/tongue/gondola/mob_remove(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/gondola/mob_remove(mob/living/carbon/tongue_owner, special, movement_flags)
 	tongue_owner.clear_mood_event("gondola_zen")
 	return ..()
 
 /// Loving arms: your hands become unable to hold much of anything but your hugs now infuse the subject with pax.
-/obj/item/organ/internal/liver/gondola
+/obj/item/organ/liver/gondola
 	name = "mutated gondola-liver"
 	desc = "Gondola DNA infused into what was once a normal liver."
 	icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -81,13 +81,13 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
 	greyscale_config = /datum/greyscale_config/mutant_organ
 	greyscale_colors = GONDOLA_COLORS
 
-/obj/item/organ/internal/liver/gondola/Initialize(mapload)
+/obj/item/organ/liver/gondola/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola)
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their left arm has small needles breaching the skin all over it.", BODY_ZONE_L_ARM)
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their right arm has small needles breaching the skin all over it.", BODY_ZONE_R_ARM)
 
-/obj/item/organ/internal/liver/gondola/mob_insert(mob/living/carbon/liver_owner, special, movement_flags)
+/obj/item/organ/liver/gondola/mob_insert(mob/living/carbon/liver_owner, special, movement_flags)
 	. = ..()
 	var/has_left = liver_owner.has_left_hand(check_disabled = FALSE)
 	var/has_right = liver_owner.has_right_hand(check_disabled = FALSE)
@@ -102,19 +102,19 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
 	RegisterSignal(liver_owner, COMSIG_LIVING_TRY_PULL, PROC_REF(on_owner_try_pull))
 	RegisterSignal(liver_owner, COMSIG_CARBON_HELPED, PROC_REF(on_hug))
 
-/obj/item/organ/internal/liver/gondola/mob_remove(mob/living/carbon/liver_owner, special, movement_flags)
+/obj/item/organ/liver/gondola/mob_remove(mob/living/carbon/liver_owner, special, movement_flags)
 	. = ..()
 	UnregisterSignal(liver_owner, list(COMSIG_HUMAN_EQUIPPING_ITEM, COMSIG_LIVING_TRY_PULL, COMSIG_CARBON_HELPED))
 
 /// signal sent when prompting if an item can be equipped
-/obj/item/organ/internal/liver/gondola/proc/on_owner_equipping_item(mob/living/carbon/human/owner, obj/item/equip_target, slot)
+/obj/item/organ/liver/gondola/proc/on_owner_equipping_item(mob/living/carbon/human/owner, obj/item/equip_target, slot)
 	SIGNAL_HANDLER
 	if(equip_target.w_class > WEIGHT_CLASS_TINY)
 		equip_target.balloon_alert(owner, "too weak to hold this!")
 		return COMPONENT_BLOCK_EQUIP
 
 /// signal sent when owner tries to pull an item
-/obj/item/organ/internal/liver/gondola/proc/on_owner_try_pull(mob/living/carbon/owner, atom/movable/target, force)
+/obj/item/organ/liver/gondola/proc/on_owner_try_pull(mob/living/carbon/owner, atom/movable/target, force)
 	SIGNAL_HANDLER
 	if(isliving(target))
 		var/mob/living/living_target = target
@@ -127,7 +127,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
 			item_target.balloon_alert(owner, "too weak to pull this!")
 			return COMSIG_LIVING_CANCEL_PULL
 
-/obj/item/organ/internal/liver/gondola/proc/on_hug(mob/living/carbon/human/source, mob/living/carbon/hugged)
+/obj/item/organ/liver/gondola/proc/on_hug(mob/living/carbon/human/source, mob/living/carbon/hugged)
 	SIGNAL_HANDLER
 
 	var/list/covered_body_zones = source.get_covered_body_zones()
diff --git a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
index 4f8d38aa999..f10dcefb0d5 100644
--- a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
@@ -12,7 +12,7 @@
 	bonus_traits = list(TRAIT_VENTCRAWLER_NUDE)
 
 ///way better night vision, super sensitive. lotta things work like this, huh?
-/obj/item/organ/internal/eyes/night_vision/rat
+/obj/item/organ/eyes/night_vision/rat
 	name = "mutated rat-eyes"
 	desc = "Rat DNA infused into what was once a normal pair of eyes."
 	flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE
@@ -27,13 +27,13 @@
 	medium_light_cutoff = list(30, 20, 5)
 	high_light_cutoff = list(45, 35, 10)
 
-/obj/item/organ/internal/eyes/night_vision/rat/Initialize(mapload)
+/obj/item/organ/eyes/night_vision/rat/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their eyes have deep, shifty black pupils, surrounded by a sickening yellow sclera.", BODY_ZONE_PRECISE_EYES)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat)
 
 ///increases hunger, disgust recovers quicker, expands what is defined as "food"
-/obj/item/organ/internal/stomach/rat
+/obj/item/organ/stomach/rat
 	name = "mutated rat-stomach"
 	desc = "Rat DNA infused into what was once a normal stomach."
 	disgust_metabolism = 3
@@ -44,13 +44,13 @@
 	greyscale_colors = RAT_COLORS
 	hunger_modifier = 10
 
-/obj/item/organ/internal/stomach/rat/Initialize(mapload)
+/obj/item/organ/stomach/rat/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat)
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their mouth is drooling excessively.", BODY_ZONE_PRECISE_MOUTH)
 
 /// makes you smaller, walk over tables, and take 1.5x damage
-/obj/item/organ/internal/heart/rat
+/obj/item/organ/heart/rat
 	name = "mutated rat-heart"
 	desc = "Rat DNA infused into what was once a normal heart."
 	icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -58,13 +58,13 @@
 	greyscale_config = /datum/greyscale_config/mutant_organ
 	greyscale_colors = RAT_COLORS
 
-/obj/item/organ/internal/heart/rat/Initialize(mapload)
+/obj/item/organ/heart/rat/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat)
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_They hunch%PRONOUN_es over unnaturally!")
 	AddElement(/datum/element/update_icon_blocker)
 
-/obj/item/organ/internal/heart/rat/on_mob_insert(mob/living/carbon/receiver)
+/obj/item/organ/heart/rat/on_mob_insert(mob/living/carbon/receiver)
 	. = ..()
 	if(!ishuman(receiver))
 		return
@@ -74,7 +74,7 @@
 	//but 1.5 damage
 	human_receiver.physiology?.damage_resistance -= 50
 
-/obj/item/organ/internal/heart/rat/on_mob_remove(mob/living/carbon/heartless, special)
+/obj/item/organ/heart/rat/on_mob_remove(mob/living/carbon/heartless, special)
 	. = ..()
 	if(!ishuman(heartless))
 		return
@@ -84,7 +84,7 @@
 	human_heartless.physiology?.damage_resistance += 50
 
 /// you occasionally squeak, and have some rat related verbal tics
-/obj/item/organ/internal/tongue/rat
+/obj/item/organ/tongue/rat
 	name = "mutated rat-tongue"
 	desc = "Rat DNA infused into what was once a normal tongue."
 	icon = 'icons/obj/medical/organs/infuser_organs.dmi'
@@ -97,12 +97,12 @@
 	disliked_foodtypes = NONE //but a rat can eat anything without issue
 	toxic_foodtypes = NONE
 
-/obj/item/organ/internal/tongue/rat/Initialize(mapload)
+/obj/item/organ/tongue/rat/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their teeth are oddly shaped and yellowing.", BODY_ZONE_PRECISE_MOUTH)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/rat)
 
-/obj/item/organ/internal/tongue/rat/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/rat/modify_speech(datum/source, list/speech_args)
 	. = ..()
 	var/message = LOWER_TEXT(speech_args[SPEECH_MESSAGE])
 	if(message == "hi" || message == "hi.")
@@ -110,23 +110,23 @@
 	if(message == "hi?")
 		speech_args[SPEECH_MESSAGE] = "Um... cheesed to meet you?"
 
-/obj/item/organ/internal/tongue/rat/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/rat/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
 	. = ..()
 	RegisterSignal(tongue_owner, COMSIG_CARBON_ITEM_GIVEN, PROC_REF(its_on_the_mouse))
 
-/obj/item/organ/internal/tongue/rat/on_mob_remove(mob/living/carbon/tongue_owner)
+/obj/item/organ/tongue/rat/on_mob_remove(mob/living/carbon/tongue_owner)
 	. = ..()
 	UnregisterSignal(tongue_owner, COMSIG_CARBON_ITEM_GIVEN)
 
-/obj/item/organ/internal/tongue/rat/proc/on_item_given(mob/living/carbon/offerer, mob/living/taker, obj/item/given)
+/obj/item/organ/tongue/rat/proc/on_item_given(mob/living/carbon/offerer, mob/living/taker, obj/item/given)
 	SIGNAL_HANDLER
 	INVOKE_ASYNC(src, PROC_REF(its_on_the_mouse), offerer, taker)
 
-/obj/item/organ/internal/tongue/rat/proc/its_on_the_mouse(mob/living/carbon/offerer, mob/living/taker)
+/obj/item/organ/tongue/rat/proc/its_on_the_mouse(mob/living/carbon/offerer, mob/living/taker)
 	offerer.say("For you, it's on the mouse.")
 	taker.add_mood_event("it_was_on_the_mouse", /datum/mood_event/it_was_on_the_mouse)
 
-/obj/item/organ/internal/tongue/rat/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/tongue/rat/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if(prob(5))
 		owner.emote("squeaks")
diff --git a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
index b31a64d9bb8..2b32ad85702 100644
--- a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
@@ -46,7 +46,7 @@
 /// Roach heart:
 /// Reduces damage taken from brute attacks from behind,
 /// but increases duration of knockdowns
-/obj/item/organ/internal/heart/roach
+/obj/item/organ/heart/roach
 	name = "mutated roach-heart"
 	desc = "Roach DNA infused into what was once a normal heart."
 	maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
@@ -61,18 +61,18 @@
 
 	COOLDOWN_DECLARE(harden_effect_cd)
 
-/obj/item/organ/internal/heart/roach/Initialize(mapload)
+/obj/item/organ/heart/roach/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_They %PRONOUN_have hardened, somewhat translucent skin.")
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach)
 	AddElement(/datum/element/update_icon_blocker)
 	roach_shell = new()
 
-/obj/item/organ/internal/heart/roach/Destroy()
+/obj/item/organ/heart/roach/Destroy()
 	QDEL_NULL(roach_shell)
 	return ..()
 
-/obj/item/organ/internal/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
 	. = ..()
 	if(!ishuman(organ_owner))
 		return
@@ -83,11 +83,11 @@
 	RegisterSignal(human_owner, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(do_block_effect))
 	human_owner.physiology.knockdown_mod *= 3
 
-/obj/item/organ/internal/heart/roach/on_bodypart_insert(obj/item/bodypart/limb)
+/obj/item/organ/heart/roach/on_bodypart_insert(obj/item/bodypart/limb)
 	. = ..()
 	limb.add_bodypart_overlay(roach_shell)
 
-/obj/item/organ/internal/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	if(!ishuman(organ_owner) || QDELETED(organ_owner))
 		return
@@ -97,7 +97,7 @@
 	UnregisterSignal(human_owner, list(COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, COMSIG_MOB_AFTER_APPLY_DAMAGE))
 	human_owner.physiology.knockdown_mod /= 3
 
-/obj/item/organ/internal/heart/roach/on_bodypart_remove(obj/item/bodypart/limb)
+/obj/item/organ/heart/roach/on_bodypart_remove(obj/item/bodypart/limb)
 	. = ..()
 
 	limb.remove_bodypart_overlay(roach_shell)
@@ -107,7 +107,7 @@
  *
  * Adds a 0.5 modifier to attacks from the back
  */
-/obj/item/organ/internal/heart/roach/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
+/obj/item/organ/heart/roach/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
 	SIGNAL_HANDLER
 
 	if(!is_blocking(source, damage_amount, damagetype, attack_direction))
@@ -120,7 +120,7 @@
  *
  * Does a special effect if we blocked damage with our back
  */
-/obj/item/organ/internal/heart/roach/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item)
+/obj/item/organ/heart/roach/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item)
 	SIGNAL_HANDLER
 
 	if(!is_blocking(source, damage_dealt, damagetype, attack_direction))
@@ -133,7 +133,7 @@
 	COOLDOWN_START(src, harden_effect_cd, 5 SECONDS) // Cooldown resets EVERY time we get hit
 
 /// Checks if the passed mob is in a valid state to be blocking damage with the roach shell
-/obj/item/organ/internal/heart/roach/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction)
+/obj/item/organ/heart/roach/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction)
 	if(damage_amount < 5 || damagetype != BRUTE || !attack_direction)
 		return
 	if(!ishuman(blocker) || blocker.stat >= UNCONSCIOUS)
@@ -160,7 +160,7 @@
 /// Roach stomach:
 /// Makes disgust a non-issue, very slightly worse at passing off reagents
 /// Also makes you more hungry
-/obj/item/organ/internal/stomach/roach
+/obj/item/organ/stomach/roach
 	name = "mutated roach-stomach"
 	desc = "Roach DNA infused into what was once a normal stomach."
 	maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
@@ -173,13 +173,13 @@
 	greyscale_config = /datum/greyscale_config/mutant_organ
 	greyscale_colors = ROACH_COLORS
 
-/obj/item/organ/internal/stomach/roach/Initialize(mapload)
+/obj/item/organ/stomach/roach/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach)
 
 /// Roach liver:
 /// Purges toxins at a higher threshold, but takes more damage from them if not purged
-/obj/item/organ/internal/liver/roach
+/obj/item/organ/liver/roach
 	name = "mutated roach-liver"
 	desc = "Roach DNA infused into what was once a normal liver."
 	maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
@@ -191,11 +191,11 @@
 	greyscale_config = /datum/greyscale_config/mutant_organ
 	greyscale_colors = ROACH_COLORS
 
-/obj/item/organ/internal/liver/roach/Initialize(mapload)
+/obj/item/organ/liver/roach/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach)
 
-/obj/item/organ/internal/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special)
 	. = ..()
 	if(!ishuman(organ_owner))
 		return
@@ -203,7 +203,7 @@
 	var/mob/living/carbon/human/human_owner = owner
 	human_owner.physiology.tox_mod *= 2
 
-/obj/item/organ/internal/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	if(!ishuman(organ_owner) || QDELETED(organ_owner))
 		return
@@ -213,7 +213,7 @@
 
 /// Roach appendix:
 /// No appendicitus! weee!
-/obj/item/organ/internal/appendix/roach
+/obj/item/organ/appendix/roach
 	name = "mutated roach-appendix"
 	desc = "Roach DNA infused into what was once a normal appendix. It could get <i>worse</i>?"
 	maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
@@ -223,11 +223,11 @@
 	greyscale_config = /datum/greyscale_config/mutant_organ
 	greyscale_colors = ROACH_COLORS
 
-/obj/item/organ/internal/appendix/roach/Initialize(mapload)
+/obj/item/organ/appendix/roach/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach)
 
-/obj/item/organ/internal/appendix/roach/become_inflamed()
+/obj/item/organ/appendix/roach/become_inflamed()
 	return
 
 #undef ROACH_ORGAN_COLOR
diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm
index 0c84e401d6c..3848717cc37 100644
--- a/code/game/machinery/dna_scanner.dm
+++ b/code/game/machinery/dna_scanner.dm
@@ -7,7 +7,7 @@
 	density = TRUE
 	obj_flags = BLOCKS_CONSTRUCTION // Becomes undense when the door is open
 	interaction_flags_mouse_drop = NEED_DEXTERITY
-	occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/internal/brain)
+	occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/brain)
 	circuit = /obj/item/circuitboard/machine/dnascanner
 
 	var/locked = FALSE
diff --git a/code/game/machinery/medical_kiosk.dm b/code/game/machinery/medical_kiosk.dm
index 0bc227fcdb9..54a5cf29c05 100644
--- a/code/game/machinery/medical_kiosk.dm
+++ b/code/game/machinery/medical_kiosk.dm
@@ -292,7 +292,7 @@
 			chemical_list += list(list("name" = reagent.name, "volume" = round(reagent.volume, 0.01)))
 			if(reagent.overdosed)
 				overdose_list += list(list("name" = reagent.name))
-	var/obj/item/organ/internal/stomach/belly = patient.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/belly = patient.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(belly?.reagents.reagent_list.len) //include the stomach contents if it exists
 		for(var/bile in belly.reagents.reagent_list)
 			var/datum/reagent/bit = bile
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index 166410cfccf..134fa7731d0 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -171,7 +171,7 @@
 				not_eaten += 1
 				continue
 
-		if (istype(thing, /obj/item/organ/internal/brain) || istype(thing, /obj/item/dullahan_relay))
+		if (istype(thing, /obj/item/organ/brain) || istype(thing, /obj/item/dullahan_relay))
 			living_detected = TRUE
 
 		if (istype(thing, /obj/item/mmi))
diff --git a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm
index e651c8a3e24..0bc59ded98d 100644
--- a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm
@@ -391,7 +391,7 @@
 
 	var/fraction = (seconds_per_tick SECONDS) / initial(lifetime)
 	reagents.copy_to(smoker, reagents.total_volume, fraction)
-	reagents.expose(smoker, INGEST, fraction)
+	reagents.expose(smoker, INHALE, fraction)
 	return TRUE
 
 /// Helper to quickly create a cloud of reagent smoke
diff --git a/code/game/objects/effects/spawners/random/medical.dm b/code/game/objects/effects/spawners/random/medical.dm
index b0f7a4aeaf5..02462afe113 100644
--- a/code/game/objects/effects/spawners/random/medical.dm
+++ b/code/game/objects/effects/spawners/random/medical.dm
@@ -25,20 +25,20 @@
 	icon_state = "eyes"
 	spawn_loot_count = 3
 	loot = list(
-		/obj/item/organ/internal/heart/gland/egg = 7,
-		/obj/item/organ/internal/heart/gland/plasma = 7,
-		/obj/item/organ/internal/heart/gland/chem = 5,
-		/obj/item/organ/internal/heart/gland/mindshock = 5,
-		/obj/item/organ/internal/heart/gland/transform = 5,
-		/obj/item/organ/internal/heart/gland/spiderman = 5,
-		/obj/item/organ/internal/heart/gland/slime = 4,
-		/obj/item/organ/internal/heart/gland/trauma = 4,
-		/obj/item/organ/internal/heart/gland/electric = 3,
-		/obj/item/organ/internal/monster_core/regenerative_core = 2,
-		/obj/item/organ/internal/monster_core/rush_gland = 2,
-		/obj/item/organ/internal/monster_core/brimdust_sac = 2,
-		/obj/item/organ/internal/heart/gland/ventcrawling = 1,
-		/obj/item/organ/internal/body_egg/alien_embryo = 1,
+		/obj/item/organ/heart/gland/egg = 7,
+		/obj/item/organ/heart/gland/plasma = 7,
+		/obj/item/organ/heart/gland/chem = 5,
+		/obj/item/organ/heart/gland/mindshock = 5,
+		/obj/item/organ/heart/gland/transform = 5,
+		/obj/item/organ/heart/gland/spiderman = 5,
+		/obj/item/organ/heart/gland/slime = 4,
+		/obj/item/organ/heart/gland/trauma = 4,
+		/obj/item/organ/heart/gland/electric = 3,
+		/obj/item/organ/monster_core/regenerative_core = 2,
+		/obj/item/organ/monster_core/rush_gland = 2,
+		/obj/item/organ/monster_core/brimdust_sac = 2,
+		/obj/item/organ/heart/gland/ventcrawling = 1,
+		/obj/item/organ/body_egg/alien_embryo = 1,
 	)
 
 /obj/effect/spawner/random/medical/memeorgans
@@ -46,23 +46,23 @@
 	icon_state = "eyes"
 	spawn_loot_count = 5
 	loot = list(
-		/obj/item/organ/internal/ears/penguin,
-		/obj/item/organ/internal/ears/cat,
-		/obj/item/organ/internal/eyes/moth,
-		/obj/item/organ/internal/eyes/snail,
-		/obj/item/organ/internal/tongue/bone,
-		/obj/item/organ/internal/tongue/fly,
-		/obj/item/organ/internal/tongue/snail,
-		/obj/item/organ/internal/tongue/lizard,
-		/obj/item/organ/internal/tongue/alien,
-		/obj/item/organ/internal/tongue/ethereal,
-		/obj/item/organ/internal/tongue/robot,
-		/obj/item/organ/internal/tongue/zombie,
-		/obj/item/organ/internal/appendix,
-		/obj/item/organ/internal/liver/fly,
-		/obj/item/organ/internal/lungs/plasmaman,
-		/obj/item/organ/external/tail/cat,
-		/obj/item/organ/external/tail/lizard,
+		/obj/item/organ/ears/penguin,
+		/obj/item/organ/ears/cat,
+		/obj/item/organ/eyes/moth,
+		/obj/item/organ/eyes/snail,
+		/obj/item/organ/tongue/bone,
+		/obj/item/organ/tongue/fly,
+		/obj/item/organ/tongue/snail,
+		/obj/item/organ/tongue/lizard,
+		/obj/item/organ/tongue/alien,
+		/obj/item/organ/tongue/ethereal,
+		/obj/item/organ/tongue/robot,
+		/obj/item/organ/tongue/zombie,
+		/obj/item/organ/appendix,
+		/obj/item/organ/liver/fly,
+		/obj/item/organ/lungs/plasmaman,
+		/obj/item/organ/tail/cat,
+		/obj/item/organ/tail/lizard,
 	)
 
 /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner
diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm
index f82de9c49a7..d84ebfa5c13 100644
--- a/code/game/objects/items/airlock_painter.dm
+++ b/code/game/objects/items/airlock_painter.dm
@@ -73,7 +73,7 @@
 		return TRUE
 
 /obj/item/airlock_painter/suicide_act(mob/living/user)
-	var/obj/item/organ/internal/lungs/L = user.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/L = user.get_organ_slot(ORGAN_SLOT_LUNGS)
 
 	if(can_use(user) && L)
 		user.visible_message(span_suicide("[user] is inhaling toner from [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm
index d8b48e0789b..d5769ceb8d7 100644
--- a/code/game/objects/items/body_egg.dm
+++ b/code/game/objects/items/body_egg.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/body_egg
+/obj/item/organ/body_egg
 	name = "body egg"
 	desc = "All slimy and yuck."
 	icon_state = "innards"
@@ -6,47 +6,47 @@
 	zone = BODY_ZONE_CHEST
 	slot = ORGAN_SLOT_PARASITE_EGG
 
-/obj/item/organ/internal/body_egg/on_find(mob/living/finder)
+/obj/item/organ/body_egg/on_find(mob/living/finder)
 	..()
 	to_chat(finder, span_warning("You found an unknown alien organism in [owner]'s [zone]!"))
 
-/obj/item/organ/internal/body_egg/Initialize(mapload)
+/obj/item/organ/body_egg/Initialize(mapload)
 	. = ..()
 	if(iscarbon(loc))
 		Insert(loc)
 
-/obj/item/organ/internal/body_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/body_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
 	. = ..()
 
 	egg_owner.add_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT)
 	egg_owner.med_hud_set_status()
 	INVOKE_ASYNC(src, PROC_REF(AddInfectionImages), egg_owner)
 
-/obj/item/organ/internal/body_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
+/obj/item/organ/body_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
 	. = ..()
 	egg_owner.remove_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT)
 	egg_owner.med_hud_set_status()
 	INVOKE_ASYNC(src, PROC_REF(RemoveInfectionImages), egg_owner)
 
-/obj/item/organ/internal/body_egg/on_death(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/on_death(seconds_per_tick, times_fired)
 	. = ..()
 	if(!owner)
 		return
 	egg_process(seconds_per_tick, times_fired)
 
-/obj/item/organ/internal/body_egg/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	egg_process(seconds_per_tick, times_fired)
 
-/obj/item/organ/internal/body_egg/proc/egg_process(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/proc/egg_process(seconds_per_tick, times_fired)
 	return
 
-/obj/item/organ/internal/body_egg/proc/RefreshInfectionImage()
+/obj/item/organ/body_egg/proc/RefreshInfectionImage()
 	RemoveInfectionImages()
 	AddInfectionImages()
 
-/obj/item/organ/internal/body_egg/proc/AddInfectionImages()
+/obj/item/organ/body_egg/proc/AddInfectionImages()
 	return
 
-/obj/item/organ/internal/body_egg/proc/RemoveInfectionImages()
+/obj/item/organ/body_egg/proc/RemoveInfectionImages()
 	return
diff --git a/code/game/objects/items/choice_beacon.dm b/code/game/objects/items/choice_beacon.dm
index aa51d71c5ed..e99ed4b3320 100644
--- a/code/game/objects/items/choice_beacon.dm
+++ b/code/game/objects/items/choice_beacon.dm
@@ -147,12 +147,12 @@
 		augment_list = list()
 		// cyberimplants range from a nice bonus to fucking broken bullshit so no subtypesof
 		var/list/selectable_types = list(
-			/obj/item/organ/internal/cyberimp/brain/anti_drop,
-			/obj/item/organ/internal/cyberimp/arm/toolset,
-			/obj/item/organ/internal/cyberimp/arm/surgery,
-			/obj/item/organ/internal/cyberimp/chest/thrusters,
-			/obj/item/organ/internal/lungs/cybernetic/tier3,
-			/obj/item/organ/internal/liver/cybernetic/tier3,
+			/obj/item/organ/cyberimp/brain/anti_drop,
+			/obj/item/organ/cyberimp/arm/toolset,
+			/obj/item/organ/cyberimp/arm/surgery,
+			/obj/item/organ/cyberimp/chest/thrusters,
+			/obj/item/organ/lungs/cybernetic/tier3,
+			/obj/item/organ/liver/cybernetic/tier3,
 		)
 		for(var/obj/item/organ/organ as anything in selectable_types)
 			augment_list[initial(organ.name)] = organ
diff --git a/code/game/objects/items/cigarettes.dm b/code/game/objects/items/cigarettes.dm
index b4ee67ea9d7..015babebce0 100644
--- a/code/game/objects/items/cigarettes.dm
+++ b/code/game/objects/items/cigarettes.dm
@@ -452,12 +452,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
 			return
 
 	how_long_have_we_been_smokin += seconds_per_tick * (1 SECONDS)
-	reagents.expose(smoker, INGEST, min(to_smoke / reagents.total_volume, 1))
-	var/obj/item/organ/internal/lungs/lungs = smoker.get_organ_slot(ORGAN_SLOT_LUNGS)
+	reagents.expose(smoker, INHALE, min(to_smoke / reagents.total_volume, 1))
+	var/obj/item/organ/lungs/lungs = smoker.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(lungs && IS_ORGANIC_ORGAN(lungs))
 		var/smoker_resistance = HAS_TRAIT(smoker, TRAIT_SMOKER) ? 0.5 : 1
 		smoker.adjustOrganLoss(ORGAN_SLOT_LUNGS, lung_harm * smoker_resistance)
-	if(!reagents.trans_to(smoker, to_smoke, methods = INGEST, ignore_stomach = TRUE))
+	if(!reagents.trans_to(smoker, to_smoke, methods = INHALE, ignore_stomach = TRUE))
 		reagents.remove_all(to_smoke)
 
 /obj/item/cigarette/process(seconds_per_tick)
@@ -1011,7 +1011,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
 		e.start(src)
 		qdel(src)
 
-	if(!reagents.trans_to(vaper, REAGENTS_METABOLISM, methods = INGEST, ignore_stomach = TRUE))
+	if(!reagents.trans_to(vaper, REAGENTS_METABOLISM, methods = INHALE, ignore_stomach = TRUE))
 		reagents.remove_all(REAGENTS_METABOLISM)
 
 /obj/item/vape/process(seconds_per_tick)
diff --git a/code/game/objects/items/climbingrope.dm b/code/game/objects/items/climbingrope.dm
index 57eaa06935c..936858bbae7 100644
--- a/code/game/objects/items/climbingrope.dm
+++ b/code/game/objects/items/climbingrope.dm
@@ -59,7 +59,7 @@
 	// Misc bonuses to the climb speed.
 	var/misc_multiplier = 1
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		misc_multiplier *= potential_spine.athletics_boost_multiplier
 
@@ -68,6 +68,7 @@
 	if(do_after(user, final_climb_time, target))
 		user.forceMove(target)
 		uses--
+		user.mind?.adjust_experience(/datum/skill/athletics, 50) //get some experience for our trouble, especially since this costs us a climbing rope use
 
 	if(uses <= 0)
 		user.visible_message(span_warning("[src] snaps and tears apart!"))
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 7184db90932..d6b13b8bfa0 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -589,7 +589,7 @@
 	if(do_after(user, 3 SECONDS, H, extra_checks = CALLBACK(src, PROC_REF(is_wielded)))) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process
 		user.visible_message(span_notice("[user] places [src] on [H]'s chest."), span_warning("You place [src] on [H]'s chest."))
 		playsound(src, 'sound/machines/defib/defib_charge.ogg', 75, FALSE)
-		var/obj/item/organ/internal/heart = H.get_organ_by_type(/obj/item/organ/internal/heart)
+		var/obj/item/organ/heart = H.get_organ_by_type(/obj/item/organ/heart)
 		if(do_after(user, 2 SECONDS, H, extra_checks = CALLBACK(src, PROC_REF(is_wielded)))) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total
 			if((!combat && !req_defib) || (req_defib && !defib.combat))
 				for(var/obj/item/clothing/C in H.get_equipped_items())
@@ -679,7 +679,7 @@
 							iterated_part.emp_act(EMP_LIGHT)
 						for (var/obj/item/organ/iterated_organ as anything in H.organs)
 							iterated_organ.emp_act(EMP_LIGHT)
-						var/obj/item/organ/internal/brain/brain_organ = H.get_organ_slot(ORGAN_SLOT_BRAIN)
+						var/obj/item/organ/brain/brain_organ = H.get_organ_slot(ORGAN_SLOT_BRAIN)
 						if (istype(brain_organ))
 							var/datum/brain_trauma/trauma = brain_organ.gain_trauma_type(SYNTH_DEFIBBED_TRAUMA_SEVERITY, TRAUMA_LIMIT_BASIC)
 							if (!QDELETED(trauma))
@@ -688,7 +688,7 @@
 
 				do_success()
 				return
-			else if (!H.get_organ_by_type(/obj/item/organ/internal/heart))
+			else if (!H.get_organ_by_type(/obj/item/organ/heart))
 				user.visible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Patient's heart is missing. Operation aborted."))
 				playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE)
 			else if(H.undergoing_cardiac_arrest())
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 657d054f11c..94b7e14fe80 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -112,8 +112,8 @@
 		to_chat(user, span_warning("You're going to need to remove that [(M.head && M.head.flags_cover & HEADCOVERSEYES) ? "helmet" : (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSEYES) ? "mask": "glasses"] first!"))
 		return
 
-	var/obj/item/organ/internal/eyes/E = M.get_organ_slot(ORGAN_SLOT_EYES)
-	var/obj/item/organ/internal/brain = M.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/eyes/E = M.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/brain = M.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!E)
 		to_chat(user, span_warning("[M] doesn't have any eyes!"))
 		return
@@ -889,7 +889,7 @@
 	if(!fuel)
 		user.visible_message(span_suicide("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but it's empty!"))
 		return SHAME
-	var/obj/item/organ/internal/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
 	if(!eyes)
 		user.visible_message(span_suicide("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but [user.p_they()] don't have any!"))
 		return SHAME
diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm
index 3a4cdf2ffa0..e880f9e46a1 100644
--- a/code/game/objects/items/devices/scanners/health_analyzer.dm
+++ b/code/game/objects/items/devices/scanners/health_analyzer.dm
@@ -336,7 +336,7 @@
 
 		// Cybernetics
 		var/list/cyberimps
-		for(var/obj/item/organ/internal/cyberimp/cyberimp in humantarget.organs)
+		for(var/obj/item/organ/cyberimp/cyberimp in humantarget.organs)
 			if(IS_ROBOTIC_ORGAN(cyberimp) && !(cyberimp.organ_flags & ORGAN_HIDDEN))
 				LAZYADD(cyberimps, cyberimp.examine_title(user))
 		if(LAZYLEN(cyberimps))
@@ -486,7 +486,7 @@
 			render_block.Cut()
 
 		// Stomach reagents
-		var/obj/item/organ/internal/stomach/belly = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+		var/obj/item/organ/stomach/belly = target.get_organ_slot(ORGAN_SLOT_STOMACH)
 		if(belly)
 			if(belly.reagents.reagent_list.len)
 				for(var/bile in belly.reagents.reagent_list)
diff --git a/code/game/objects/items/drug_items.dm b/code/game/objects/items/drug_items.dm
index d25c9571455..7f31b155a26 100644
--- a/code/game/objects/items/drug_items.dm
+++ b/code/game/objects/items/drug_items.dm
@@ -44,6 +44,8 @@
 	reagent_flags = TRANSPARENT
 	spillable = FALSE
 	list_reagents = list(/datum/reagent/drug/blastoff = 10)
+	reagent_consumption_method = INHALE
+	consumption_sound = 'sound/effects/spray2.ogg'
 
 /obj/item/reagent_containers/cup/blastoff_ampoule/update_icon_state()
 	. = ..()
diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm
index 1eae1693735..1f428236e82 100644
--- a/code/game/objects/items/dualsaber.dm
+++ b/code/game/objects/items/dualsaber.dm
@@ -86,7 +86,7 @@
 		user.visible_message(span_suicide("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!"))
 
 		var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)//stole from chainsaw code
-		var/obj/item/organ/internal/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+		var/obj/item/organ/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN)
 		B.organ_flags &= ~ORGAN_VITAL //this cant possibly be a good idea
 		var/randdir
 		for(var/i in 1 to 24)//like a headless chicken!
diff --git a/code/game/objects/items/dyespray.dm b/code/game/objects/items/dyespray.dm
index 1893774b21b..8cc721b5c12 100644
--- a/code/game/objects/items/dyespray.dm
+++ b/code/game/objects/items/dyespray.dm
@@ -29,11 +29,34 @@
 		return //NOVA EDIT ADDITION
 
 	var/mob/living/carbon/human/human_target = target
-	var/beard_or_hair = tgui_alert(user, "What do you want to dye?", "Character Preference", list("Hair", "Facial Hair"))
-	if(!beard_or_hair || !user.can_perform_action(src, NEED_DEXTERITY))
+	var/list/dyables = list("Hair", "Facial Hair")
+	for(var/obj/item/organ/organ as anything in human_target.organs)
+		if(!istype(organ.bodypart_overlay, /datum/bodypart_overlay/mutant))
+			continue
+		var/datum/bodypart_overlay/mutant/overlay = organ.bodypart_overlay
+		if(overlay.dyable && overlay.sprite_datum.color_src)
+			dyables += list("External Body Parts")
+			break
+	var/obj/item/bodypart/head/head =  human_target.get_bodypart(BODY_ZONE_HEAD)
+	if(!head || !(head.head_flags & HEAD_HAIR) || HAS_TRAIT(human_target, TRAIT_BALD))
+		dyables -= "Hair"
+	if(!head || !(head.head_flags & HEAD_FACIAL_HAIR) || HAS_TRAIT(human_target, TRAIT_SHAVED))
+		dyables -= "Facial Hair"
+	if(!length(dyables))
+		if(target != user)
+			to_chat(user, span_warning("[human_target] doesn't have anything that can be dyed."))
+		else
+			to_chat(user, span_warning("You have nothing to dye."))
+		return
+	var/what_to_dye = tgui_alert(user, "What do you want to dye?", "Character Preference", dyables)
+	if(!what_to_dye || !user.can_perform_action(src, NEED_DEXTERITY))
+		return
+
+	if(what_to_dye == "External Bodyparts/Organs")
+		dye_organ(target, user)
 		return
 
-	var/list/choices = beard_or_hair == "Hair" ? SSaccessories.hair_gradients_list : SSaccessories.facial_hair_gradients_list
+	var/list/choices = what_to_dye == "Hair" ? SSaccessories.hair_gradients_list : SSaccessories.facial_hair_gradients_list
 	var/new_grad_style = tgui_input_list(user, "Choose a color pattern", "Character Preference", choices)
 	if(isnull(new_grad_style))
 		return
@@ -47,7 +70,7 @@
 	to_chat(user, span_notice("You start applying the hair dye..."))
 	if(!do_after(user, 3 SECONDS, target))
 		return
-	if(beard_or_hair == "Hair")
+	if(what_to_dye == "Hair")
 		human_target.set_hair_gradient_style(new_grad_style, update = FALSE)
 		human_target.set_hair_gradient_color(new_grad_color, update = TRUE)
 	else
@@ -55,3 +78,47 @@
 		human_target.set_facial_hair_gradient_color(new_grad_color, update = TRUE)
 	playsound(src, 'sound/effects/spray.ogg', 10, vary = TRUE)
 */
+
+/obj/item/dyespray/proc/dye_organ(mob/living/carbon/human/target, mob/user)
+	var/list/dyables = list()
+	var/list/choices = list()
+	for(var/obj/item/organ/organ as anything in target.organs)
+		if(!istype(organ.bodypart_overlay, /datum/bodypart_overlay/mutant))
+			continue
+		var/datum/bodypart_overlay/mutant/overlay = organ.bodypart_overlay
+		if(overlay.dyable && overlay.sprite_datum.color_src)
+			var/choice_name = full_capitalize(organ.name)
+			dyables[choice_name] = organ
+			choices += choice_name
+	if(!length(choices))
+		return
+	var/what_to_dye = tgui_alert(user, "What do you want to dye?", "Character Preference", choices)
+	if(!what_to_dye || !user.can_perform_action(src, NEED_DEXTERITY))
+		return
+
+	var/obj/item/organ/selected = dyables[what_to_dye]
+	if(QDELETED(selected) || !(selected in target.organs))
+		return
+
+	var/datum/bodypart_overlay/mutant/overlay = selected.bodypart_overlay
+	if(overlay.dye_color)
+		var/remove_dye = tgui_alert(user, "Do you want to un-dye [selected]?", "Character Preference", list("Yes", "No"))
+		if(isnull(remove_dye) || !user.can_perform_action(src, NEED_DEXTERITY))
+			return
+		if(QDELETED(selected) || !(selected in target.organs))
+			return
+		if(remove_dye == "Yes")
+			overlay.set_dye_color(null, selected)
+			return
+
+	var/default_color = overlay.dye_color || overlay.draw_color
+	var/new_color = input(user, "Choose a color for [selected]:", "Character Preference", default_color) as color|null
+	if(isnull(new_color) || new_color == default_color || !user.can_perform_action(src, NEED_DEXTERITY))
+		return
+	if(QDELETED(selected) || !(selected in target.organs))
+		return
+	if(!do_after(user, 4.5 SECONDS, target))
+		return
+	if(QDELETED(selected) || !(selected in target.organs))
+		return
+	overlay.set_dye_color(new_color, selected)
diff --git a/code/game/objects/items/food/donuts.dm b/code/game/objects/items/food/donuts.dm
index 922ed2eaa66..993ada424ad 100644
--- a/code/game/objects/items/food/donuts.dm
+++ b/code/game/objects/items/food/donuts.dm
@@ -45,7 +45,7 @@
 
 ///Override for checkliked in edible component, because all cops LOVE donuts
 /obj/item/food/donut/proc/check_liked(mob/living/carbon/human/consumer)
-	var/obj/item/organ/internal/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(!HAS_TRAIT(consumer, TRAIT_AGEUSIA) && liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
 		return FOOD_LIKED
 
diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm
index b3ad6ce0b40..4c289e60efb 100644
--- a/code/game/objects/items/food/misc.dm
+++ b/code/game/objects/items/food/misc.dm
@@ -611,7 +611,7 @@
 	AddComponent(/datum/component/edible, check_liked = CALLBACK(src, PROC_REF(check_liked)))
 
 /obj/item/food/pickle/proc/check_liked(mob/living/carbon/human/consumer)
-	var/obj/item/organ/internal/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(!HAS_TRAIT(consumer, TRAIT_AGEUSIA) && liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM))
 		return FOOD_LIKED
 
diff --git a/code/game/objects/items/hand_items.dm b/code/game/objects/items/hand_items.dm
index 8dc706d8723..6ac9bdf97c1 100644
--- a/code/game/objects/items/hand_items.dm
+++ b/code/game/objects/items/hand_items.dm
@@ -635,7 +635,7 @@
 	if(!iscarbon(target))
 		return
 	var/mob/living/carbon/heartbreakee = target
-	var/obj/item/organ/internal/heart/dont_go_breakin_my_heart = heartbreakee.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/dont_go_breakin_my_heart = heartbreakee.get_organ_slot(ORGAN_SLOT_HEART)
 	dont_go_breakin_my_heart.apply_organ_damage(999)
 
 // Based on energy gun characteristics
diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm
index 9c9ebc3c9bd..b87bf0f593e 100644
--- a/code/game/objects/items/melee/baton.dm
+++ b/code/game/objects/items/melee/baton.dm
@@ -352,7 +352,7 @@
 
 /obj/item/melee/baton/telescopic/suicide_act(mob/living/user)
 	var/mob/living/carbon/human/human_user = user
-	var/obj/item/organ/internal/brain/our_brain = human_user.get_organ_by_type(/obj/item/organ/internal/brain)
+	var/obj/item/organ/brain/our_brain = human_user.get_organ_by_type(/obj/item/organ/brain)
 
 	user.visible_message(span_suicide("[user] stuffs [src] up [user.p_their()] nose and presses the 'extend' button! It looks like [user.p_theyre()] trying to clear [user.p_their()] mind."))
 	if(active)
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index 1917f98ba2c..adde7bba3c1 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -95,7 +95,7 @@
  */
 /obj/item/melee/sabre/proc/attempt_bane(element_owner, mob/living/carbon/criminal)
 	SIGNAL_HANDLER
-	var/obj/item/organ/internal/liver/liver = criminal.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = criminal.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(isnull(liver) || !HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM))
 		return COMPONENT_CANCEL_BANING
 
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index fdfd2b5568e..443fd3bb64f 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -239,7 +239,7 @@
 
 	else if(istype(W, /obj/item/bodypart/head/robot))
 		var/obj/item/bodypart/head/robot/HD = W
-		if(locate(/obj/item/organ/internal) in HD)
+		if(locate(/obj/item/organ) in HD)
 			to_chat(user, span_warning("There are organs inside [HD]!"))
 			return
 		if(head)
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 586e1461527..2f399bd35b9 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -435,7 +435,7 @@
 		/obj/item/lighter,
 		/obj/item/mining_scanner,
 		/obj/item/multitool,
-		/obj/item/organ/internal/monster_core,
+		/obj/item/organ/monster_core,
 		/obj/item/pickaxe,
 		/obj/item/radio,
 		/obj/item/reagent_containers/cup/glass,
@@ -479,7 +479,7 @@
 	for(var/i in 1 to 2)
 		new /obj/item/reagent_containers/hypospray/medipen/survival(src)
 	for(var/i in 1 to 2)
-		var/obj/item/organ/internal/monster_core/core = new /obj/item/organ/internal/monster_core/regenerative_core/legion(src)
+		var/obj/item/organ/monster_core/core = new /obj/item/organ/monster_core/regenerative_core/legion(src)
 		core.preserve()
 
 /obj/item/storage/belt/mining/primitive
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index 120b91a40ff..e6dad759c83 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -385,7 +385,7 @@
 	. = ..()
 	if(.)
 		return
-	if(user.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel))
+	if(user.get_organ_by_type(/obj/item/organ/alien/plasmavessel))
 		switch(status)
 			if(BURSTING)
 				to_chat(user, span_notice("The child is hatching out."))
@@ -457,7 +457,7 @@
 			return
 
 		var/mob/living/carbon/C = AM
-		if(C.stat == CONSCIOUS && C.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo))
+		if(C.stat == CONSCIOUS && C.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo))
 			return
 
 		Burst(kill=FALSE)
diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm
index 131e08808fb..3a6d6d3ee4a 100644
--- a/code/game/objects/structures/beds_chairs/alien_nest.dm
+++ b/code/game/objects/structures/beds_chairs/alien_nest.dm
@@ -26,7 +26,7 @@
 	if(!length(buckled_mobs))
 		return
 
-	if(hero.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel))
+	if(hero.get_organ_by_type(/obj/item/organ/alien/plasmavessel))
 		unbuckle_mob(captive)
 		add_fingerprint(hero)
 		return
@@ -59,9 +59,9 @@
 	if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.incapacitated || M.buckled )
 		return
 
-	if(M.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel))
+	if(M.get_organ_by_type(/obj/item/organ/alien/plasmavessel))
 		return
-	if(!user.get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel))
+	if(!user.get_organ_by_type(/obj/item/organ/alien/plasmavessel))
 		return
 
 	if(has_buckled_mobs())
diff --git a/code/game/objects/structures/gym/punching_bag.dm b/code/game/objects/structures/gym/punching_bag.dm
index bba9e4f715c..bea51bc1d8c 100644
--- a/code/game/objects/structures/gym/punching_bag.dm
+++ b/code/game/objects/structures/gym/punching_bag.dm
@@ -58,7 +58,7 @@
 	if (is_heavy_gravity)
 		stamina_exhaustion *= 1.5
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		stamina_exhaustion *= potential_spine.athletics_boost_multiplier
 
diff --git a/code/game/objects/structures/gym/weight_machine.dm b/code/game/objects/structures/gym/weight_machine.dm
index 352ef65ff00..b36e35245c2 100644
--- a/code/game/objects/structures/gym/weight_machine.dm
+++ b/code/game/objects/structures/gym/weight_machine.dm
@@ -172,7 +172,7 @@
 	// total stamina drain of 1 workout calculated based on the workout length
 	var/stamina_exhaustion = FLOOR(user.maxHealth / workout_reps / WORKOUT_LENGTH, 0.1)
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		stamina_exhaustion *= potential_spine.athletics_boost_multiplier
 
diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm
index fb082b72456..f9d490a29b2 100644
--- a/code/game/objects/structures/icemoon/cave_entrance.dm
+++ b/code/game/objects/structures/icemoon/cave_entrance.dm
@@ -150,7 +150,7 @@ GLOBAL_LIST_INIT(ore_probability, list(
 		if(3)
 			new /obj/item/reagent_containers/cup/bottle/potion/flight(loc)
 		if(4)
-			new /obj/item/organ/internal/heart/cursed/wizard(loc)
+			new /obj/item/organ/heart/cursed/wizard(loc)
 		if(5)
 			new /obj/item/jacobs_ladder(loc)
 		if(6)
diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm
index 17f81eb2428..80b3a10e8e9 100644
--- a/code/game/objects/structures/ladders.dm
+++ b/code/game/objects/structures/ladders.dm
@@ -112,21 +112,21 @@
 	// Misc bonuses to the climb speed.
 	var/misc_multiplier = 1
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		misc_multiplier *= potential_spine.athletics_boost_multiplier
 
 	var/final_travel_time = (travel_time - fitness_level) * misc_multiplier
 
 	if(do_after(user, final_travel_time, target = src, interaction_key = DOAFTER_SOURCE_CLIMBING_LADDER))
-		travel(user, going_up)
+		travel(user, going_up, grant_exp = TRUE)
 
 /// The message shown when the player starts climbing the ladder
 /obj/structure/ladder/proc/show_initial_fluff_message(mob/user, going_up)
 	var/up_down = going_up ? "up" : "down"
 	user.balloon_alert_to_viewers("climbing [up_down]...")
 
-/obj/structure/ladder/proc/travel(mob/user, going_up = TRUE, is_ghost = FALSE)
+/obj/structure/ladder/proc/travel(mob/user, going_up = TRUE, is_ghost = FALSE, grant_exp = FALSE)
 	var/obj/structure/ladder/ladder = going_up ? up : down
 	if(!ladder)
 		balloon_alert(user, "there's nothing that way!")
@@ -138,6 +138,9 @@
 	var/turf/target = get_turf(ladder)
 	user.zMove(target = target, z_move_flags = ZMOVE_CHECK_PULLEDBY|ZMOVE_ALLOW_BUCKLED|ZMOVE_INCLUDE_PULLED)
 
+	if(grant_exp)
+		user.mind?.adjust_experience(/datum/skill/athletics, 10) //get a little experience for our trouble
+
 	if(!is_ghost)
 		show_final_fluff_message(user, ladder, going_up)
 
diff --git a/code/game/objects/structures/lavaland/gulag_vent.dm b/code/game/objects/structures/lavaland/gulag_vent.dm
index 8cb530e31b1..d6e30cf1fe3 100644
--- a/code/game/objects/structures/lavaland/gulag_vent.dm
+++ b/code/game/objects/structures/lavaland/gulag_vent.dm
@@ -33,7 +33,7 @@
 
 	var/boulder_lift_speed = 8 SECONDS
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = living_user.get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = living_user.get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		boulder_lift_speed *= potential_spine.athletics_boost_multiplier
 
diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm
index d27a2e8e1cd..895602bb017 100644
--- a/code/game/objects/structures/petrified_statue.dm
+++ b/code/game/objects/structures/petrified_statue.dm
@@ -77,7 +77,7 @@
 			petrified_mob.investigate_log("has been dusted by statue deconstruction.", INVESTIGATE_DEATHS)
 			if(iscarbon(petrified_mob) && brain)
 				var/mob/living/carbon/petrified_carbon = petrified_mob
-				var/obj/item/organ/internal/brain/carbon_brain = petrified_carbon.get_organ_slot(ORGAN_SLOT_BRAIN)
+				var/obj/item/organ/brain/carbon_brain = petrified_carbon.get_organ_slot(ORGAN_SLOT_BRAIN)
 				carbon_brain.Remove(petrified_carbon)
 				carbon_brain.forceMove(get_turf(src))
 				carbon_brain.name = "petrified [carbon_brain.name]"
diff --git a/code/game/objects/structures/signs/sign_eyechart.dm b/code/game/objects/structures/signs/sign_eyechart.dm
index eaaa3bb2428..de0db7d0074 100644
--- a/code/game/objects/structures/signs/sign_eyechart.dm
+++ b/code/game/objects/structures/signs/sign_eyechart.dm
@@ -35,7 +35,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/eyechart, 32)
 	else if(isdog(user) || iscat(user))
 		colorblind = TRUE // i know these pets are not colorblind in the conventional sense, but it's an easter egg, ok?
 
-	var/obj/item/organ/internal/eyes/eye = user.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eye = user.get_organ_slot(ORGAN_SLOT_EYES)
 	// eye null checks here are for mobs without eyes.
 	// humans missing eyes will be caught by the is_blind check above.
 	var/eye_goodness = isnull(eye) ? 0 : eye.damage
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 6a03adbdfb1..08a730110a9 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -288,7 +288,7 @@
 		tableplace_delay = 2.75 SECONDS
 		skills_space = " quickly"
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = user.get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		tableplace_delay *= potential_spine.athletics_boost_multiplier
 
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 92c77e0b12a..10e9bd1299d 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -669,7 +669,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
 	clear_reagents_to_vomit_pool(vomiter, throw_up, purge_ratio)
 
 /proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V, purge_ratio = 0.1)
-	var/obj/item/organ/internal/stomach/belly = M.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/belly = M.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(!belly?.reagents.total_volume)
 		return
 	var/chemicals_lost = belly.reagents.total_volume * purge_ratio
diff --git a/code/modules/admin/verbs/adminfun.dm b/code/modules/admin/verbs/adminfun.dm
index c58d63581bd..93b398397c2 100644
--- a/code/modules/admin/verbs/adminfun.dm
+++ b/code/modules/admin/verbs/adminfun.dm
@@ -110,7 +110,7 @@ ADMIN_VERB(mass_zombie_infection, R_ADMIN, "Mass Zombie Infection", "Infects all
 
 	for(var/i in GLOB.human_list)
 		var/mob/living/carbon/human/H = i
-		new /obj/item/organ/internal/zombie_infection/nodamage(H)
+		new /obj/item/organ/zombie_infection/nodamage(H)
 
 	message_admins("[key_name_admin(user)] added a latent zombie infection to all humans.")
 	log_admin("[key_name(user)] added a latent zombie infection to all humans.")
@@ -121,7 +121,7 @@ ADMIN_VERB(mass_zombie_cure, R_ADMIN, "Mass Zombie Cure", "Removes the zombie in
 	if(confirm != "Yes")
 		return
 
-	for(var/obj/item/organ/internal/zombie_infection/nodamage/I in GLOB.zombie_infection_list)
+	for(var/obj/item/organ/zombie_infection/nodamage/I in GLOB.zombie_infection_list)
 		qdel(I)
 
 	message_admins("[key_name_admin(user)] cured all zombies.")
diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm
index c9779652fd1..c50baee411f 100644
--- a/code/modules/admin/verbs/secrets.dm
+++ b/code/modules/admin/verbs/secrets.dm
@@ -521,8 +521,8 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
 
 				if(H.dna.species.id == SPECIES_HUMAN)
 					if(H.dna.features["tail_human"] == "None" || H.dna.features["ears"] == "None")
-						var/obj/item/organ/internal/ears/cat/ears = new
-						var/obj/item/organ/external/tail/cat/tail = new
+						var/obj/item/organ/ears/cat/ears = new
+						var/obj/item/organ/tail/cat/tail = new
 						ears.Insert(H, movement_flags = DELETE_IF_REPLACED)
 						tail.Insert(H, movement_flags = DELETE_IF_REPLACED)
 					var/list/honorifics = list("[MALE]" = list("kun"), "[FEMALE]" = list("chan","tan"), "[NEUTER]" = list("san"), "[PLURAL]" = list("san")) //John Robust -> Robust-kun
diff --git a/code/modules/admin/verbs/selectequipment.dm b/code/modules/admin/verbs/selectequipment.dm
index 415130fa1b7..96534967702 100644
--- a/code/modules/admin/verbs/selectequipment.dm
+++ b/code/modules/admin/verbs/selectequipment.dm
@@ -213,7 +213,7 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(select_equipment, R_FUN, "Select Equipment", mob/ta
 	for(var/obj/item/item in human_target.get_equipped_items(includes_flags))
 		qdel(item)
 
-	var/obj/item/organ/internal/brain/human_brain = human_target.get_organ_slot(BRAIN)
+	var/obj/item/organ/brain/human_brain = human_target.get_organ_slot(BRAIN)
 	human_brain.destroy_all_skillchips() // get rid of skillchips to prevent runtimes
 
 	if(dresscode != "Naked")
diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm
index 8bd5f3f8432..d33bb48887f 100644
--- a/code/modules/antagonists/abductor/abductor.dm
+++ b/code/modules/antagonists/abductor/abductor.dm
@@ -98,7 +98,7 @@
 	//Equip
 	var/mob/living/carbon/human/new_abductor = owner.current
 	new_abductor.set_species(/datum/species/abductor)
-	var/obj/item/organ/internal/tongue/abductor/abductor_tongue = new_abductor.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/abductor/abductor_tongue = new_abductor.get_organ_slot(ORGAN_SLOT_TONGUE)
 	abductor_tongue.mothership = "[team.name]"
 
 	new_abductor.real_name = "[team.name] [sub_role]"
diff --git a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm
index a02d89e6b1d..296eef07e81 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm
@@ -29,7 +29,7 @@
 	accept_hand = 1
 	time = 32
 	var/obj/item/organ/IC = null
-	var/list/organ_types = list(/obj/item/organ/internal/heart)
+	var/list/organ_types = list(/obj/item/organ/heart)
 
 /datum/surgery_step/extract_organ/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
 	for(var/atom/A in target.organs)
@@ -50,7 +50,7 @@
 
 /datum/surgery_step/gland_insert
 	name = "insert gland"
-	implements = list(/obj/item/organ/internal/heart/gland = 100)
+	implements = list(/obj/item/organ/heart/gland = 100)
 	time = 32
 
 /datum/surgery_step/gland_insert/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -59,6 +59,6 @@
 /datum/surgery_step/gland_insert/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
 	user.visible_message(span_notice("[user] inserts [tool] into [target]."), span_notice("You insert [tool] into [target]."))
 	user.temporarilyRemoveItemFromInventory(tool, TRUE)
-	var/obj/item/organ/internal/heart/gland/gland = tool
+	var/obj/item/organ/heart/gland/gland = tool
 	gland.Insert(target, 2)
 	return 1
diff --git a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
index 9f6d10677d1..d70dc3f0e67 100644
--- a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
+++ b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
@@ -178,7 +178,7 @@
 /obj/item/abductor/mind_device/proc/mind_control(atom/target, mob/living/user)
 	if(iscarbon(target))
 		var/mob/living/carbon/carbon_target = target
-		var/obj/item/organ/internal/heart/gland/target_gland = carbon_target.get_organ_slot("heart")
+		var/obj/item/organ/heart/gland/target_gland = carbon_target.get_organ_slot("heart")
 		if(!istype(target_gland))
 			to_chat(user, span_warning("Your target does not have an experimental gland!"))
 			return
@@ -448,7 +448,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
 		species = span_notice("[human_victim.dna.species.name]")
 		if(IS_CHANGELING(human_victim))
 			species = span_warning("Changeling lifeform")
-		var/obj/item/organ/internal/heart/gland/temp = locate() in human_victim.organs
+		var/obj/item/organ/heart/gland/temp = locate() in human_victim.organs
 		if(temp)
 			helptext = span_warning("Experimental gland detected!")
 		else
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index d1f240b7f68..b991a16b831 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland
+/obj/item/organ/heart/gland
 	name = "fleshy mass"
 	desc = "A nausea-inducing hunk of twisting flesh and metal."
 	icon = 'icons/obj/antags/abductor.dmi'
@@ -22,31 +22,31 @@
 	var/mind_control_duration = 1800
 	var/active_mind_control = FALSE
 
-/obj/item/organ/internal/heart/gland/Initialize(mapload)
+/obj/item/organ/heart/gland/Initialize(mapload)
 	. = ..()
 	icon_state = pick(list("health", "spider", "slime", "emp", "species", "egg", "vent", "mindshock", "viral"))
 	AddElement(/datum/element/update_icon_blocker)
 
-/obj/item/organ/internal/heart/gland/examine(mob/user)
+/obj/item/organ/heart/gland/examine(mob/user)
 	. = ..()
 	if(HAS_MIND_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) || isobserver(user))
 		. += span_notice("It is \a [abductor_hint]")
 
-/obj/item/organ/internal/heart/gland/Stop()
+/obj/item/organ/heart/gland/Stop()
 	return FALSE
 
-/obj/item/organ/internal/heart/gland/proc/ownerCheck()
+/obj/item/organ/heart/gland/proc/ownerCheck()
 	if(ishuman(owner))
 		return TRUE
 	if(!human_only && iscarbon(owner))
 		return TRUE
 	return FALSE
 
-/obj/item/organ/internal/heart/gland/proc/Start()
+/obj/item/organ/heart/gland/proc/Start()
 	active = 1
 	COOLDOWN_START(src, activation_cooldown, rand(cooldown_low, cooldown_high))
 
-/obj/item/organ/internal/heart/gland/proc/update_gland_hud()
+/obj/item/organ/heart/gland/proc/update_gland_hud()
 	if(!owner)
 		return
 	var/image/holder = owner.hud_list[GLAND_HUD]
@@ -59,7 +59,7 @@
 	else
 		holder.icon_state = "hudgland_spent"
 
-/obj/item/organ/internal/heart/gland/proc/mind_control(command, mob/living/user)
+/obj/item/organ/heart/gland/proc/mind_control(command, mob/living/user)
 	if(!ownerCheck() || !mind_control_uses || active_mind_control)
 		return FALSE
 	mind_control_uses--
@@ -75,7 +75,7 @@
 	addtimer(CALLBACK(src, PROC_REF(clear_mind_control)), mind_control_duration)
 	return TRUE
 
-/obj/item/organ/internal/heart/gland/proc/clear_mind_control()
+/obj/item/organ/heart/gland/proc/clear_mind_control()
 	if(!ownerCheck() || !active_mind_control)
 		return FALSE
 	owner.balloon_alert(owner, "compulsion forgotten")
@@ -84,7 +84,7 @@
 	active_mind_control = FALSE
 	return TRUE
 
-/obj/item/organ/internal/heart/gland/mob_remove(mob/living/carbon/gland_owner, special, movement_flags)
+/obj/item/organ/heart/gland/mob_remove(mob/living/carbon/gland_owner, special, movement_flags)
 	. = ..()
 	active = FALSE
 	if(initial(uses) == 1)
@@ -93,7 +93,7 @@
 	hud.remove_atom_from_hud(gland_owner)
 	clear_mind_control()
 
-/obj/item/organ/internal/heart/gland/mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/heart/gland/mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
 	. = ..()
 
 	if(special != 2 && uses) // Special 2 means abductor surgery
@@ -102,7 +102,7 @@
 	hud.add_atom_to_hud(gland_owner)
 	update_gland_hud()
 
-/obj/item/organ/internal/heart/gland/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/gland/on_life(seconds_per_tick, times_fired)
 	if(!active)
 		return
 	if(!ownerCheck())
@@ -115,5 +115,5 @@
 	if(!uses)
 		active = FALSE
 
-/obj/item/organ/internal/heart/gland/proc/activate()
+/obj/item/organ/heart/gland/proc/activate()
 	return
diff --git a/code/modules/antagonists/abductor/equipment/glands/access.dm b/code/modules/antagonists/abductor/equipment/glands/access.dm
index 8e8ff9a7ef9..29be30c0cfc 100644
--- a/code/modules/antagonists/abductor/equipment/glands/access.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/access.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/access
+/obj/item/organ/heart/gland/access
 	abductor_hint = "anagraphic electro-scrambler. After it activates, grants the abductee intrinsic all access."
 	cooldown_low = 600
 	cooldown_high = 1200
@@ -7,6 +7,6 @@
 	mind_control_uses = 3
 	mind_control_duration = 900
 
-/obj/item/organ/internal/heart/gland/access/activate()
+/obj/item/organ/heart/gland/access/activate()
 	to_chat(owner, span_notice("You feel like a VIP for some reason."))
 	owner.AddComponent(/datum/component/simple_access, SSid_access.get_region_access_list(list(REGION_ALL_GLOBAL)), src)
diff --git a/code/modules/antagonists/abductor/equipment/glands/blood.dm b/code/modules/antagonists/abductor/equipment/glands/blood.dm
index 522354fac3a..b1d40852673 100644
--- a/code/modules/antagonists/abductor/equipment/glands/blood.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/blood.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/blood
+/obj/item/organ/heart/gland/blood
 	abductor_hint = "pseudonuclear hemo-destabilizer. Periodically randomizes the abductee's bloodtype into a random reagent."
 	cooldown_low = 1200
 	cooldown_high = 1800
@@ -9,7 +9,7 @@
 	mind_control_uses = 3
 	mind_control_duration = 1500
 
-/obj/item/organ/internal/heart/gland/blood/activate()
+/obj/item/organ/heart/gland/blood/activate()
 	if(!ishuman(owner) || !owner.dna.species)
 		return
 	var/mob/living/carbon/human/H = owner
diff --git a/code/modules/antagonists/abductor/equipment/glands/chem.dm b/code/modules/antagonists/abductor/equipment/glands/chem.dm
index 965d8f2fc20..54644bd8e9f 100644
--- a/code/modules/antagonists/abductor/equipment/glands/chem.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/chem.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/chem
+/obj/item/organ/heart/gland/chem
 	abductor_hint = "intrinsic pharma-provider. The abductee constantly produces random chemicals inside their bloodstream. They also quickly regenerate toxin damage."
 	cooldown_low = 50
 	cooldown_high = 50
@@ -8,12 +8,12 @@
 	mind_control_duration = 1200
 	var/list/possible_reagents = list()
 
-/obj/item/organ/internal/heart/gland/chem/Initialize(mapload)
+/obj/item/organ/heart/gland/chem/Initialize(mapload)
 	. = ..()
 	for(var/R in subtypesof(/datum/reagent/drug) + subtypesof(/datum/reagent/medicine) + typesof(/datum/reagent/toxin))
 		possible_reagents += R
 
-/obj/item/organ/internal/heart/gland/chem/activate()
+/obj/item/organ/heart/gland/chem/activate()
 	var/chem_to_add = pick(possible_reagents)
 	owner.reagents.add_reagent(chem_to_add, 2)
 	owner.adjustToxLoss(-5, forced = TRUE)
diff --git a/code/modules/antagonists/abductor/equipment/glands/egg.dm b/code/modules/antagonists/abductor/equipment/glands/egg.dm
index 938caeeb361..67c3efd42cb 100644
--- a/code/modules/antagonists/abductor/equipment/glands/egg.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/egg.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/egg
+/obj/item/organ/heart/gland/egg
 	abductor_hint = "roe/enzymatic synthesizer. The abductee will periodically lay eggs filled with random reagents."
 	cooldown_low = 300
 	cooldown_high = 400
@@ -9,7 +9,7 @@
 	mind_control_uses = 2
 	mind_control_duration = 1800
 
-/obj/item/organ/internal/heart/gland/egg/activate()
+/obj/item/organ/heart/gland/egg/activate()
 	owner.visible_message(span_alertalien("[owner] [pick(EGG_LAYING_MESSAGES)]"))
 	var/turf/T = owner.drop_location()
 	new /obj/item/food/egg/gland(T)
diff --git a/code/modules/antagonists/abductor/equipment/glands/electric.dm b/code/modules/antagonists/abductor/equipment/glands/electric.dm
index e0b3df0f19c..77c6cfdfeec 100644
--- a/code/modules/antagonists/abductor/equipment/glands/electric.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/electric.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/electric
+/obj/item/organ/heart/gland/electric
 	abductor_hint = "electron accumulator/discharger. The abductee becomes fully immune to electric shocks. Additionally, they will randomly discharge electric bolts."
 	cooldown_low = 800
 	cooldown_high = 1200
@@ -7,20 +7,20 @@
 	mind_control_uses = 2
 	mind_control_duration = 900
 
-/obj/item/organ/internal/heart/gland/electric/on_mob_insert(mob/living/carbon/gland_owner)
+/obj/item/organ/heart/gland/electric/on_mob_insert(mob/living/carbon/gland_owner)
 	. = ..()
 	ADD_TRAIT(gland_owner, TRAIT_SHOCKIMMUNE, ABDUCTOR_GLAND_TRAIT)
 
-/obj/item/organ/internal/heart/gland/electric/on_mob_remove(mob/living/carbon/gland_owner)
+/obj/item/organ/heart/gland/electric/on_mob_remove(mob/living/carbon/gland_owner)
 	. = ..()
 	REMOVE_TRAIT(gland_owner, TRAIT_SHOCKIMMUNE, ABDUCTOR_GLAND_TRAIT)
 
-/obj/item/organ/internal/heart/gland/electric/activate()
+/obj/item/organ/heart/gland/electric/activate()
 	owner.visible_message(span_danger("[owner]'s skin starts emitting electric arcs!"),\
 	span_warning("You feel electric energy building up inside you!"))
 	playsound(get_turf(owner), SFX_SPARKS, 100, TRUE, -1, SHORT_RANGE_SOUND_EXTRARANGE)
 	addtimer(CALLBACK(src, PROC_REF(zap)), rand(3 SECONDS, 10 SECONDS))
 
-/obj/item/organ/internal/heart/gland/electric/proc/zap()
+/obj/item/organ/heart/gland/electric/proc/zap()
 	tesla_zap(source = owner, zap_range = 4, power = 8e3, cutoff = 1e3, zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN)
 	playsound(get_turf(owner), 'sound/effects/magic/lightningshock.ogg', 50, TRUE)
diff --git a/code/modules/antagonists/abductor/equipment/glands/heal.dm b/code/modules/antagonists/abductor/equipment/glands/heal.dm
index 83ba7a7ffbd..13761ba0cdb 100644
--- a/code/modules/antagonists/abductor/equipment/glands/heal.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/heal.dm
@@ -1,6 +1,6 @@
 #define REJECTION_VOMIT_FLAGS (MOB_VOMIT_BLOOD | MOB_VOMIT_STUN | MOB_VOMIT_KNOCKDOWN | MOB_VOMIT_FORCE)
 
-/obj/item/organ/internal/heart/gland/heal
+/obj/item/organ/heart/gland/heal
 	abductor_hint = "organic replicator. Forcibly ejects damaged and robotic organs from the abductee and regenerates them. Additionally, forcibly removes reagents (via vomit) from the abductee if they have moderate toxin damage or poison within the bloodstream, and regenerates blood to a healthy threshold if too low. The abductee will also reject implants such as mindshields."
 	cooldown_low = 200
 	cooldown_high = 400
@@ -10,7 +10,7 @@
 	mind_control_uses = 3
 	mind_control_duration = 3000
 
-/obj/item/organ/internal/heart/gland/heal/activate()
+/obj/item/organ/heart/gland/heal/activate()
 	if(!(owner.mob_biotypes & MOB_ORGANIC))
 		return
 
@@ -19,31 +19,31 @@
 		return
 
 	for(var/organ in owner.organs)
-		if(istype(organ, /obj/item/organ/internal/cyberimp))
+		if(istype(organ, /obj/item/organ/cyberimp))
 			reject_cyberimp(organ)
 			return
 
-	var/obj/item/organ/internal/appendix/appendix = owner.get_organ_slot(ORGAN_SLOT_APPENDIX)
+	var/obj/item/organ/appendix/appendix = owner.get_organ_slot(ORGAN_SLOT_APPENDIX)
 	if((!appendix && !HAS_TRAIT(owner, TRAIT_NOHUNGER)) || (appendix && ((appendix.organ_flags & ORGAN_FAILING) || IS_ROBOTIC_ORGAN(appendix))))
 		replace_appendix(appendix)
 		return
 
-	var/obj/item/organ/internal/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER)
 	if((!liver && !HAS_TRAIT(owner, TRAIT_LIVERLESS_METABOLISM)) || (liver && ((liver.damage > liver.high_threshold) || IS_ROBOTIC_ORGAN(liver))))
 		replace_liver(liver)
 		return
 
-	var/obj/item/organ/internal/lungs/lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if((!lungs && !HAS_TRAIT(owner, TRAIT_NOBREATH)) || (lungs && ((lungs.damage > lungs.high_threshold) || IS_ROBOTIC_ORGAN(lungs))))
 		replace_lungs(lungs)
 		return
 
-	var/obj/item/organ/internal/stomach/stomach = owner.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/stomach = owner.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if((!stomach && !HAS_TRAIT(owner, TRAIT_NOHUNGER)) || (stomach && ((stomach.damage > stomach.high_threshold) || IS_ROBOTIC_ORGAN(stomach))))
 		replace_stomach(stomach)
 		return
 
-	var/obj/item/organ/internal/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
 	if(!eyes || (eyes && ((eyes.damage > eyes.low_threshold) || IS_ROBOTIC_ORGAN(eyes))))
 		replace_eyes(eyes)
 		return
@@ -78,19 +78,19 @@
 		replace_chest(chest)
 		return
 
-/obj/item/organ/internal/heart/gland/heal/proc/reject_implant(obj/item/implant/implant)
+/obj/item/organ/heart/gland/heal/proc/reject_implant(obj/item/implant/implant)
 	owner.visible_message(span_warning("[owner] vomits up a tiny mangled implant!"), span_userdanger("You suddenly vomit up a tiny mangled implant!"))
 	owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
 	implant.removed(owner)
 	qdel(implant)
 
-/obj/item/organ/internal/heart/gland/heal/proc/reject_cyberimp(obj/item/organ/internal/cyberimp/implant)
+/obj/item/organ/heart/gland/heal/proc/reject_cyberimp(obj/item/organ/cyberimp/implant)
 	owner.visible_message(span_warning("[owner] vomits up his [implant.name]!"), span_userdanger("You suddenly vomit up your [implant.name]!"))
 	owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
 	implant.Remove(owner)
 	implant.forceMove(owner.drop_location())
 
-/obj/item/organ/internal/heart/gland/heal/proc/replace_appendix(obj/item/organ/internal/appendix/appendix)
+/obj/item/organ/heart/gland/heal/proc/replace_appendix(obj/item/organ/appendix/appendix)
 	if(appendix)
 		owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
 		appendix.Remove(owner)
@@ -99,13 +99,13 @@
 	else
 		to_chat(owner, span_warning("You feel a weird rumble in your bowels..."))
 
-	var/appendix_type = /obj/item/organ/internal/appendix
+	var/appendix_type = /obj/item/organ/appendix
 	if(owner?.dna?.species?.mutantappendix)
 		appendix_type = owner.dna.species.mutantappendix
-	var/obj/item/organ/internal/appendix/new_appendix = new appendix_type()
+	var/obj/item/organ/appendix/new_appendix = new appendix_type()
 	new_appendix.Insert(owner)
 
-/obj/item/organ/internal/heart/gland/heal/proc/replace_liver(obj/item/organ/internal/liver/liver)
+/obj/item/organ/heart/gland/heal/proc/replace_liver(obj/item/organ/liver/liver)
 	if(liver)
 		owner.visible_message(span_warning("[owner] vomits up his [liver.name]!"), span_userdanger("You suddenly vomit up your [liver.name]!"))
 		owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
@@ -114,13 +114,13 @@
 	else
 		to_chat(owner, span_warning("You feel a weird rumble in your bowels..."))
 
-	var/liver_type = /obj/item/organ/internal/liver
+	var/liver_type = /obj/item/organ/liver
 	if(owner?.dna?.species?.mutantliver)
 		liver_type = owner.dna.species.mutantliver
-	var/obj/item/organ/internal/liver/new_liver = new liver_type()
+	var/obj/item/organ/liver/new_liver = new liver_type()
 	new_liver.Insert(owner)
 
-/obj/item/organ/internal/heart/gland/heal/proc/replace_lungs(obj/item/organ/internal/lungs/lungs)
+/obj/item/organ/heart/gland/heal/proc/replace_lungs(obj/item/organ/lungs/lungs)
 	if(lungs)
 		owner.visible_message(span_warning("[owner] vomits up his [lungs.name]!"), span_userdanger("You suddenly vomit up your [lungs.name]!"))
 		owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
@@ -129,13 +129,13 @@
 	else
 		to_chat(owner, span_warning("You feel a weird rumble inside your chest..."))
 
-	var/lung_type = /obj/item/organ/internal/lungs
+	var/lung_type = /obj/item/organ/lungs
 	if(owner.dna.species && owner.dna.species.mutantlungs)
 		lung_type = owner.dna.species.mutantlungs
-	var/obj/item/organ/internal/lungs/new_lungs = new lung_type()
+	var/obj/item/organ/lungs/new_lungs = new lung_type()
 	new_lungs.Insert(owner)
 
-/obj/item/organ/internal/heart/gland/heal/proc/replace_stomach(obj/item/organ/internal/stomach/stomach)
+/obj/item/organ/heart/gland/heal/proc/replace_stomach(obj/item/organ/stomach/stomach)
 	if(stomach)
 		owner.visible_message(span_warning("[owner] vomits up his [stomach.name]!"), span_userdanger("You suddenly vomit up your [stomach.name]!"))
 		owner.vomit(REJECTION_VOMIT_FLAGS, lost_nutrition = 0)
@@ -144,13 +144,13 @@
 	else
 		to_chat(owner, span_warning("You feel a weird rumble in your bowels..."))
 
-	var/stomach_type = /obj/item/organ/internal/stomach
+	var/stomach_type = /obj/item/organ/stomach
 	if(owner?.dna?.species?.mutantstomach)
 		stomach_type = owner.dna.species.mutantstomach
-	var/obj/item/organ/internal/stomach/new_stomach = new stomach_type()
+	var/obj/item/organ/stomach/new_stomach = new stomach_type()
 	new_stomach.Insert(owner)
 
-/obj/item/organ/internal/heart/gland/heal/proc/replace_eyes(obj/item/organ/internal/eyes/eyes)
+/obj/item/organ/heart/gland/heal/proc/replace_eyes(obj/item/organ/eyes/eyes)
 	if(eyes)
 		owner.visible_message(span_warning("[owner]'s [eyes.name] fall out of their sockets!"), span_userdanger("Your [eyes.name] fall out of their sockets!"))
 		playsound(owner, 'sound/effects/splat.ogg', 50, TRUE)
@@ -161,15 +161,15 @@
 
 	addtimer(CALLBACK(src, PROC_REF(finish_replace_eyes)), rand(10 SECONDS, 20 SECONDS))
 
-/obj/item/organ/internal/heart/gland/heal/proc/finish_replace_eyes()
-	var/eye_type = /obj/item/organ/internal/eyes
+/obj/item/organ/heart/gland/heal/proc/finish_replace_eyes()
+	var/eye_type = /obj/item/organ/eyes
 	if(owner.dna.species && owner.dna.species.mutanteyes)
 		eye_type = owner.dna.species.mutanteyes
-	var/obj/item/organ/internal/eyes/new_eyes = new eye_type()
+	var/obj/item/organ/eyes/new_eyes = new eye_type()
 	new_eyes.Insert(owner)
 	owner.visible_message(span_warning("A pair of new eyes suddenly inflates into [owner]'s eye sockets!"), span_userdanger("A pair of new eyes suddenly inflates into your eye sockets!"))
 
-/obj/item/organ/internal/heart/gland/heal/proc/replace_limb(body_zone, obj/item/bodypart/limb)
+/obj/item/organ/heart/gland/heal/proc/replace_limb(body_zone, obj/item/bodypart/limb)
 	if(limb)
 		owner.visible_message(span_warning("[owner]'s [limb.plaintext_zone] suddenly detaches from [owner.p_their()] body!"), span_userdanger("Your [limb.plaintext_zone] suddenly detaches from your body!"))
 		playsound(owner, SFX_DESECRATION, 50, TRUE, -1)
@@ -179,18 +179,18 @@
 
 	addtimer(CALLBACK(src, PROC_REF(finish_replace_limb), body_zone), rand(15 SECONDS, 30 SECONDS))
 
-/obj/item/organ/internal/heart/gland/heal/proc/finish_replace_limb(body_zone)
+/obj/item/organ/heart/gland/heal/proc/finish_replace_limb(body_zone)
 	owner.visible_message(span_warning("With a loud snap, [owner]'s [parse_zone(body_zone)] rapidly grows back from [owner.p_their()] body!"),
 	span_userdanger("With a loud snap, your [parse_zone(body_zone)] rapidly grows back from your body!"),
 	span_warning("Your hear a loud snap."))
 	playsound(owner, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
 	owner.regenerate_limb(body_zone)
 
-/obj/item/organ/internal/heart/gland/heal/proc/replace_blood()
+/obj/item/organ/heart/gland/heal/proc/replace_blood()
 	owner.visible_message(span_warning("[owner] starts vomiting huge amounts of blood!"), span_userdanger("You suddenly start vomiting huge amounts of blood!"))
 	keep_replacing_blood()
 
-/obj/item/organ/internal/heart/gland/heal/proc/keep_replacing_blood()
+/obj/item/organ/heart/gland/heal/proc/keep_replacing_blood()
 	var/keep_going = FALSE
 	owner.vomit(vomit_flags = (MOB_VOMIT_BLOOD | MOB_VOMIT_FORCE), lost_nutrition = 0, distance = 3)
 	owner.Stun(15)
@@ -209,7 +209,7 @@
 	if(keep_going)
 		addtimer(CALLBACK(src, PROC_REF(keep_replacing_blood)), 3 SECONDS)
 
-/obj/item/organ/internal/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest)
+/obj/item/organ/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest)
 	if(!IS_ORGANIC_LIMB(chest))
 		owner.visible_message(span_warning("[owner]'s [chest.name] rapidly expels its mechanical components, replacing them with flesh!"), span_userdanger("Your [chest.name] rapidly expels its mechanical components, replacing them with flesh!"))
 		playsound(owner, 'sound/effects/magic/clockwork/anima_fragment_attack.ogg', 50, TRUE)
diff --git a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
index 1a3f140c341..a4aa88b8da9 100644
--- a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/mindshock
+/obj/item/organ/heart/gland/mindshock
 	abductor_hint = "neural crosstalk uninhibitor. The abductee emits a disrupting psychic wave every so often. This will either stun, cause hallucinations or deal random brain damage to people nearby."
 	cooldown_low = 40 SECONDS
 	cooldown_high = 70 SECONDS
@@ -8,7 +8,7 @@
 	mind_control_duration = 120 SECONDS
 	var/list/mob/living/carbon/human/broadcasted_mobs = list()
 
-/obj/item/organ/internal/heart/gland/mindshock/activate()
+/obj/item/organ/heart/gland/mindshock/activate()
 	to_chat(owner, span_notice("You get a headache."))
 
 	var/turf/owner_turf = get_turf(owner)
@@ -30,7 +30,7 @@
 			if(3)
 				target.adjust_hallucinations(120 SECONDS)
 
-/obj/item/organ/internal/heart/gland/mindshock/mind_control(command, mob/living/user)
+/obj/item/organ/heart/gland/mindshock/mind_control(command, mob/living/user)
 	if(!ownerCheck() || !mind_control_uses || active_mind_control)
 		return FALSE
 	mind_control_uses--
@@ -62,7 +62,7 @@
 	update_gland_hud()
 	return TRUE
 
-/obj/item/organ/internal/heart/gland/mindshock/clear_mind_control()
+/obj/item/organ/heart/gland/mindshock/clear_mind_control()
 	if(!active_mind_control || !LAZYLEN(broadcasted_mobs))
 		return FALSE
 	for(var/target_mob in broadcasted_mobs)
diff --git a/code/modules/antagonists/abductor/equipment/glands/plasma.dm b/code/modules/antagonists/abductor/equipment/glands/plasma.dm
index 76cd806bb42..6b4a6150f74 100644
--- a/code/modules/antagonists/abductor/equipment/glands/plasma.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/plasma.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/plasma
+/obj/item/organ/heart/gland/plasma
 	abductor_hint = "effluvium sanguine-synonym emitter. The abductee randomly emits clouds of plasma."
 	cooldown_low = 1200
 	cooldown_high = 1800
@@ -7,12 +7,12 @@
 	mind_control_uses = 1
 	mind_control_duration = 800
 
-/obj/item/organ/internal/heart/gland/plasma/activate()
+/obj/item/organ/heart/gland/plasma/activate()
 	to_chat(owner, span_warning("You feel bloated."))
 	addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), owner, span_userdanger("A massive stomachache overcomes you.")), 15 SECONDS)
 	addtimer(CALLBACK(src, PROC_REF(vomit_plasma)), 20 SECONDS)
 
-/obj/item/organ/internal/heart/gland/plasma/proc/vomit_plasma()
+/obj/item/organ/heart/gland/plasma/proc/vomit_plasma()
 	if(!owner)
 		return
 	owner.visible_message(span_danger("[owner] vomits a cloud of plasma!"))
diff --git a/code/modules/antagonists/abductor/equipment/glands/quantum.dm b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
index a2a4a9149e7..1991287981c 100644
--- a/code/modules/antagonists/abductor/equipment/glands/quantum.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/quantum
+/obj/item/organ/heart/gland/quantum
 	abductor_hint = "quantic de-observation matrix. Periodically links with a random person in view, then the abductee later swaps positions with that person."
 	cooldown_low = 150
 	cooldown_high = 150
@@ -8,7 +8,7 @@
 	mind_control_duration = 1200
 	var/mob/living/carbon/entangled_mob
 
-/obj/item/organ/internal/heart/gland/quantum/activate()
+/obj/item/organ/heart/gland/quantum/activate()
 	if(entangled_mob)
 		return
 	for(var/mob/M in oview(owner, 7))
@@ -18,7 +18,7 @@
 		addtimer(CALLBACK(src, PROC_REF(quantum_swap)), rand(1 MINUTES, 4 MINUTES))
 		return
 
-/obj/item/organ/internal/heart/gland/quantum/proc/quantum_swap()
+/obj/item/organ/heart/gland/quantum/proc/quantum_swap()
 	if(QDELETED(entangled_mob))
 		entangled_mob = null
 		return
@@ -30,7 +30,7 @@
 	if(!active_mind_control) //Do not reset entangled mob while mind control is active
 		entangled_mob = null
 
-/obj/item/organ/internal/heart/gland/quantum/mind_control(command, mob/living/user)
+/obj/item/organ/heart/gland/quantum/mind_control(command, mob/living/user)
 	if(..())
 		if(entangled_mob && ishuman(entangled_mob) && (entangled_mob.stat < DEAD))
 			to_chat(entangled_mob, span_userdanger("You suddenly feel an irresistible compulsion to follow an order..."))
@@ -41,7 +41,7 @@
 			user.log_message("mirrored an abductor mind control message to [key_name(entangled_mob)]: [command]", LOG_GAME)
 			update_gland_hud()
 
-/obj/item/organ/internal/heart/gland/quantum/clear_mind_control()
+/obj/item/organ/heart/gland/quantum/clear_mind_control()
 	if(active_mind_control)
 		to_chat(entangled_mob, span_userdanger("You feel the compulsion fade, and you completely forget about your previous orders."))
 		entangled_mob.clear_alert(ALERT_MIND_CONTROL)
diff --git a/code/modules/antagonists/abductor/equipment/glands/slime.dm b/code/modules/antagonists/abductor/equipment/glands/slime.dm
index 6d3287ecae6..252afdaa45e 100644
--- a/code/modules/antagonists/abductor/equipment/glands/slime.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/slime.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/slime
+/obj/item/organ/heart/gland/slime
 	abductor_hint = "gastric animation galvanizer. The abductee occasionally vomits slimes. Slimes will no longer attack the abductee."
 	cooldown_low = 600
 	cooldown_high = 1200
@@ -7,17 +7,17 @@
 	mind_control_uses = 1
 	mind_control_duration = 2400
 
-/obj/item/organ/internal/heart/gland/slime/on_mob_insert(mob/living/carbon/gland_owner)
+/obj/item/organ/heart/gland/slime/on_mob_insert(mob/living/carbon/gland_owner)
 	. = ..()
 	gland_owner.faction |= FACTION_SLIME
 	gland_owner.grant_language(/datum/language/slime, source = LANGUAGE_GLAND)
 
-/obj/item/organ/internal/heart/gland/slime/on_mob_remove(mob/living/carbon/gland_owner)
+/obj/item/organ/heart/gland/slime/on_mob_remove(mob/living/carbon/gland_owner)
 	. = ..()
 	gland_owner.faction -= FACTION_SLIME
 	gland_owner.remove_language(/datum/language/slime, source = LANGUAGE_GLAND)
 
-/obj/item/organ/internal/heart/gland/slime/activate()
+/obj/item/organ/heart/gland/slime/activate()
 	to_chat(owner, span_warning("You feel nauseated!"))
 	owner.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 20)
 
diff --git a/code/modules/antagonists/abductor/equipment/glands/spider.dm b/code/modules/antagonists/abductor/equipment/glands/spider.dm
index 52ff520a876..44150d9ed80 100644
--- a/code/modules/antagonists/abductor/equipment/glands/spider.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/spider.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/spiderman
+/obj/item/organ/heart/gland/spiderman
 	abductor_hint = "araneae cloister accelerator. The abductee occasionally exhales spider pheromones and will spawn spiderlings."
 	cooldown_low = 450
 	cooldown_high = 900
@@ -7,7 +7,7 @@
 	mind_control_uses = 2
 	mind_control_duration = 2400
 
-/obj/item/organ/internal/heart/gland/spiderman/activate()
+/obj/item/organ/heart/gland/spiderman/activate()
 	to_chat(owner, span_warning("You feel something crawling in your skin."))
 	owner.faction |= FACTION_SPIDER
 	var/mob/living/basic/spider/growing/spiderling/spider = new(owner.drop_location())
diff --git a/code/modules/antagonists/abductor/equipment/glands/transform.dm b/code/modules/antagonists/abductor/equipment/glands/transform.dm
index 3ea10c77255..f13418a9082 100644
--- a/code/modules/antagonists/abductor/equipment/glands/transform.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/transform.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/transform
+/obj/item/organ/heart/gland/transform
 	abductor_hint = "anthropmorphic transmorphosizer. The abductee will occasionally change appearance and species."
 	cooldown_low = 900
 	cooldown_high = 1800
@@ -8,7 +8,7 @@
 	mind_control_uses = 7
 	mind_control_duration = 300
 
-/obj/item/organ/internal/heart/gland/transform/activate()
+/obj/item/organ/heart/gland/transform/activate()
 	to_chat(owner, span_notice("You feel unlike yourself."))
 	randomize_human(owner)
 	var/species = pick(list(/datum/species/human, /datum/species/lizard, /datum/species/moth, /datum/species/fly))
diff --git a/code/modules/antagonists/abductor/equipment/glands/trauma.dm b/code/modules/antagonists/abductor/equipment/glands/trauma.dm
index 5fab30332ef..844cc795a94 100644
--- a/code/modules/antagonists/abductor/equipment/glands/trauma.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/trauma.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/trauma
+/obj/item/organ/heart/gland/trauma
 	abductor_hint = "white matter randomiser. The abductee occasionally gains a random brain trauma, up to five times. The traumas can range from basic to deep-rooted."
 	cooldown_low = 800
 	cooldown_high = 1200
@@ -7,7 +7,7 @@
 	mind_control_uses = 3
 	mind_control_duration = 1800
 
-/obj/item/organ/internal/heart/gland/trauma/activate()
+/obj/item/organ/heart/gland/trauma/activate()
 	to_chat(owner, span_warning("You feel a spike of pain in your head."))
 	if(prob(33))
 		owner.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_LOBOTOMY))
diff --git a/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm b/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm
index c7e3a74e4f9..ed0cc5bbed2 100644
--- a/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/ventcrawl.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/ventcrawling
+/obj/item/organ/heart/gland/ventcrawling
 	abductor_hint = "pliant cartilage enabler. The abductee can crawl through vents without trouble."
 	cooldown_low = 1800
 	cooldown_high = 2400
@@ -7,6 +7,6 @@
 	mind_control_uses = 4
 	mind_control_duration = 1800
 
-/obj/item/organ/internal/heart/gland/ventcrawling/activate()
+/obj/item/organ/heart/gland/ventcrawling/activate()
 	to_chat(owner, span_notice("You feel very stretchy."))
 	ADD_TRAIT(owner, TRAIT_VENTCRAWLER_ALWAYS, type)
diff --git a/code/modules/antagonists/abductor/equipment/glands/viral.dm b/code/modules/antagonists/abductor/equipment/glands/viral.dm
index c3d82af9674..9aa4a26e549 100644
--- a/code/modules/antagonists/abductor/equipment/glands/viral.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/viral.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/gland/viral
+/obj/item/organ/heart/gland/viral
 	abductor_hint = "contamination incubator. The abductee becomes a carrier of a random advanced disease - of which they are unaffected by."
 	cooldown_low = 1800
 	cooldown_high = 2400
@@ -7,13 +7,13 @@
 	mind_control_uses = 1
 	mind_control_duration = 1800
 
-/obj/item/organ/internal/heart/gland/viral/activate()
+/obj/item/organ/heart/gland/viral/activate()
 	to_chat(owner, span_warning("You feel sick."))
 	var/datum/disease/advance/A = random_virus(pick(2,6),6)
 	A.carrier = TRUE
 	owner.ForceContractDisease(A, FALSE, TRUE)
 
-/obj/item/organ/internal/heart/gland/viral/proc/random_virus(max_symptoms, max_level)
+/obj/item/organ/heart/gland/viral/proc/random_virus(max_symptoms, max_level)
 	if(max_symptoms > VIRUS_SYMPTOM_LIMIT)
 		max_symptoms = VIRUS_SYMPTOM_LIMIT
 	var/datum/disease/advance/A = new /datum/disease/advance()
diff --git a/code/modules/antagonists/abductor/equipment/orderable_gear.dm b/code/modules/antagonists/abductor/equipment/orderable_gear.dm
index b133bf3f8a5..aa6ef608f6c 100644
--- a/code/modules/antagonists/abductor/equipment/orderable_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/orderable_gear.dm
@@ -53,7 +53,7 @@ GLOBAL_LIST_INIT(abductor_gear, subtypesof(/datum/abductor_gear))
 	name = "Superlingual Matrix"
 	description = "A mysterious structure that allows for instant communication between users. Using it inhand will attune it to your mothership's channel. Pretty impressive until you need to eat something."
 	id = "superlingual_matrix"
-	build_path = list(/obj/item/organ/internal/tongue/abductor = 1)
+	build_path = list(/obj/item/organ/tongue/abductor = 1)
 	category = CATEGORY_MISC_GEAR
 
 /datum/abductor_gear/mental_interface
diff --git a/code/modules/antagonists/abductor/machinery/dispenser.dm b/code/modules/antagonists/abductor/machinery/dispenser.dm
index 416153c50e5..8254247f9dd 100644
--- a/code/modules/antagonists/abductor/machinery/dispenser.dm
+++ b/code/modules/antagonists/abductor/machinery/dispenser.dm
@@ -14,7 +14,7 @@
 
 /obj/machinery/abductor/gland_dispenser/Initialize(mapload)
 	. = ..()
-	gland_types = subtypesof(/obj/item/organ/internal/heart/gland)
+	gland_types = subtypesof(/obj/item/organ/heart/gland)
 	gland_types = shuffle(gland_types)
 	gland_colors = new/list(gland_types.len)
 	amounts = new/list(gland_types.len)
@@ -62,7 +62,7 @@
 			return TRUE
 
 /obj/machinery/abductor/gland_dispenser/attackby(obj/item/W, mob/user, params)
-	if(istype(W, /obj/item/organ/internal/heart/gland))
+	if(istype(W, /obj/item/organ/heart/gland))
 		if(!user.transferItemToLoc(W, src))
 			return
 		for(var/i in 1 to gland_colors.len)
diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm
index c4e59c505bf..324ec4381e1 100644
--- a/code/modules/antagonists/abductor/machinery/experiment.dm
+++ b/code/modules/antagonists/abductor/machinery/experiment.dm
@@ -137,7 +137,7 @@
 	if(occupant.stat == DEAD)
 		say("Specimen deceased - please provide fresh sample.")
 		return "Specimen deceased."
-	var/obj/item/organ/internal/heart/gland/GlandTest = locate() in occupant.organs
+	var/obj/item/organ/heart/gland/GlandTest = locate() in occupant.organs
 	if(!GlandTest)
 		say("Experimental dissection not detected!")
 		return "No glands detected!"
@@ -158,7 +158,7 @@
 		user_abductor.team.abductees += occupant.mind
 		occupant.mind.add_antag_datum(/datum/antagonist/abductee)
 
-		for(var/obj/item/organ/internal/heart/gland/G in occupant.organs)
+		for(var/obj/item/organ/heart/gland/G in occupant.organs)
 			G.Start()
 			point_reward++
 		if(point_reward > 0)
diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index f15dfd27164..615a3d7a325 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -161,7 +161,7 @@
 	make_brain_decoy(living_mob)
 
 /datum/antagonist/changeling/proc/make_brain_decoy(mob/living/ling)
-	var/obj/item/organ/internal/brain/our_ling_brain = ling.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/our_ling_brain = ling.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(isnull(our_ling_brain) || our_ling_brain.decoy_override)
 		return
 
diff --git a/code/modules/antagonists/changeling/headslug_eggs.dm b/code/modules/antagonists/changeling/headslug_eggs.dm
index 75c0881c551..e2238d9d7e7 100644
--- a/code/modules/antagonists/changeling/headslug_eggs.dm
+++ b/code/modules/antagonists/changeling/headslug_eggs.dm
@@ -1,7 +1,7 @@
 #define EGG_INCUBATION_TIME (4 MINUTES)
 
 /// The actual organ that the changeling headslug implants into a dead host.
-/obj/item/organ/internal/body_egg/changeling_egg
+/obj/item/organ/body_egg/changeling_egg
 	name = "changeling egg"
 	desc = "Twitching and disgusting."
 	/// The mind of the original changeling that gave forth to the headslug mob.
@@ -11,20 +11,20 @@
 	/// When this egg last got removed from a body. If -1, the egg hasn't been removed from a body.
 	var/removal_time = -1
 
-/obj/item/organ/internal/body_egg/changeling_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/body_egg/changeling_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED)
 	. = ..()
 	hatch_time = world.time + (removal_time == -1 ? EGG_INCUBATION_TIME : (hatch_time - removal_time))
 
-/obj/item/organ/internal/body_egg/changeling_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
+/obj/item/organ/body_egg/changeling_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags)
 	. = ..()
 	removal_time = world.time
 
-/obj/item/organ/internal/body_egg/changeling_egg/egg_process(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/changeling_egg/egg_process(seconds_per_tick, times_fired)
 	if(owner && hatch_time <= world.time)
 		pop()
 
 /// Once the egg is fully grown, we gib the host and spawn a monkey (with the changeling's player controlling it). Very descriptive proc name.
-/obj/item/organ/internal/body_egg/changeling_egg/proc/pop()
+/obj/item/organ/body_egg/changeling_egg/proc/pop()
 	var/mob/living/carbon/human/spawned_monkey = new(owner)
 	spawned_monkey.set_species(/datum/species/monkey)
 
diff --git a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm
index dec2fa6a76e..52a5d371cf0 100644
--- a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm
+++ b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm
@@ -16,7 +16,7 @@
 
 /datum/action/changeling/augmented_eyesight/on_purchase(mob/user) //The ability starts inactive, so we should be protected from flashes.
 	. = ..()
-	var/obj/item/organ/internal/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
 	RegisterSignal(user, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(eye_implanted))
 	RegisterSignal(user, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(eye_removed))
 	if(!isnull(ling_eyes))
@@ -27,7 +27,7 @@
 	if(!istype(user))
 		return FALSE
 
-	var/obj/item/organ/internal/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
 	if(isnull(ling_eyes))
 		user.balloon_alert(user, "no eyes!")
 		return FALSE
@@ -50,7 +50,7 @@
 	return TRUE
 
 /datum/action/changeling/augmented_eyesight/Remove(mob/user)
-	var/obj/item/organ/internal/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/ling_eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
 	if(!isnull(ling_eyes))
 		ling_eyes.flash_protect = initial(ling_eyes.flash_protect)
 
@@ -64,7 +64,7 @@
 /datum/action/changeling/augmented_eyesight/proc/eye_implanted(mob/living/source, obj/item/organ/gained, special)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/eyes/ling_eyes = gained
+	var/obj/item/organ/eyes/ling_eyes = gained
 	if(!istype(ling_eyes))
 		return
 	if(active)
@@ -76,7 +76,7 @@
 /datum/action/changeling/augmented_eyesight/proc/eye_removed(mob/living/source, obj/item/organ/removed, special)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/eyes/ling_eyes = removed
+	var/obj/item/organ/eyes/ling_eyes = removed
 	if(!istype(ling_eyes))
 		return
 	ling_eyes.flash_protect = initial(ling_eyes.flash_protect)
diff --git a/code/modules/antagonists/changeling/powers/darkness_adaptation.dm b/code/modules/antagonists/changeling/powers/darkness_adaptation.dm
index c33b36a785f..bd498b58482 100644
--- a/code/modules/antagonists/changeling/powers/darkness_adaptation.dm
+++ b/code/modules/antagonists/changeling/powers/darkness_adaptation.dm
@@ -37,7 +37,7 @@
 	animate(cling, color = COLOR_DARK, time = 3 SECONDS) // Darkens their overall appearance
 	var/datum/antagonist/changeling/changeling_data = cling.mind?.has_antag_datum(/datum/antagonist/changeling)
 	changeling_data?.chem_recharge_slowdown -= recharge_slowdown //Slows down chem regeneration
-	var/obj/item/organ/internal/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/eyes)
 	if(!istype(eyes))
 		return
 	eyes.lighting_cutoff = LIGHTING_CUTOFF_MEDIUM // Adds barely usable, kinda shit night vision
@@ -53,7 +53,7 @@
 	animate(cling, color = null, time = 3 SECONDS)
 	var/datum/antagonist/changeling/changeling_data = cling.mind?.has_antag_datum(/datum/antagonist/changeling)
 	changeling_data?.chem_recharge_slowdown += recharge_slowdown
-	var/obj/item/organ/internal/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/eyes = cling.get_organ_by_type(/obj/item/organ/eyes)
 	if(!istype(eyes))
 		return
 	eyes.lighting_cutoff = LIGHTING_CUTOFF_VISIBLE
@@ -64,7 +64,7 @@
 /datum/action/changeling/darkness_adaptation/proc/eye_implanted(mob/living/source, obj/item/organ/gained, special)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/eyes/eyes = gained
+	var/obj/item/organ/eyes/eyes = gained
 	if(!istype(eyes))
 		return
 	if(is_active)
@@ -76,7 +76,7 @@
 /datum/action/changeling/darkness_adaptation/proc/eye_removed(mob/living/source, obj/item/organ/removed, special)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/internal/eyes/eyes = removed
+	var/obj/item/organ/eyes/eyes = removed
 	if(!istype(eyes))
 		return
 	eyes.flash_protect = initial(eyes.flash_protect)
diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm
index c4f2376f755..1af11d3ad15 100644
--- a/code/modules/antagonists/changeling/powers/headcrab.dm
+++ b/code/modules/antagonists/changeling/powers/headcrab.dm
@@ -22,7 +22,7 @@
 
 	explosion(user, light_impact_range = 2, adminlog = TRUE, explosion_cause = src)
 	for(var/mob/living/carbon/human/blinded_human in range(2, user))
-		var/obj/item/organ/internal/eyes/eyes = blinded_human.get_organ_slot(ORGAN_SLOT_EYES)
+		var/obj/item/organ/eyes/eyes = blinded_human.get_organ_slot(ORGAN_SLOT_EYES)
 		if(!eyes || blinded_human.is_blind())
 			continue
 		to_chat(blinded_human, span_userdanger("You are blinded by a shower of blood!"))
diff --git a/code/modules/antagonists/changeling/powers/mmi_talk.dm b/code/modules/antagonists/changeling/powers/mmi_talk.dm
index 2fe90d08318..ecd64890c42 100644
--- a/code/modules/antagonists/changeling/powers/mmi_talk.dm
+++ b/code/modules/antagonists/changeling/powers/mmi_talk.dm
@@ -15,7 +15,7 @@
 	 * Set when created via the ling decoy component.
 	 * If the brain ends up being qdelled, this action will also be qdelled, and thus this ref is cleared.
 	 */
-	VAR_FINAL/obj/item/organ/internal/brain/brain_ref
+	VAR_FINAL/obj/item/organ/brain/brain_ref
 
 	/// A map view of the area around the MMI.
 	VAR_FINAL/atom/movable/screen/map_view/mmi_view
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index f6b42bf19f2..158b32df216 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -632,7 +632,7 @@
 
 /obj/item/clothing/head/helmet/changeling_hivehead/attackby(obj/item/attacking_item, mob/user, params)
 	. = ..()
-	if(!istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core/legion) || !holds_reagents)
+	if(!istype(attacking_item, /obj/item/organ/monster_core/regenerative_core/legion) || !holds_reagents)
 		return
 	visible_message(span_boldwarning("As [user] shoves [attacking_item] into [src], [src] begins to mutate."))
 	var/mob/living/carbon/wearer = loc
diff --git a/code/modules/antagonists/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm
index b05bb38ae31..18f04727ff3 100644
--- a/code/modules/antagonists/changeling/powers/panacea.dm
+++ b/code/modules/antagonists/changeling/powers/panacea.dm
@@ -12,10 +12,10 @@
 	to_chat(user, span_notice("We cleanse impurities from our form."))
 	..()
 	var/list/bad_organs = list(
-		user.get_organ_by_type(/obj/item/organ/internal/empowered_borer_egg), // NOVA EDIT ADDITION
-		user.get_organ_by_type(/obj/item/organ/internal/body_egg),
-		user.get_organ_by_type(/obj/item/organ/internal/legion_tumour),
-		user.get_organ_by_type(/obj/item/organ/internal/zombie_infection),
+		user.get_organ_by_type(/obj/item/organ/empowered_borer_egg), // NOVA EDIT ADDITION
+		user.get_organ_by_type(/obj/item/organ/body_egg),
+		user.get_organ_by_type(/obj/item/organ/legion_tumour),
+		user.get_organ_by_type(/obj/item/organ/zombie_infection),
 	)
 
 
diff --git a/code/modules/antagonists/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm
index 8873ef73a49..b6d6f550d05 100644
--- a/code/modules/antagonists/changeling/powers/shriek.dm
+++ b/code/modules/antagonists/changeling/powers/shriek.dm
@@ -18,7 +18,7 @@
 		if(iscarbon(M))
 			var/mob/living/carbon/C = M
 			if(!IS_CHANGELING(C))
-				var/obj/item/organ/internal/ears/ears = C.get_organ_slot(ORGAN_SLOT_EARS)
+				var/obj/item/organ/ears/ears = C.get_organ_slot(ORGAN_SLOT_EARS)
 				if(ears)
 					ears.adjustEarDamage(0, 30)
 				C.adjust_confusion(25 SECONDS)
diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm
index cd5c24ced7a..4fa2d453cdc 100644
--- a/code/modules/antagonists/changeling/powers/tiny_prick.dm
+++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm
@@ -237,7 +237,7 @@
 	dna_cost = 1
 
 /datum/action/changeling/sting/blind/sting_action(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
 	if(!eyes)
 		user.balloon_alert(user, "no eyes!")
 		return FALSE
diff --git a/code/modules/antagonists/clown_ops/clownop.dm b/code/modules/antagonists/clown_ops/clownop.dm
index 8dbcb3c232d..2fd2daa7489 100644
--- a/code/modules/antagonists/clown_ops/clownop.dm
+++ b/code/modules/antagonists/clown_ops/clownop.dm
@@ -29,7 +29,7 @@
 /datum/antagonist/nukeop/clownop/equip_op()
 	. = ..()
 	var/mob/living/current_mob = owner.current
-	var/obj/item/organ/internal/liver/liver = current_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = current_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver)
 		ADD_TRAIT(liver, TRAIT_COMEDY_METABOLISM, CLOWNOP_TRAIT)
 
@@ -61,7 +61,7 @@
 /datum/antagonist/nukeop/leader/clownop/equip_op()
 	. = ..()
 	var/mob/living/L = owner.current
-	var/obj/item/organ/internal/liver/liver = L.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = L.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver)
 		ADD_TRAIT(liver, TRAIT_COMEDY_METABOLISM, CLOWNOP_TRAIT)
 
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index e334b17e360..af7254119dd 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -1092,7 +1092,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0)
 
 /mob/living/carbon/human/cult_ghost/get_organs_for_zone(zone, include_children)
 	. = ..()
-	for(var/obj/item/organ/internal/brain/B in .) //they're not that smart, really
+	for(var/obj/item/organ/brain/B in .) //they're not that smart, really
 		. -= B
 
 
diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm
index bbd1fc9ee03..5b73476a3af 100644
--- a/code/modules/antagonists/fugitive/fugitive_outfits.dm
+++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm
@@ -66,7 +66,7 @@
 /datum/outfit/synthetic/post_equip(mob/living/carbon/human/H, visuals_only = FALSE)
 	if(visuals_only)
 		return
-	var/obj/item/organ/internal/eyes/robotic/glow/eyes = new()
+	var/obj/item/organ/eyes/robotic/glow/eyes = new()
 	eyes.Insert(H, movement_flags = DELETE_IF_REPLACED)
 
 /datum/outfit/invisible_man
diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm
index 007dc15bbc4..d4fdf79dfbb 100644
--- a/code/modules/antagonists/heretic/heretic_knowledge.dm
+++ b/code/modules/antagonists/heretic/heretic_knowledge.dm
@@ -581,15 +581,15 @@
 /datum/heretic_knowledge/knowledge_ritual/New()
 	. = ..()
 	var/static/list/potential_organs = list(
-		/obj/item/organ/internal/appendix,
-		/obj/item/organ/external/tail,
-		/obj/item/organ/internal/eyes,
-		/obj/item/organ/internal/tongue,
-		/obj/item/organ/internal/ears,
-		/obj/item/organ/internal/heart,
-		/obj/item/organ/internal/liver,
-		/obj/item/organ/internal/stomach,
-		/obj/item/organ/internal/lungs,
+		/obj/item/organ/appendix,
+		/obj/item/organ/tail,
+		/obj/item/organ/eyes,
+		/obj/item/organ/tongue,
+		/obj/item/organ/ears,
+		/obj/item/organ/heart,
+		/obj/item/organ/liver,
+		/obj/item/organ/stomach,
+		/obj/item/organ/lungs,
 	)
 
 	var/static/list/potential_easy_items = list(
diff --git a/code/modules/antagonists/heretic/items/corrupted_organs.dm b/code/modules/antagonists/heretic/items/corrupted_organs.dm
index 335279c9553..fec25094bb7 100644
--- a/code/modules/antagonists/heretic/items/corrupted_organs.dm
+++ b/code/modules/antagonists/heretic/items/corrupted_organs.dm
@@ -1,17 +1,17 @@
 /// Renders you unable to see people who were heretics at the time that this organ is gained
-/obj/item/organ/internal/eyes/corrupt
+/obj/item/organ/eyes/corrupt
 	name = "corrupt orbs"
 	desc = "These eyes have seen something they shouldn't have."
 	organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
 	/// The override images we are applying
 	var/list/hallucinations
 
-/obj/item/organ/internal/eyes/corrupt/Initialize(mapload)
+/obj/item/organ/eyes/corrupt/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/corrupted_organ)
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their eyes have wide dilated pupils, and no iris. Something is moving in the darkness.", BODY_ZONE_PRECISE_EYES)
 
-/obj/item/organ/internal/eyes/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/eyes/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 	if (!organ_owner.client)
 		return
@@ -28,7 +28,7 @@
 	if (LAZYLEN(hallucinations))
 		organ_owner.client.images |= hallucinations
 
-/obj/item/organ/internal/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	if (!LAZYLEN(hallucinations))
 		return
@@ -37,26 +37,26 @@
 
 
 /// Sometimes speak in incomprehensible tongues
-/obj/item/organ/internal/tongue/corrupt
+/obj/item/organ/tongue/corrupt
 	name = "corrupt tongue"
 	desc = "This one tells only lies."
 	organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
 
-/obj/item/organ/internal/tongue/corrupt/Initialize(mapload)
+/obj/item/organ/tongue/corrupt/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/corrupted_organ)
 	AddElement(/datum/element/noticable_organ, "The inside of %PRONOUN_Their mouth is full of stars.", BODY_ZONE_PRECISE_MOUTH)
 
-/obj/item/organ/internal/tongue/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/tongue/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 	RegisterSignal(organ_owner, COMSIG_MOB_SAY, PROC_REF(on_spoken))
 
-/obj/item/organ/internal/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	UnregisterSignal(organ_owner, COMSIG_MOB_SAY)
 
 /// When the mob speaks, sometimes put it in a different language
-/obj/item/organ/internal/tongue/corrupt/proc/on_spoken(mob/living/organ_owner, list/speech_args)
+/obj/item/organ/tongue/corrupt/proc/on_spoken(mob/living/organ_owner, list/speech_args)
 	SIGNAL_HANDLER
 	if (organ_owner.has_reagent(/datum/reagent/water/holywater) || prob(60))
 		return
@@ -64,7 +64,7 @@
 
 
 /// Randomly secretes alcohol or hallucinogens when you're drinking something
-/obj/item/organ/internal/liver/corrupt
+/obj/item/organ/liver/corrupt
 	name = "corrupt liver"
 	desc = "After what you've seen you could really go for a drink."
 	organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
@@ -83,20 +83,20 @@
 		/datum/reagent/drug/mushroomhallucinogen,
 	)
 
-/obj/item/organ/internal/liver/corrupt/Initialize(mapload)
+/obj/item/organ/liver/corrupt/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/corrupted_organ)
 
-/obj/item/organ/internal/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
 	. = ..()
 	RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank))
 
-/obj/item/organ/internal/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS)
 
 /// If we drank something, add a little extra
-/obj/item/organ/internal/liver/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods)
+/obj/item/organ/liver/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods)
 	SIGNAL_HANDLER
 	if (!(methods & INGEST))
 		return
@@ -108,7 +108,7 @@
 
 
 /// Rapidly become hungry if you are not digesting blood
-/obj/item/organ/internal/stomach/corrupt
+/obj/item/organ/stomach/corrupt
 	name = "corrupt stomach"
 	desc = "This parasite demands an unwholesome diet in order to be satisfied."
 	organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
@@ -119,21 +119,21 @@
 	/// How long until we prompt the player to drink blood again?
 	COOLDOWN_DECLARE(message_cooldown)
 
-/obj/item/organ/internal/stomach/corrupt/Initialize(mapload)
+/obj/item/organ/stomach/corrupt/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/corrupted_organ)
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_They %PRONOUN_have an unhealthy pallor.")
 
-/obj/item/organ/internal/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special)
 	. = ..()
 	RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank))
 
-/obj/item/organ/internal/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS)
 
 /// Check if we drank a little blood
-/obj/item/organ/internal/stomach/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods)
+/obj/item/organ/stomach/corrupt/proc/on_drank(atom/source, list/reagents, datum/reagents/source_reagents, methods)
 	SIGNAL_HANDLER
 	if (!(methods & INGEST))
 		return
@@ -148,7 +148,7 @@
 	deltimer(thirst_timer)
 	thirst_timer = addtimer(VARSET_CALLBACK(src, thirst_satiated, FALSE), 3 MINUTES, TIMER_STOPPABLE | TIMER_DELETE_ME)
 
-/obj/item/organ/internal/stomach/corrupt/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired)
+/obj/item/organ/stomach/corrupt/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired)
 	if (thirst_satiated || human.has_reagent(/datum/reagent/water/holywater))
 		return ..()
 
@@ -174,18 +174,18 @@
 
 
 /// Occasionally bombards you with spooky hands and lets everyone hear your pulse.
-/obj/item/organ/internal/heart/corrupt
+/obj/item/organ/heart/corrupt
 	name = "corrupt heart"
 	desc = "What corruption is this spreading along with the blood?"
 	organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
 	/// How long until the next heart?
 	COOLDOWN_DECLARE(hand_cooldown)
 
-/obj/item/organ/internal/heart/corrupt/Initialize(mapload)
+/obj/item/organ/heart/corrupt/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/corrupted_organ)
 
-/obj/item/organ/internal/heart/corrupt/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/corrupt/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if (!COOLDOWN_FINISHED(src, hand_cooldown) || IS_IN_MANSUS(owner) || !owner.needs_heart() || !is_beating() || owner.has_reagent(/datum/reagent/water/holywater))
 		return
@@ -194,7 +194,7 @@
 
 
 /// Sometimes cough out some kind of dangerous gas
-/obj/item/organ/internal/lungs/corrupt
+/obj/item/organ/lungs/corrupt
 	name = "corrupt lungs"
 	desc = "Some things SHOULD be drowned in tar."
 	organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
@@ -209,11 +209,11 @@
 		/datum/gas/plasma = 20,
 	)
 
-/obj/item/organ/internal/lungs/corrupt/Initialize(mapload)
+/obj/item/organ/lungs/corrupt/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/corrupted_organ)
 
-/obj/item/organ/internal/lungs/corrupt/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
+/obj/item/organ/lungs/corrupt/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
 	. = ..()
 	if (!. || IS_IN_MANSUS(owner) || breather.has_reagent(/datum/reagent/water/holywater) || !prob(cough_chance))
 		return
@@ -229,19 +229,19 @@
 
 
 /// It's full of worms
-/obj/item/organ/internal/appendix/corrupt
+/obj/item/organ/appendix/corrupt
 	name = "corrupt appendix"
 	desc = "What kind of dark, cosmic force is even going to bother to corrupt an appendix?"
 	organ_flags = parent_type::organ_flags | ORGAN_HAZARDOUS
 	/// How likely are we to spawn worms?
 	var/worm_chance = 2
 
-/obj/item/organ/internal/appendix/corrupt/Initialize(mapload)
+/obj/item/organ/appendix/corrupt/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/corrupted_organ)
 	AddElement(/datum/element/noticable_organ, "%PRONOUN_Their abdomen is distended... and wiggling.", BODY_ZONE_PRECISE_GROIN)
 
-/obj/item/organ/internal/appendix/corrupt/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/appendix/corrupt/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if (owner.stat != CONSCIOUS || owner.has_reagent(/datum/reagent/water/holywater) || IS_IN_MANSUS(owner) || !SPT_PROB(worm_chance, seconds_per_tick))
 		return
diff --git a/code/modules/antagonists/heretic/items/eldritch_painting.dm b/code/modules/antagonists/heretic/items/eldritch_painting.dm
index a88e7016386..8dd3d7ef6e1 100644
--- a/code/modules/antagonists/heretic/items/eldritch_painting.dm
+++ b/code/modules/antagonists/heretic/items/eldritch_painting.dm
@@ -129,14 +129,14 @@
 
 	// A list made of the organs and bodyparts the heretic can get
 	var/static/list/random_bodypart_or_organ = list(
-		/obj/item/organ/internal/brain,
-		/obj/item/organ/internal/lungs,
-		/obj/item/organ/internal/eyes,
-		/obj/item/organ/internal/ears,
-		/obj/item/organ/internal/heart,
-		/obj/item/organ/internal/liver,
-		/obj/item/organ/internal/stomach,
-		/obj/item/organ/internal/appendix,
+		/obj/item/organ/brain,
+		/obj/item/organ/lungs,
+		/obj/item/organ/eyes,
+		/obj/item/organ/ears,
+		/obj/item/organ/heart,
+		/obj/item/organ/liver,
+		/obj/item/organ/stomach,
+		/obj/item/organ/appendix,
 		/obj/item/bodypart/arm/left,
 		/obj/item/bodypart/arm/right,
 		/obj/item/bodypart/leg/left,
diff --git a/code/modules/antagonists/heretic/knowledge/ash_lore.dm b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
index 99f0eeaeba2..402bbd9537d 100644
--- a/code/modules/antagonists/heretic/knowledge/ash_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
@@ -111,7 +111,7 @@
 		It can also be forced onto a heathen, to make them unable to take it off..."
 	gain_text = "The Nightwatcher was lost. That's what the Watch believed. Yet he walked the world, unnoticed by the masses."
 	required_atoms = list(
-		/obj/item/organ/internal/liver = 1,
+		/obj/item/organ/liver = 1,
 		/obj/item/melee/baton/security = 1,  // Technically means a cattleprod is valid
 		/obj/item/clothing/mask = 1,
 		/obj/item/flashlight/flare/candle = 4,
diff --git a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
index 33bedad5195..8ade390e4d9 100644
--- a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
@@ -225,7 +225,7 @@
 	gain_text = "I could not continue alone. I was able to summon The Uncanny Man to help me see more. \
 		The screams... once constant, now silenced by their wretched appearance. Nothing was out of reach."
 	required_atoms = list(
-		/obj/item/organ/internal/eyes = 1,
+		/obj/item/organ/eyes = 1,
 		/obj/effect/decal/cleanable/blood = 1,
 		/obj/item/bodypart/arm/left = 1,
 	)
@@ -261,9 +261,9 @@
 		An ever shapeshifting mass of flesh, it knew well my goals. The Marshal approved."
 
 	required_atoms = list(
-		/obj/item/organ/external/tail = 1,
-		/obj/item/organ/internal/stomach = 1,
-		/obj/item/organ/internal/tongue = 1,
+		/obj/item/organ/tail = 1,
+		/obj/item/organ/stomach = 1,
+		/obj/item/organ/tongue = 1,
 		/obj/item/pen = 1,
 		/obj/item/paper = 1,
 	)
diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
index 499d2444048..2ab75e96c5a 100644
--- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
@@ -100,7 +100,7 @@
 	gain_text = "At the head of the parade he stood, the moon condensed into one mass, a reflection of the soul."
 
 	required_atoms = list(
-		/obj/item/organ/internal/heart = 1,
+		/obj/item/organ/heart = 1,
 		/obj/item/stack/sheet/glass = 2,
 		/obj/item/clothing/neck/tie = 1,
 	)
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm
index 87086de6e00..782ec6ec55d 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_curse.dm
@@ -68,15 +68,15 @@
 		return
 
 	var/list/removable_organs = list()
-	for(var/obj/item/organ/internal/bodypart_organ in organ_storage.contents)
-		if(bodypart_organ.organ_flags & ORGAN_UNREMOVABLE)
+	for(var/obj/item/organ/bodypart_organ in organ_storage.contents)
+		if(bodypart_organ.organ_flags & (ORGAN_EXTERNAL|ORGAN_UNREMOVABLE))
 			continue
 		removable_organs += bodypart_organ
 
 	if (!length(removable_organs))
 		return // This one is a little more possible but they're probably already in pretty bad shape by this point
 
-	var/obj/item/organ/internal/removing_organ = pick(removable_organs)
+	var/obj/item/organ/removing_organ = pick(removable_organs)
 
 	if (carbon_owner.vomit(vomit_flags = VOMIT_CATEGORY_BLOOD))
 		carbon_owner.visible_message(span_boldwarning("[carbon_owner] vomits out [carbon_owner.p_their()] [removing_organ]"))
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
index 5ce9c89ab2a..9a69eb2db61 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
@@ -31,13 +31,13 @@
 	var/list/return_timers
 	/// Evil organs we can put in people
 	var/static/list/grantable_organs = list(
-		/obj/item/organ/internal/appendix/corrupt,
-		/obj/item/organ/internal/eyes/corrupt,
-		/obj/item/organ/internal/heart/corrupt,
-		/obj/item/organ/internal/liver/corrupt,
-		/obj/item/organ/internal/lungs/corrupt,
-		/obj/item/organ/internal/stomach/corrupt,
-		/obj/item/organ/internal/tongue/corrupt,
+		/obj/item/organ/appendix/corrupt,
+		/obj/item/organ/eyes/corrupt,
+		/obj/item/organ/heart/corrupt,
+		/obj/item/organ/liver/corrupt,
+		/obj/item/organ/lungs/corrupt,
+		/obj/item/organ/stomach/corrupt,
+		/obj/item/organ/tongue/corrupt,
 	)
 
 /datum/heretic_knowledge/hunt_and_sacrifice/Destroy(force)
@@ -422,7 +422,7 @@
 /datum/heretic_knowledge/hunt_and_sacrifice/proc/curse_organs(mob/living/carbon/human/sac_target)
 	var/usable_organs = grantable_organs.Copy()
 	if (isplasmaman(sac_target))
-		usable_organs -= /obj/item/organ/internal/lungs/corrupt // Their lungs are already more cursed than anything I could give them
+		usable_organs -= /obj/item/organ/lungs/corrupt // Their lungs are already more cursed than anything I could give them
 
 	var/total_implant = rand(2, 4)
 
@@ -430,7 +430,7 @@
 		if (!length(usable_organs))
 			return
 		var/organ_path = pick_n_take(usable_organs)
-		var/obj/item/organ/internal/to_give = new organ_path
+		var/obj/item/organ/to_give = new organ_path
 		to_give.Insert(sac_target)
 
 	new /obj/effect/gibspawner/human/bodypartless(get_turf(sac_target))
diff --git a/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm b/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm
index 6672c9e7da8..b4470f9c7fb 100644
--- a/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_ash_moon.dm
@@ -16,7 +16,7 @@
 	gain_text = "Piercing eyes guided them through the mundane. Neither darkness nor terror could stop them."
 
 	required_atoms = list(
-		/obj/item/organ/internal/eyes = 1,
+		/obj/item/organ/eyes = 1,
 		/obj/item/shard = 1,
 		/obj/item/flashlight/flare/candle = 1,
 	)
diff --git a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm
index f4d9d80717b..03b4fc477ad 100644
--- a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm
@@ -20,7 +20,7 @@
 
 	required_atoms = list(
 		/obj/effect/decal/cleanable/ash = 1,
-		/obj/item/organ/internal/liver = 1,
+		/obj/item/organ/liver = 1,
 		/obj/item/stack/sheet/mineral/plasma = 1,
 	)
 	mob_to_summon = /mob/living/basic/heretic_summon/fire_shark
diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm
index 5a3a042e609..f8a3cdf465b 100644
--- a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm
@@ -37,7 +37,7 @@
 	gain_text = "The mansus holds many a curio, some are not meant for the mortal eye."
 
 	required_atoms = list(
-		/obj/item/organ/internal/lungs = 1,
+		/obj/item/organ/lungs = 1,
 		/obj/item/stack/rods = 3,
 		/obj/item/storage/belt = 1,
 	)
@@ -69,11 +69,11 @@
 
 
 /datum/heretic_knowledge/painting/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc)
-	if(locate(/obj/item/organ/internal/eyes) in atoms)
+	if(locate(/obj/item/organ/eyes) in atoms)
 		src.result_atoms = list(/obj/item/wallframe/painting/eldritch/weeping)
 		src.required_atoms = list(
 			/obj/item/canvas = 1,
-			/obj/item/organ/internal/eyes = 1,
+			/obj/item/organ/eyes = 1,
 		)
 		return TRUE
 
diff --git a/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm b/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm
index 3818aeb7224..953590124f6 100644
--- a/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_rust_cosmos.dm
@@ -65,7 +65,7 @@
 	required_atoms = list(
 		/obj/item/wirecutters = 1,
 		/obj/effect/decal/cleanable/vomit = 1,
-		/obj/item/organ/internal/heart = 1,
+		/obj/item/organ/heart = 1,
 	)
 	duration = 0.5 MINUTES
 	duration_modifier = 4
diff --git a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm
index 110cbbeb28e..664db996926 100644
--- a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm
+++ b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm
@@ -165,7 +165,7 @@
 		/obj/item/stack/sheet/mineral/titanium = 5,
 		/obj/item/clothing/suit/armor = 1,
 		/obj/item/assembly/flash = 1,
-		/obj/item/organ/internal/lungs = 1,
+		/obj/item/organ/lungs = 1,
 	)
 	cost = 1
 
diff --git a/code/modules/antagonists/heretic/knowledge/starting_lore.dm b/code/modules/antagonists/heretic/knowledge/starting_lore.dm
index 8c61f13f495..d6c9d1bc216 100644
--- a/code/modules/antagonists/heretic/knowledge/starting_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/starting_lore.dm
@@ -48,7 +48,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
 	research_tree_icon_state = "living_heart"
 	research_tree_icon_frame = 1
 	/// The typepath of the organ type required for our heart.
-	var/required_organ_type = /obj/item/organ/internal/heart
+	var/required_organ_type = /obj/item/organ/heart
 
 /datum/heretic_knowledge/living_heart/on_research(mob/user, datum/antagonist/heretic/our_heretic)
 	. = ..()
@@ -61,9 +61,9 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
 	// If a heretic is made from a species without a heart, we need to find a backup.
 	if(!where_to_put_our_heart)
 		var/static/list/backup_organs = list(
-			ORGAN_SLOT_LUNGS = /obj/item/organ/internal/lungs,
-			ORGAN_SLOT_LIVER = /obj/item/organ/internal/liver,
-			ORGAN_SLOT_STOMACH = /obj/item/organ/internal/stomach,
+			ORGAN_SLOT_LUNGS = /obj/item/organ/lungs,
+			ORGAN_SLOT_LIVER = /obj/item/organ/liver,
+			ORGAN_SLOT_STOMACH = /obj/item/organ/stomach,
 		)
 
 		for(var/backup_slot in backup_organs)
@@ -197,7 +197,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge())
 	desc = "Allows you to transmute a sheet of glass and a pair of eyes to create an Amber Focus. \
 		A focus must be worn in order to cast more advanced spells."
 	required_atoms = list(
-		/obj/item/organ/internal/eyes = 1,
+		/obj/item/organ/eyes = 1,
 		/obj/item/stack/sheet/glass = 1,
 	)
 	result_atoms = list(/obj/item/clothing/neck/heretic_focus)
diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm
index 071284ac193..7f8b5795c01 100644
--- a/code/modules/antagonists/heretic/knowledge/void_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm
@@ -217,7 +217,7 @@
 	heavy_storm = new(user, 10)
 	if(ishuman(user))
 		var/mob/living/carbon/human/ascended_human = user
-		var/obj/item/organ/internal/eyes/heretic_eyes = ascended_human.get_organ_slot(ORGAN_SLOT_EYES)
+		var/obj/item/organ/eyes/heretic_eyes = ascended_human.get_organ_slot(ORGAN_SLOT_EYES)
 		heretic_eyes?.color_cutoffs = list(30, 30, 30)
 		ascended_human.update_sight()
 
diff --git a/code/modules/antagonists/heretic/magic/moon_smile.dm b/code/modules/antagonists/heretic/magic/moon_smile.dm
index f6f88894efd..2ded0134a04 100644
--- a/code/modules/antagonists/heretic/magic/moon_smile.dm
+++ b/code/modules/antagonists/heretic/magic/moon_smile.dm
@@ -40,7 +40,7 @@
 	cast_on.adjust_temp_blindness(moon_smile_duration + 1 SECONDS)
 	cast_on.set_eye_blur_if_lower(moon_smile_duration + 2 SECONDS)
 
-	var/obj/item/organ/internal/ears/ears = cast_on.get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = cast_on.get_organ_slot(ORGAN_SLOT_EARS)
 	//adjustEarDamage takes deafness duration parameter in one unit per two seconds, instead of the normal time, so we divide by two seconds
 	ears?.adjustEarDamage(0, (moon_smile_duration + 1 SECONDS) / (2 SECONDS))
 
diff --git a/code/modules/antagonists/nightmare/nightmare_organs.dm b/code/modules/antagonists/nightmare/nightmare_organs.dm
index 4aaacb77e5f..ddfe675d412 100644
--- a/code/modules/antagonists/nightmare/nightmare_organs.dm
+++ b/code/modules/antagonists/nightmare/nightmare_organs.dm
@@ -4,7 +4,7 @@
 #define HEART_SPECIAL_SHADOWIFY 2
 
 
-/obj/item/organ/internal/brain/shadow/nightmare
+/obj/item/organ/brain/shadow/nightmare
 	name = "tumorous mass"
 	desc = "A fleshy growth that was dug out of the skull of a Nightmare."
 	icon = 'icons/obj/medical/organs/organs.dmi'
@@ -15,7 +15,7 @@
 	///Our associated terrorize spell, for antagonist nightmares
 	var/datum/action/cooldown/spell/pointed/terrorize/terrorize_spell
 
-/obj/item/organ/internal/brain/shadow/nightmare/on_mob_insert(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/shadow/nightmare/on_mob_insert(mob/living/carbon/brain_owner)
 	. = ..()
 
 	if(brain_owner.dna.species.id != SPECIES_NIGHTMARE)
@@ -29,7 +29,7 @@
 		terrorize_spell = new(src)
 		terrorize_spell.Grant(brain_owner)
 
-/obj/item/organ/internal/brain/shadow/nightmare/on_mob_remove(mob/living/carbon/brain_owner)
+/obj/item/organ/brain/shadow/nightmare/on_mob_remove(mob/living/carbon/brain_owner)
 	. = ..()
 	QDEL_NULL(our_jaunt)
 	QDEL_NULL(terrorize_spell)
@@ -62,7 +62,7 @@
 	playsound(source, SFX_BULLET_MISS, 75, TRUE)
 	return COMPONENT_BULLET_PIERCED
 
-/obj/item/organ/internal/heart/nightmare
+/obj/item/organ/heart/nightmare
 	name = "heart of darkness"
 	desc = "An alien organ that twists and writhes when exposed to light."
 	visual = TRUE
@@ -72,13 +72,13 @@
 	color = COLOR_CRAYON_BLACK
 	decay_factor = 0
 	// No love is to be found in a heart so twisted.
-	food_reagents = list(/datum/reagent/consumable/nutriment = 5)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5)
 	/// How many life ticks in the dark the owner has been dead for. Used for nightmare respawns.
 	var/respawn_progress = 0
 	/// The armblade granted to the host of this heart.
 	var/obj/item/light_eater/blade
 
-/obj/item/organ/internal/heart/nightmare/attack(mob/M, mob/living/carbon/user, obj/target)
+/obj/item/organ/heart/nightmare/attack(mob/M, mob/living/carbon/user, obj/target)
 	if(M != user)
 		return ..()
 	user.visible_message(
@@ -94,23 +94,23 @@
 	user.temporarilyRemoveItemFromInventory(src, TRUE)
 	Insert(user)
 
-/obj/item/organ/internal/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special)
+/obj/item/organ/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special)
 	. = ..()
 	if(special != HEART_SPECIAL_SHADOWIFY)
 		blade = new/obj/item/light_eater
 		heart_owner.put_in_hands(blade)
 
-/obj/item/organ/internal/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special)
+/obj/item/organ/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special)
 	. = ..()
 	respawn_progress = 0
 	if(blade && special != HEART_SPECIAL_SHADOWIFY)
 		heart_owner.visible_message(span_warning("\The [blade] disintegrates!"))
 		QDEL_NULL(blade)
 
-/obj/item/organ/internal/heart/nightmare/Stop()
+/obj/item/organ/heart/nightmare/Stop()
 	return FALSE
 
-/obj/item/organ/internal/heart/nightmare/on_death(seconds_per_tick, times_fired)
+/obj/item/organ/heart/nightmare/on_death(seconds_per_tick, times_fired)
 	if(!owner)
 		return
 	var/turf/T = get_turf(owner)
@@ -134,7 +134,7 @@
 	playsound(owner, 'sound/effects/hallucinations/far_noise.ogg', 50, TRUE)
 	respawn_progress = 0
 
-/obj/item/organ/internal/heart/nightmare/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/heart/nightmare/get_availability(datum/species/owner_species, mob/living/owner_mob)
 	if(isnightmare(owner_mob))
 		return TRUE
 	return ..()
diff --git a/code/modules/antagonists/nightmare/nightmare_species.dm b/code/modules/antagonists/nightmare/nightmare_species.dm
index 38db2dfae86..e81819e44fc 100644
--- a/code/modules/antagonists/nightmare/nightmare_species.dm
+++ b/code/modules/antagonists/nightmare/nightmare_species.dm
@@ -24,8 +24,8 @@
 		TRAIT_NEVER_WOUNDED,
 	)
 
-	mutantheart = /obj/item/organ/internal/heart/nightmare
-	mutantbrain = /obj/item/organ/internal/brain/shadow/nightmare
+	mutantheart = /obj/item/organ/heart/nightmare
+	mutantbrain = /obj/item/organ/brain/shadow/nightmare
 	bodypart_overrides = list(
 		BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/shadow/nightmare,
 		BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/shadow/nightmare,
diff --git a/code/modules/antagonists/obsessed/obsessed.dm b/code/modules/antagonists/obsessed/obsessed.dm
index ff4232ab2dc..cd58d6fec5d 100644
--- a/code/modules/antagonists/obsessed/obsessed.dm
+++ b/code/modules/antagonists/obsessed/obsessed.dm
@@ -41,7 +41,7 @@
 	if(!istype(C))
 		to_chat(admin, "[roundend_category] come from a brain trauma, so they need to at least be a carbon!")
 		return
-	if(!C.get_organ_by_type(/obj/item/organ/internal/brain)) // If only I had a brain
+	if(!C.get_organ_by_type(/obj/item/organ/brain)) // If only I had a brain
 		to_chat(admin, "[roundend_category] come from a brain trauma, so they need to HAVE A BRAIN.")
 		return
 	message_admins("[key_name_admin(admin)] made [key_name_admin(new_owner)] into [name].")
diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm
index dc35b766843..a339b0cc264 100644
--- a/code/modules/antagonists/revolution/revolution.dm
+++ b/code/modules/antagonists/revolution/revolution.dm
@@ -186,7 +186,7 @@
 /datum/antagonist/rev/head/on_removal()
 	if(give_hud)
 		var/mob/living/carbon/C = owner.current
-		var/obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate/S = C.get_organ_slot(ORGAN_SLOT_HUD)
+		var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/S = C.get_organ_slot(ORGAN_SLOT_HUD)
 		if(S)
 			S.Remove(C)
 	return ..()
@@ -365,7 +365,7 @@
 			to_chat(carbon_owner, "The Syndicate were unfortunately unable to get you a flash.")
 
 	if(give_hud)
-		var/obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate/hud = new()
+		var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/hud = new()
 		hud.Insert(carbon_owner)
 		if(carbon_owner.get_quirk(/datum/quirk/body_purist))
 			to_chat(carbon_owner, "Being a body purist, you would never accept cybernetic implants. Upon hearing this, your employers signed you up for a special program, which... for \
diff --git a/code/modules/antagonists/spy/spy_bounty.dm b/code/modules/antagonists/spy/spy_bounty.dm
index ccab7952a9c..1aa318fb682 100644
--- a/code/modules/antagonists/spy/spy_bounty.dm
+++ b/code/modules/antagonists/spy/spy_bounty.dm
@@ -621,10 +621,10 @@
 		/obj/item/bodypart/arm/right,
 		/obj/item/bodypart/leg/left,
 		/obj/item/bodypart/leg/right,
-		/obj/item/organ/internal/stomach,
-		/obj/item/organ/internal/appendix,
-		/obj/item/organ/internal/liver,
-		/obj/item/organ/internal/eyes,
+		/obj/item/organ/stomach,
+		/obj/item/organ/appendix,
+		/obj/item/organ/liver,
+		/obj/item/organ/eyes,
 	)
 	return ..()
 
diff --git a/code/modules/antagonists/traitor/objectives/eyesnatching.dm b/code/modules/antagonists/traitor/objectives/eyesnatching.dm
index 7d664b20d36..2ddad4913f0 100644
--- a/code/modules/antagonists/traitor/objectives/eyesnatching.dm
+++ b/code/modules/antagonists/traitor/objectives/eyesnatching.dm
@@ -81,7 +81,7 @@
 				continue
 
 		var/mob/living/carbon/human/targets_current = possible_target.current
-		if(!targets_current.get_organ_by_type(/obj/item/organ/internal/eyes))
+		if(!targets_current.get_organ_by_type(/obj/item/organ/eyes))
 			continue
 
 		possible_targets += possible_target
@@ -110,7 +110,7 @@
 	AddComponent(/datum/component/traitor_objective_register, target, fail_signals = list(COMSIG_QDELETING))
 	return TRUE
 
-/datum/traitor_objective/target_player/eyesnatching/proc/check_eye_removal(datum/source, obj/item/organ/internal/eyes/removed)
+/datum/traitor_objective/target_player/eyesnatching/proc/check_eye_removal(datum/source, obj/item/organ/eyes/removed)
 	SIGNAL_HANDLER
 
 	if(!istype(removed))
@@ -159,7 +159,7 @@
 	if(used || !istype(target) || !target.Adjacent(user)) //Works only once, no TK use
 		return ..()
 
-	var/obj/item/organ/internal/eyes/eyeballies = target.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyeballies = target.get_organ_slot(ORGAN_SLOT_EYES)
 	var/obj/item/bodypart/head/head = target.get_bodypart(BODY_ZONE_HEAD)
 
 	if(!head || !eyeballies || target.is_eyes_covered())
@@ -224,7 +224,7 @@
 	if(used)
 		. += span_notice("It has been used up.")
 
-/obj/item/eyesnatcher/proc/eyeballs_exist(obj/item/organ/internal/eyes/eyeballies, obj/item/bodypart/head/head, mob/living/carbon/human/target)
+/obj/item/eyesnatcher/proc/eyeballs_exist(obj/item/organ/eyes/eyeballies, obj/item/bodypart/head/head, mob/living/carbon/human/target)
 	if(!eyeballies || QDELETED(eyeballies))
 		return FALSE
 	if(!head || QDELETED(head))
@@ -232,7 +232,7 @@
 
 	if(eyeballies.owner != target)
 		return FALSE
-	var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
 	//got different eyes or doesn't own the head... somehow
 	if(head.owner != target || eyes != eyeballies)
 		return FALSE
diff --git a/code/modules/antagonists/voidwalker/voidwalker_organs.dm b/code/modules/antagonists/voidwalker/voidwalker_organs.dm
index e6e3d028ac8..23f1c6fb2fe 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_organs.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_organs.dm
@@ -1,5 +1,5 @@
 /// Voidwalker eyes with nightvision and thermals
-/obj/item/organ/internal/eyes/voidwalker
+/obj/item/organ/eyes/voidwalker
 	name = "blackened orbs"
 	desc = "These orbs will withstand the light of the sun, yet still see within the darkest voids."
 	eye_icon_state = null
@@ -9,7 +9,7 @@
 	sight_flags = SEE_MOBS
 
 /// Voidwalker brain stacked with a lot of the abilities
-/obj/item/organ/internal/brain/voidwalker
+/obj/item/organ/brain/voidwalker
 	name = "cosmic brain"
 	desc = "A mind fully integrated into the cosmic thread."
 	icon = 'icons/obj/medical/organs/shadow_organs.dmi'
@@ -30,7 +30,7 @@
 	/// Our brain transmit telepathy spell
 	var/datum/action/transmit = /datum/action/cooldown/spell/list_target/telepathy/voidwalker
 
-/obj/item/organ/internal/brain/voidwalker/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/brain/voidwalker/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 
 	RegisterSignal(organ_owner, COMSIG_ATOM_ENTERING, PROC_REF(on_atom_entering))
@@ -52,7 +52,7 @@
 	glass_breaker = new/obj/item/void_eater
 	organ_owner.put_in_hands(glass_breaker)
 
-/obj/item/organ/internal/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 
 	UnregisterSignal(organ_owner, COMSIG_ENTER_AREA)
@@ -75,7 +75,7 @@
 	if(glass_breaker)
 		qdel(glass_breaker)
 
-/obj/item/organ/internal/brain/voidwalker/proc/on_atom_entering(mob/living/carbon/organ_owner, atom/entering)
+/obj/item/organ/brain/voidwalker/proc/on_atom_entering(mob/living/carbon/organ_owner, atom/entering)
 	SIGNAL_HANDLER
 
 	if(!isturf(entering))
@@ -90,7 +90,7 @@
 	else
 		organ_owner.remove_movespeed_modifier(speed_modifier)
 
-/obj/item/organ/internal/brain/voidwalker/on_death()
+/obj/item/organ/brain/voidwalker/on_death()
 	. = ..()
 
 	var/turf/spawn_loc = get_turf(owner)
diff --git a/code/modules/antagonists/voidwalker/voidwalker_species.dm b/code/modules/antagonists/voidwalker/voidwalker_species.dm
index 5b50c3da69e..8c417c97773 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_species.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_species.dm
@@ -35,8 +35,8 @@
 
 	no_equip_flags = ITEM_SLOT_OCLOTHING | ITEM_SLOT_ICLOTHING | ITEM_SLOT_GLOVES | ITEM_SLOT_MASK | ITEM_SLOT_HEAD | ITEM_SLOT_FEET | ITEM_SLOT_BACK | ITEM_SLOT_EARS | ITEM_SLOT_EYES
 
-	mutantbrain = /obj/item/organ/internal/brain/voidwalker
-	mutanteyes = /obj/item/organ/internal/eyes/voidwalker
+	mutantbrain = /obj/item/organ/brain/voidwalker
+	mutanteyes = /obj/item/organ/eyes/voidwalker
 	mutantheart = null
 	mutantlungs = null
 	mutanttongue = null
diff --git a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
index 7bc369f8993..33566293487 100644
--- a/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
+++ b/code/modules/antagonists/voidwalker/voidwalker_void_eater.dm
@@ -63,7 +63,7 @@
 			hewmon.balloon_alert(user, "shattering...")
 			if(do_after(user, 4 SECONDS, hewmon))
 				new /obj/effect/spawner/random/glass_shards (spawnloc)
-				var/obj/item/organ/brain = hewmon.get_organ_by_type(/obj/item/organ/internal/brain)
+				var/obj/item/organ/brain = hewmon.get_organ_by_type(/obj/item/organ/brain)
 				if(brain)
 					brain.Remove(hewmon)
 					brain.forceMove(spawnloc)
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index ef2a40636d0..e56f651a095 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -311,7 +311,7 @@
 	head = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionnaire)
 
 //Provides a decent heal, need to pump every 6 seconds
-/obj/item/organ/internal/heart/cursed/wizard
+/obj/item/organ/heart/cursed/wizard
 	pump_delay = 6 SECONDS
 	heal_brute = 25
 	heal_burn = 25
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index 6e448637dba..88b21cf8971 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -313,7 +313,7 @@
 	var/datum/weakref/arm
 
 /obj/item/assembly/flash/armimplant/burn_out()
-	var/obj/item/organ/internal/cyberimp/arm/flash/real_arm = arm.resolve()
+	var/obj/item/organ/cyberimp/arm/flash/real_arm = arm.resolve()
 	if(real_arm?.owner)
 		to_chat(real_arm.owner, span_warning("Your photon projector implant overheats and deactivates!"))
 		real_arm.Retract()
@@ -322,7 +322,7 @@
 
 /obj/item/assembly/flash/armimplant/try_use_flash(mob/user = null)
 	if(overheat)
-		var/obj/item/organ/internal/cyberimp/arm/flash/real_arm = arm.resolve()
+		var/obj/item/organ/cyberimp/arm/flash/real_arm = arm.resolve()
 		if(real_arm?.owner)
 			to_chat(real_arm.owner, span_warning("Your photon projector is running too hot to be used again so quickly!"))
 		return FALSE
diff --git a/code/modules/awaymissions/pamphlet.dm b/code/modules/awaymissions/pamphlet.dm
index be8aa9de890..67a56ed9b32 100644
--- a/code/modules/awaymissions/pamphlet.dm
+++ b/code/modules/awaymissions/pamphlet.dm
@@ -53,7 +53,7 @@
 		cybernetic augments by Synthman Co. to you in this rare exclusive offer! With this letter, you are being gifted a \
 		special limited edition choice NTSDA-certified grade-A cybernetic implant, FREE OF CHARGE! Build up your body to \
 		GREATNESS with Synthman's new exclusive line of cybernetic products! Become greater, stronger, and BETTER today!"
-	var/obj/item/organ/internal/heart/cybernetic/sample
+	var/obj/item/organ/heart/cybernetic/sample
 
 /obj/item/paper/pamphlet/cybernetics/Initialize(mapload)
 	. = ..()
diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm
index cc66fa72196..357dba08bb9 100644
--- a/code/modules/bitrunning/server/obj_generation.dm
+++ b/code/modules/bitrunning/server/obj_generation.dm
@@ -187,7 +187,7 @@
 	if(failed)
 		to_chat(neo, span_warning("One of your disks failed to load. Check for duplicate or inactive disks."))
 
-	var/obj/item/organ/internal/brain/neo_brain = neo.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/neo_brain = neo.get_organ_slot(ORGAN_SLOT_BRAIN)
 	for(var/obj/item/skillchip/skill_chip as anything in neo_brain?.skillchips)
 		if(!skill_chip.active)
 			continue
diff --git a/code/modules/cargo/bounties/medical.dm b/code/modules/cargo/bounties/medical.dm
index 5205c2afc22..3483c28d8d5 100644
--- a/code/modules/cargo/bounties/medical.dm
+++ b/code/modules/cargo/bounties/medical.dm
@@ -3,11 +3,11 @@
 	description = "Commander Johnson is in critical condition after suffering yet another heart attack. Doctors say he needs a new heart fast. Ship one, pronto! We'll take a cybernetic one if need be, but only if it's upgraded."
 	reward = CARGO_CRATE_VALUE * 5
 	wanted_types = list(
-		/obj/item/organ/internal/heart = TRUE,
-		/obj/item/organ/internal/heart/synth = FALSE,
-		/obj/item/organ/internal/heart/cybernetic = FALSE,
-		/obj/item/organ/internal/heart/cybernetic/tier2 = TRUE,
-		/obj/item/organ/internal/heart/cybernetic/tier3 = TRUE,
+		/obj/item/organ/heart = TRUE,
+		/obj/item/organ/heart/synth = FALSE, // NOVA EDIT ADDITION
+		/obj/item/organ/heart/cybernetic = FALSE,
+		/obj/item/organ/heart/cybernetic/tier2 = TRUE,
+		/obj/item/organ/heart/cybernetic/tier3 = TRUE,
 	)
 
 /datum/bounty/item/medical/lung
@@ -16,18 +16,18 @@
 	reward = CARGO_CRATE_VALUE * 10
 	required_count = 3
 	wanted_types = list(
-		/obj/item/organ/internal/lungs = TRUE,
-		/obj/item/organ/internal/lungs/synth = FALSE,
-		/obj/item/organ/internal/lungs/cybernetic = FALSE,
-		/obj/item/organ/internal/lungs/cybernetic/tier2 = TRUE,
-		/obj/item/organ/internal/lungs/cybernetic/tier3 = TRUE,
+		/obj/item/organ/lungs = TRUE,
+		/obj/item/organ/lungs/synth = FALSE, // NOVA EDIT ADDITION
+		/obj/item/organ/lungs/cybernetic = FALSE,
+		/obj/item/organ/lungs/cybernetic/tier2 = TRUE,
+		/obj/item/organ/lungs/cybernetic/tier3 = TRUE,
 	)
 
 /datum/bounty/item/medical/appendix
 	name = "Appendix"
 	description = "Chef Gibb of Central Command wants to prepare a meal using a very special delicacy: an appendix. If you ship one, he'll pay."
 	reward = CARGO_CRATE_VALUE * 5 //there are no synthetic appendixes
-	wanted_types = list(/obj/item/organ/internal/appendix = TRUE)
+	wanted_types = list(/obj/item/organ/appendix = TRUE)
 
 /datum/bounty/item/medical/ears
 	name = "Ears"
@@ -35,12 +35,12 @@
 	reward = CARGO_CRATE_VALUE * 10
 	required_count = 3
 	wanted_types = list(
-		/obj/item/organ/internal/ears = TRUE,
-		/obj/item/organ/internal/ears/synth = FALSE,
-		/obj/item/organ/internal/ears/cybernetic = FALSE,
-		/obj/item/organ/internal/ears/cybernetic/upgraded = TRUE,
-		/obj/item/organ/internal/ears/cybernetic/whisper = TRUE,
-		/obj/item/organ/internal/ears/cybernetic/xray = TRUE,
+		/obj/item/organ/ears = TRUE,
+		/obj/item/organ/ears/synth = FALSE, // NOVA EDIT ADDITION
+		/obj/item/organ/ears/cybernetic = FALSE,
+		/obj/item/organ/ears/cybernetic/upgraded = TRUE,
+		/obj/item/organ/ears/cybernetic/whisper = TRUE,
+		/obj/item/organ/ears/cybernetic/xray = TRUE,
 	)
 
 /datum/bounty/item/medical/liver
@@ -49,11 +49,11 @@
 	reward = CARGO_CRATE_VALUE * 10
 	required_count = 3
 	wanted_types = list(
-		/obj/item/organ/internal/liver = TRUE,
-		/obj/item/organ/internal/liver/synth = FALSE,
-		/obj/item/organ/internal/liver/cybernetic = FALSE,
-		/obj/item/organ/internal/liver/cybernetic/tier2 = TRUE,
-		/obj/item/organ/internal/liver/cybernetic/tier3 = TRUE,
+		/obj/item/organ/liver = TRUE,
+		/obj/item/organ/liver/synth = FALSE, // NOVA EDIT ADDITION
+		/obj/item/organ/liver/cybernetic = FALSE,
+		/obj/item/organ/liver/cybernetic/tier2 = TRUE,
+		/obj/item/organ/liver/cybernetic/tier3 = TRUE,
 	)
 
 /datum/bounty/item/medical/eye
@@ -62,9 +62,9 @@
 	reward = CARGO_CRATE_VALUE * 10
 	required_count = 3
 	wanted_types = list(
-		/obj/item/organ/internal/eyes = TRUE,
-		/obj/item/organ/internal/eyes/synth = FALSE,
-		/obj/item/organ/internal/eyes/robotic = FALSE,
+		/obj/item/organ/eyes = TRUE,
+		/obj/item/organ/eyes/synth = FALSE, // NOVA EDIT ADDITION
+		/obj/item/organ/eyes/robotic = FALSE,
 	)
 
 /datum/bounty/item/medical/tongue
@@ -72,22 +72,25 @@
 	description = "A recent attack by Mime extremists has left staff at Station 23 speechless. Ship some spare tongues."
 	reward = CARGO_CRATE_VALUE * 10
 	required_count = 3
+	// wanted_types = list(/obj/item/organ/tongue = TRUE) // NOVA EDIT REMOVAL
+	// NOVA EDIT ADDITION START
 	wanted_types = list(
-		/obj/item/organ/internal/tongue = TRUE,
-		/obj/item/organ/internal/tongue/synth = FALSE,
+		/obj/item/organ/tongue = TRUE,
+		/obj/item/organ/tongue/synth = FALSE,
 	)
+	// NOVA EDIT ADDITION END
 
 /datum/bounty/item/medical/lizard_tail
 	name = "Lizard Tail"
 	description = "The Wizard Federation has made off with Nanotrasen's supply of lizard tails. While CentCom is dealing with the wizards, can the station spare a tail of their own?"
 	reward = CARGO_CRATE_VALUE * 6
-	wanted_types = list(/obj/item/organ/external/tail/lizard = TRUE)
+	wanted_types = list(/obj/item/organ/tail/lizard = TRUE)
 
 /datum/bounty/item/medical/cat_tail
 	name = "Cat Tail"
 	description = "Central Command has run out of heavy duty pipe cleaners. Can you ship over a cat tail to help us out?"
 	reward = CARGO_CRATE_VALUE * 6
-	wanted_types = list(/obj/item/organ/external/tail/cat = TRUE)
+	wanted_types = list(/obj/item/organ/tail/cat = TRUE)
 
 /datum/bounty/item/medical/chainsaw
 	name = "Chainsaw"
diff --git a/code/modules/cargo/bounties/special.dm b/code/modules/cargo/bounties/special.dm
index 268ac2ea033..8f395b5152f 100644
--- a/code/modules/cargo/bounties/special.dm
+++ b/code/modules/cargo/bounties/special.dm
@@ -4,12 +4,12 @@
 	reward = CARGO_CRATE_VALUE * 50
 	required_count = 3
 	wanted_types = list(
-		/obj/item/organ/internal/brain/alien = TRUE,
-		/obj/item/organ/internal/alien = TRUE,
-		/obj/item/organ/internal/body_egg/alien_embryo = TRUE,
-		/obj/item/organ/internal/liver/alien = TRUE,
-		/obj/item/organ/internal/tongue/alien = TRUE,
-		/obj/item/organ/internal/eyes/alien = TRUE,
+		/obj/item/organ/brain/alien = TRUE,
+		/obj/item/organ/alien = TRUE,
+		/obj/item/organ/body_egg/alien_embryo = TRUE,
+		/obj/item/organ/liver/alien = TRUE,
+		/obj/item/organ/tongue/alien = TRUE,
+		/obj/item/organ/eyes/alien = TRUE,
 	)
 
 /datum/bounty/item/syndicate_documents
diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm
index 7102db0dd8f..6b621beeaeb 100644
--- a/code/modules/cargo/exports/lavaland.dm
+++ b/code/modules/cargo/exports/lavaland.dm
@@ -8,10 +8,10 @@
 		/obj/item/immortality_talisman,
 		/obj/item/book_of_babel,
 		/obj/item/wisp_lantern,
-		/obj/item/organ/internal/cyberimp/arm/shard/katana,
+		/obj/item/organ/cyberimp/arm/shard/katana,
 		/obj/item/clothing/glasses/godeye,
 		/obj/item/clothing/neck/necklace/memento_mori,
-		/obj/item/organ/internal/heart/cursed/wizard,
+		/obj/item/organ/heart/cursed/wizard,
 		/obj/item/clothing/suit/hooded/cloak/drake,
 		/obj/item/ship_in_a_bottle,
 		/obj/item/clothing/shoes/clown_shoes/banana_shoes,
@@ -48,7 +48,7 @@
 	export_types = list(
 		/obj/item/hierophant_club,
 		/obj/item/melee/cleaving_saw,
-		/obj/item/organ/internal/vocal_cords/colossus,
+		/obj/item/organ/vocal_cords/colossus,
 		/obj/machinery/anomalous_crystal,
 		/obj/item/mayhem,
 		/obj/item/soulscythe,
diff --git a/code/modules/cargo/exports/organs.dm b/code/modules/cargo/exports/organs.dm
index 784af1c8574..ec042a8613e 100644
--- a/code/modules/cargo/exports/organs.dm
+++ b/code/modules/cargo/exports/organs.dm
@@ -4,51 +4,51 @@
 /datum/export/organ/heart
 	cost = CARGO_CRATE_VALUE * 0.2 //For the man who has everything and nothing.
 	unit_name = "humanoid heart"
-	export_types = list(/obj/item/organ/internal/heart)
+	export_types = list(/obj/item/organ/heart)
 
 /datum/export/organ/eyes
 	cost = CARGO_CRATE_VALUE * 0.1
 	unit_name = "humanoid eyes"
-	export_types = list(/obj/item/organ/internal/eyes)
+	export_types = list(/obj/item/organ/eyes)
 
 /datum/export/organ/ears
 	cost = CARGO_CRATE_VALUE * 0.1
 	unit_name = "humanoid ears"
-	export_types = list(/obj/item/organ/internal/ears)
+	export_types = list(/obj/item/organ/ears)
 
 /datum/export/organ/liver
 	cost = CARGO_CRATE_VALUE * 0.1
 	unit_name = "humanoid liver"
-	export_types = list(/obj/item/organ/internal/liver)
+	export_types = list(/obj/item/organ/liver)
 
 /datum/export/organ/lungs
 	cost = CARGO_CRATE_VALUE * 0.1
 	unit_name = "humanoid lungs"
-	export_types = list(/obj/item/organ/internal/lungs)
+	export_types = list(/obj/item/organ/lungs)
 
 /datum/export/organ/stomach
 	cost = CARGO_CRATE_VALUE * 0.1
 	unit_name = "humanoid stomach"
-	export_types = list(/obj/item/organ/internal/stomach)
+	export_types = list(/obj/item/organ/stomach)
 
 /datum/export/organ/tongue
 	cost = CARGO_CRATE_VALUE * 0.1
 	unit_name = "humanoid tounge"
-	export_types = list(/obj/item/organ/internal/tongue)
+	export_types = list(/obj/item/organ/tongue)
 
 /datum/export/organ/external/tail/lizard
 	cost = CARGO_CRATE_VALUE * 1.25
 	unit_name = "lizard tail"
-	export_types = list(/obj/item/organ/external/tail/lizard)
+	export_types = list(/obj/item/organ/tail/lizard)
 
 
 /datum/export/organ/external/tail/cat
 	cost = CARGO_CRATE_VALUE * 1.5
 	unit_name = "cat tail"
-	export_types = list(/obj/item/organ/external/tail/cat)
+	export_types = list(/obj/item/organ/tail/cat)
 
 /datum/export/organ/ears/cat
 	cost = CARGO_CRATE_VALUE
 	unit_name = "cat ears"
-	export_types = list(/obj/item/organ/internal/ears/cat)
+	export_types = list(/obj/item/organ/ears/cat)
 
diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm
index 3005cfd7fca..d021fa8665f 100644
--- a/code/modules/cargo/packs/medical.dm
+++ b/code/modules/cargo/packs/medical.dm
@@ -188,7 +188,7 @@
 	name = "Strong-Arm Implant Set"
 	desc = "A crate containing two implants, which can be surgically implanted to empower the strength of human arms. Warranty void if exposed to electromagnetic pulses."
 	cost = CARGO_CRATE_VALUE * 6
-	contains = list(/obj/item/organ/internal/cyberimp/arm/strongarm = 2)
+	contains = list(/obj/item/organ/cyberimp/arm/strongarm = 2)
 	crate_name = "Strong-Arm implant crate"
 	discountable = SUPPLY_PACK_RARE_DISCOUNTABLE
 
diff --git a/code/modules/client/preferences/species.dm b/code/modules/client/preferences/species.dm
index 9829a929213..de609d360c7 100644
--- a/code/modules/client/preferences/species.dm
+++ b/code/modules/client/preferences/species.dm
@@ -38,7 +38,7 @@
 	target.dna.update_body_size()
 
 	for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS))
-		var/obj/item/organ/external/genital/gent = target.get_organ_slot(organ_key)
+		var/obj/item/organ/genital/gent = target.get_organ_slot(organ_key)
 		if(gent)
 			gent.aroused = prefs.arousal_preview
 			gent.update_sprite_suffix()
diff --git a/code/modules/client/preferences/species_features/basic.dm b/code/modules/client/preferences/species_features/basic.dm
index 21459697f86..e2802b3d29d 100644
--- a/code/modules/client/preferences/species_features/basic.dm
+++ b/code/modules/client/preferences/species_features/basic.dm
@@ -32,20 +32,18 @@
 	if(!hetero)
 		target.eye_color_right = value
 
-	var/obj/item/organ/internal/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/eyes)
 	if (!eyes_organ || !istype(eyes_organ))
 		return
 
 	if (!initial(eyes_organ.eye_color_left))
 		eyes_organ.eye_color_left = value
-	eyes_organ.old_eye_color_left = value
 
 	if(hetero) // Don't override the snowflakes please
 		return
 
 	if (!initial(eyes_organ.eye_color_right))
 		eyes_organ.eye_color_right = value
-	eyes_organ.old_eye_color_right = value
 	eyes_organ.refresh()
 
 /datum/preference/color/eye_color/create_default_value()
diff --git a/code/modules/client/preferences/species_features/felinid.dm b/code/modules/client/preferences/species_features/felinid.dm
index ef2d49f33e8..0dcf1e4a383 100644
--- a/code/modules/client/preferences/species_features/felinid.dm
+++ b/code/modules/client/preferences/species_features/felinid.dm
@@ -4,7 +4,7 @@
 	savefile_identifier = PREFERENCE_CHARACTER
 	category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
 	can_randomize = FALSE
-	relevant_external_organ = /obj/item/organ/external/tail/cat
+	relevant_external_organ = /obj/item/organ/tail/cat
 
 /datum/preference/choiced/tail_felinid/init_possible_values()
 	return assoc_to_keys_features(SSaccessories.tails_list_felinid)
@@ -21,7 +21,7 @@
 	savefile_identifier = PREFERENCE_CHARACTER
 	category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
 	can_randomize = FALSE
-	relevant_external_organ = /obj/item/organ/internal/ears/cat
+	relevant_external_organ = /obj/item/organ/ears/cat
 
 /datum/preference/choiced/felinid_ears/init_possible_values()
 	return assoc_to_keys_features(SSaccessories.ears_list)
diff --git a/code/modules/client/preferences/species_features/lizard.dm b/code/modules/client/preferences/species_features/lizard.dm
index dd9ebe437b4..18b28d1b85b 100644
--- a/code/modules/client/preferences/species_features/lizard.dm
+++ b/code/modules/client/preferences/species_features/lizard.dm
@@ -160,7 +160,7 @@
 	savefile_key = "feature_lizard_spines"
 	savefile_identifier = PREFERENCE_CHARACTER
 	category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
-	relevant_external_organ = /obj/item/organ/external/spines
+	relevant_external_organ = /obj/item/organ/spines
 
 /datum/preference/choiced/lizard_spines/init_possible_values()
 	return assoc_to_keys_features(SSaccessories.spines_list)
@@ -172,7 +172,7 @@
 	savefile_key = "feature_lizard_tail"
 	savefile_identifier = PREFERENCE_CHARACTER
 	category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
-	relevant_external_organ = /obj/item/organ/external/tail/lizard
+	relevant_external_organ = /obj/item/organ/tail/lizard
 
 /datum/preference/choiced/lizard_tail/init_possible_values()
 	return assoc_to_keys_features(SSaccessories.tails_list_lizard)
diff --git a/code/modules/client/preferences/species_features/monkey.dm b/code/modules/client/preferences/species_features/monkey.dm
index 65bee35edef..845a8096158 100644
--- a/code/modules/client/preferences/species_features/monkey.dm
+++ b/code/modules/client/preferences/species_features/monkey.dm
@@ -3,7 +3,7 @@
 	savefile_key = "feature_monkey_tail"
 	savefile_identifier = PREFERENCE_CHARACTER
 	category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
-	relevant_external_organ = /obj/item/organ/external/tail/monkey
+	relevant_external_organ = /obj/item/organ/tail/monkey
 	can_randomize = FALSE
 
 /datum/preference/choiced/monkey_tail/init_possible_values()
diff --git a/code/modules/client/preferences/species_features/mushperson.dm b/code/modules/client/preferences/species_features/mushperson.dm
index a6a0c6a8fe1..e16c647f99e 100644
--- a/code/modules/client/preferences/species_features/mushperson.dm
+++ b/code/modules/client/preferences/species_features/mushperson.dm
@@ -3,7 +3,7 @@
 	savefile_key = "feature_mushperson_cap"
 	savefile_identifier = PREFERENCE_CHARACTER
 	category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
-	relevant_external_organ = /obj/item/organ/external/mushroom_cap
+	relevant_external_organ = /obj/item/organ/mushroom_cap
 
 /datum/preference/choiced/mushroom_cap/init_possible_values()
 	return assoc_to_keys_features(GLOB.caps_list)
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 9fd87da4635..44a71d6cd45 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -53,7 +53,7 @@
 /obj/item/clothing/glasses/proc/thermal_overload()
 	if(ishuman(src.loc))
 		var/mob/living/carbon/human/H = src.loc
-		var/obj/item/organ/internal/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES)
+		var/obj/item/organ/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES)
 		if(!H.is_blind())
 			if(H.glasses == src)
 				to_chat(H, span_danger("[src] overloads and blinds you!"))
@@ -456,7 +456,7 @@
 	if(!user.get_organ_slot(ORGAN_SLOT_EYES))
 		to_chat(user, span_warning("You have no eyes to apply the contacts to!"))
 		return
-	var/obj/item/organ/internal/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
 
 	to_chat(user, span_notice("You begin applying the contact lenses to your eyes..."))
 	if(!do_after(user, 3 SECONDS, src))
diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm
index f084b7e9a91..09df92bb8c4 100644
--- a/code/modules/clothing/gloves/special.dm
+++ b/code/modules/clothing/gloves/special.dm
@@ -216,7 +216,7 @@
 	var/mob/living/wearer = loc
 	var/stamina_exhaustion = 2 + challenge.difficulty * 0.02
 	var/is_heavy_gravity = wearer.has_gravity() > STANDARD_GRAVITY
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = wearer.get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = wearer.get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		stamina_exhaustion *= potential_spine.athletics_boost_multiplier
 	if(HAS_TRAIT(wearer, TRAIT_STRENGTH))
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index a15a59f05ad..640867a7c93 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -707,7 +707,7 @@
 	if(human_examined.is_mouth_covered())
 		final_message += "\tYou can't see [examining.p_their()] mouth."
 	else
-		var/obj/item/organ/internal/tongue/has_tongue = human_examined.get_organ_slot(ORGAN_SLOT_TONGUE)
+		var/obj/item/organ/tongue/has_tongue = human_examined.get_organ_slot(ORGAN_SLOT_TONGUE)
 		var/pill_count = 0
 		for(var/datum/action/item_action/activate_pill/pill in human_examined.actions)
 			pill_count++
@@ -724,7 +724,7 @@
 	if(human_examined.is_ears_covered())
 		final_message += "\tYou can't see [examining.p_their()] ears."
 	else
-		var/obj/item/organ/internal/ears/has_ears = human_examined.get_organ_slot(ORGAN_SLOT_EARS)
+		var/obj/item/organ/ears/has_ears = human_examined.get_organ_slot(ORGAN_SLOT_EARS)
 		if(has_ears)
 			if(has_ears.deaf)
 				final_message += "\tDamaged eardrums in [examining.p_their()] ear canals."
@@ -736,7 +736,7 @@
 	if(human_examined.is_eyes_covered())
 		final_message += "\tYou can't see [examining.p_their()] eyes."
 	else
-		var/obj/item/organ/internal/eyes/has_eyes = human_examined.get_organ_slot(ORGAN_SLOT_EYES)
+		var/obj/item/organ/eyes/has_eyes = human_examined.get_organ_slot(ORGAN_SLOT_EYES)
 		if(has_eyes)
 			final_message += "\tA pair of [has_eyes.damage ? "" : "healthy "][has_eyes.name]."
 		else
diff --git a/code/modules/clothing/head/tinfoilhat.dm b/code/modules/clothing/head/tinfoilhat.dm
index 74ce320a8ab..c1e6df6c30c 100644
--- a/code/modules/clothing/head/tinfoilhat.dm
+++ b/code/modules/clothing/head/tinfoilhat.dm
@@ -109,7 +109,7 @@
 		";WE REPEAT OUR LIVES DAILY WITHOUT FURTHER QUESTIONS!!"
 	)
 	user.say(pick(conspiracy_line), forced=type)
-	var/obj/item/organ/internal/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(brain)
 		brain.set_organ_damage(BRAIN_DAMAGE_DEATH)
 	return OXYLOSS
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index a02c7d1debf..6d97c116ab1 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -234,10 +234,10 @@
 	var/heart_strength
 	var/pulse_pressure
 
-	var/obj/item/organ/internal/heart/heart = carbon_patient.get_organ_slot(ORGAN_SLOT_HEART)
-	var/obj/item/organ/internal/lungs/lungs = carbon_patient.get_organ_slot(ORGAN_SLOT_LUNGS)
-	var/obj/item/organ/internal/liver/liver = carbon_patient.get_organ_slot(ORGAN_SLOT_LIVER)
-	var/obj/item/organ/internal/appendix/appendix = carbon_patient.get_organ_slot(ORGAN_SLOT_APPENDIX)
+	var/obj/item/organ/heart/heart = carbon_patient.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/lungs/lungs = carbon_patient.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/liver/liver = carbon_patient.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/appendix/appendix = carbon_patient.get_organ_slot(ORGAN_SLOT_APPENDIX)
 
 	var/render_list = list()//information will be packaged in a list for clean display to the user
 
diff --git a/code/modules/deathmatch/deathmatch_lobby.dm b/code/modules/deathmatch/deathmatch_lobby.dm
index a79bd3aa21d..8bd324a5b7b 100644
--- a/code/modules/deathmatch/deathmatch_lobby.dm
+++ b/code/modules/deathmatch/deathmatch_lobby.dm
@@ -156,7 +156,7 @@
 	// register death handling.
 	RegisterSignals(new_player, list(COMSIG_LIVING_DEATH, COMSIG_MOB_GHOSTIZED, COMSIG_QDELETING), PROC_REF(player_died))
 	// NOVA EDIT ADDITION START - Synth brains don't drop here - let them delete with the mob
-	var/obj/item/organ/internal/brain/synth/synth_brain = new_player.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/synth/synth_brain = new_player.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(istype(synth_brain))
 		synth_brain.drop_when_organ_spilling = FALSE
 	// NOVA EDIT ADDITION END
diff --git a/code/modules/events/brain_trauma.dm b/code/modules/events/brain_trauma.dm
index b9d1c4188b5..5a00436d0fc 100644
--- a/code/modules/events/brain_trauma.dm
+++ b/code/modules/events/brain_trauma.dm
@@ -17,7 +17,7 @@
 			continue
 		if(H.stat == DEAD) // What are you doing in this list
 			continue
-		if(!H.get_organ_by_type(/obj/item/organ/internal/brain)) // If only I had a brain
+		if(!H.get_organ_by_type(/obj/item/organ/brain)) // If only I had a brain
 			continue
 		if(!(H.mind.assigned_role.job_flags & JOB_CREW_MEMBER)) //please stop giving my centcom admin gimmicks full body paralysis
 			continue
diff --git a/code/modules/events/creep_awakening.dm b/code/modules/events/creep_awakening.dm
index 648c2cc9db0..0dfa87ddfa3 100644
--- a/code/modules/events/creep_awakening.dm
+++ b/code/modules/events/creep_awakening.dm
@@ -19,7 +19,7 @@
 			continue
 		if(H.mind.has_antag_datum(/datum/antagonist/obsessed))
 			continue
-		if(!H.get_organ_by_type(/obj/item/organ/internal/brain))
+		if(!H.get_organ_by_type(/obj/item/organ/brain))
 			continue
 		H.gain_trauma(/datum/brain_trauma/special/obsessed)
 		announce_to_ghosts(H)
diff --git a/code/modules/events/holiday/halloween.dm b/code/modules/events/holiday/halloween.dm
index 8cc87a60df5..833afd35bbc 100644
--- a/code/modules/events/holiday/halloween.dm
+++ b/code/modules/events/holiday/halloween.dm
@@ -61,5 +61,5 @@
 		/obj/item/food/candy,
 		/obj/item/food/candiedapple,
 		/obj/item/food/chocolatebar,
-		/obj/item/organ/internal/brain ) // OH GOD THIS ISN'T CANDY!
+		/obj/item/organ/brain ) // OH GOD THIS ISN'T CANDY!
 		new type(src)
diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm
index 0b4f5abf866..b5c7967de4e 100644
--- a/code/modules/experisci/experiment/experiments.dm
+++ b/code/modules/experisci/experiment/experiments.dm
@@ -437,7 +437,7 @@
 	. = ..()
 	if (!.)
 		return
-	var/obj/item/organ/internal/brain/scanned_brain = check.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/scanned_brain = check.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if (isnull(scanned_brain))
 		experiment_handler.announce_message("Subject is brainless!")
 		return FALSE
diff --git a/code/modules/experisci/handheld_scanner.dm b/code/modules/experisci/handheld_scanner.dm
index 390937e0dd4..67850aedd28 100644
--- a/code/modules/experisci/handheld_scanner.dm
+++ b/code/modules/experisci/handheld_scanner.dm
@@ -46,7 +46,7 @@
 
 /obj/item/experi_scanner/proc/make_meat_toilet(mob/living/carbon/user)
 	///The suicide victim's brain that will be placed inside the toilet's cistern
-	var/obj/item/organ/internal/brain/toilet_brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/toilet_brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
 	///The toilet we're about to unleash unto this cursed plane of existence
 	var/obj/structure/toilet/greyscale/result_toilet = new (drop_location())
 
diff --git a/code/modules/explorer_drone/exploration_events/trader.dm b/code/modules/explorer_drone/exploration_events/trader.dm
index c4d4b5ac94b..443ec5fd36d 100644
--- a/code/modules/explorer_drone/exploration_events/trader.dm
+++ b/code/modules/explorer_drone/exploration_events/trader.dm
@@ -89,7 +89,7 @@
 	requires_translator = FALSE
 	required_site_traits = list(EXPLORATION_SITE_HABITABLE,EXPLORATION_SITE_CIVILIZED)
 	band_values = list(EXOSCANNER_BAND_LIFE=1)
-	required_path = list(/obj/item/organ/internal/heart,/obj/item/organ/internal/liver,/obj/item/organ/internal/stomach,/obj/item/organ/internal/eyes)
+	required_path = list(/obj/item/organ/heart,/obj/item/organ/liver,/obj/item/organ/stomach,/obj/item/organ/eyes)
 	traded_path = list(/obj/item/implanter/explosive)
 	amount = 1
 
diff --git a/code/modules/food_and_drinks/recipes/soup_mixtures.dm b/code/modules/food_and_drinks/recipes/soup_mixtures.dm
index 88cb4d27e41..cefaf65bc32 100644
--- a/code/modules/food_and_drinks/recipes/soup_mixtures.dm
+++ b/code/modules/food_and_drinks/recipes/soup_mixtures.dm
@@ -661,7 +661,7 @@
 	required_reagents = list(/datum/reagent/water = 50)
 	required_ingredients = list(
 		/obj/item/food/grown/tomato = 2,
-		/obj/item/organ/internal/eyes = 1,
+		/obj/item/organ/eyes = 1,
 	)
 	results = list(
 		/datum/reagent/consumable/nutriment/soup/eyeball = 20,
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm
index 8f78cb01ebc..d0517272d77 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm
@@ -155,8 +155,8 @@
 /datum/crafting_recipe/food/breaddog
 	name = "Living dog/bread hybrid"
 	reqs = list(
-		/obj/item/organ/internal/brain = 1,
-		/obj/item/organ/internal/heart = 1,
+		/obj/item/organ/brain = 1,
+		/obj/item/organ/heart = 1,
 		/obj/item/food/bread/plain = 2,
 		/obj/item/food/meat/slab = 3,
 		/datum/reagent/blood = 30,
@@ -216,8 +216,8 @@
 	name = "Bread cat/bread hybrid"
 	reqs = list(
 		/obj/item/food/bread/plain = 1,
-		/obj/item/organ/internal/ears/cat = 1,
-		/obj/item/organ/external/tail/cat = 1,
+		/obj/item/organ/ears/cat = 1,
+		/obj/item/organ/tail/cat = 1,
 		/obj/item/food/meat/slab = 3,
 		/datum/reagent/blood = 50,
 		/datum/reagent/medicine/strange_reagent = 5
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
index 4e7c63413ec..2953f8408ac 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
@@ -39,7 +39,7 @@
 /datum/crafting_recipe/food/appendixburger
 	name = "Appendix burger"
 	reqs = list(
-		/obj/item/organ/internal/appendix = 1,
+		/obj/item/organ/appendix = 1,
 		/obj/item/food/bun = 1
 	)
 	result = /obj/item/food/burger/appendix
@@ -48,7 +48,7 @@
 /datum/crafting_recipe/food/brainburger
 	name = "Brain burger"
 	reqs = list(
-		/obj/item/organ/internal/brain = 1,
+		/obj/item/organ/brain = 1,
 		/obj/item/food/bun = 1
 	)
 	result = /obj/item/food/burger/brain
@@ -306,8 +306,8 @@
 	reqs = list(
 		/obj/item/food/bun = 1,
 		/obj/item/food/patty/plain = 1,
-		/obj/item/organ/internal/ears/cat = 1,
-		/obj/item/organ/external/tail/cat = 1,
+		/obj/item/organ/ears/cat = 1,
+		/obj/item/organ/tail/cat = 1,
 	)
 	result = /obj/item/food/burger/catburger
 	category = CAT_BURGER
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
index 4b56874eb7c..86956ba861c 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
@@ -90,7 +90,7 @@
 /datum/crafting_recipe/food/braincake
 	name = "Brain cake"
 	reqs = list(
-		/obj/item/organ/internal/brain = 1,
+		/obj/item/organ/brain = 1,
 		/obj/item/food/cake/plain = 1
 	)
 	result = /obj/item/food/cake/brain
@@ -218,8 +218,8 @@
 /datum/crafting_recipe/food/cak
 	name = "Living cat/cake hybrid"
 	reqs = list(
-		/obj/item/organ/internal/brain = 1,
-		/obj/item/organ/internal/heart = 1,
+		/obj/item/organ/brain = 1,
+		/obj/item/organ/heart = 1,
 		/obj/item/food/cake/birthday = 1,
 		/obj/item/food/meat/slab = 3,
 		/datum/reagent/blood = 30,
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm
index 5a754361ffb..5a7947c569e 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_drink.dm
@@ -11,10 +11,10 @@
 	name = "Lizard Wine"
 	time = 40
 	reqs = list(
-		/obj/item/organ/external/tail/lizard = 1,
+		/obj/item/organ/tail/lizard = 1,
 		/datum/reagent/consumable/ethanol = 100
 	)
-	blacklist = list(/obj/item/organ/external/tail/lizard/fake)
+	blacklist = list(/obj/item/organ/tail/lizard/fake)
 	result = /obj/item/reagent_containers/cup/glass/bottle/lizardwine
 	category = CAT_DRINK
 
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
index 7b253f32ce1..d9f9cd16fe9 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
@@ -25,11 +25,11 @@
 		/obj/item/food/grown/carrot = 1,
 		/obj/item/food/grown/chili = 1,
 		/obj/item/food/grown/onion = 1,
-		/obj/item/organ/internal/lungs = 1,
+		/obj/item/organ/lungs = 1,
 		/obj/item/reagent_containers/cup/bowl = 1,
 	)
 	blacklist = list(
-		/obj/item/organ/internal/lungs/cybernetic,
+		/obj/item/organ/lungs/cybernetic,
 	)
 
 	result = /obj/item/food/shredded_lungs
@@ -38,10 +38,10 @@
 /datum/crafting_recipe/food/tsatsikh
 	name = "Tsatsikh"
 	reqs = list(
-		/obj/item/organ/internal/heart = 1,
-		/obj/item/organ/internal/liver = 1,
-		/obj/item/organ/internal/lungs = 1,
-		/obj/item/organ/internal/stomach = 1,
+		/obj/item/organ/heart = 1,
+		/obj/item/organ/liver = 1,
+		/obj/item/organ/lungs = 1,
+		/obj/item/organ/stomach = 1,
 		/datum/reagent/consumable/salt = 2,
 		/datum/reagent/consumable/blackpepper = 2
 	)
@@ -51,7 +51,7 @@
 /datum/crafting_recipe/food/liver_pate
 	name = "Liver pate"
 	reqs = list(
-		/obj/item/organ/internal/liver = 1,
+		/obj/item/organ/liver = 1,
 		/obj/item/food/meat/rawcutlet = 1,
 		/obj/item/food/grown/onion = 1
 	)
@@ -104,8 +104,8 @@
 /datum/crafting_recipe/food/brain_pate
 	name = "Eyeball-and-brain pate"
 	reqs = list(
-		/obj/item/organ/internal/brain = 1,
-		/obj/item/organ/internal/eyes = 1,
+		/obj/item/organ/brain = 1,
+		/obj/item/organ/eyes = 1,
 		/obj/item/food/grown/onion = 1,
 		/datum/reagent/consumable/salt = 3
 	)
@@ -305,7 +305,7 @@
 		/obj/item/food/root_flatbread = 1,
 		/obj/item/food/grown/cucumber = 2,
 		/obj/item/food/egg = 1,
-		/obj/item/organ/internal/liver = 1
+		/obj/item/organ/liver = 1
 	)
 	result = /obj/item/food/pizza/flatbread/zmorgast
 	category = CAT_LIZARD
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
index 804956cbeed..9244f4c54f3 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
@@ -33,7 +33,7 @@
 	name = "Lizard tail kebab"
 	reqs = list(
 		/obj/item/stack/rods = 1,
-		/obj/item/organ/external/tail/lizard = 1
+		/obj/item/organ/tail/lizard = 1
 	)
 	result = /obj/item/food/kebab/tail
 	category = CAT_MEAT
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm
index 840d3a8c08b..3dbd7093a74 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_mexican.dm
@@ -107,7 +107,7 @@
 	time = 40
 	reqs = list(
 		/obj/item/food/meat/steak/goliath = 1,
-		/obj/item/organ/internal/monster_core/regenerative_core/legion = 1,
+		/obj/item/organ/monster_core/regenerative_core/legion = 1,
 		/datum/reagent/consumable/ketchup = 2,
 		/datum/reagent/consumable/capsaicin = 2
 	)
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
index 4b78482867a..86ae81e5bbd 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
@@ -154,8 +154,8 @@
 /datum/crafting_recipe/food/butterbear //ITS ALIVEEEEEE!
 	name = "Living bear/butter hybrid"
 	reqs = list(
-		/obj/item/organ/internal/brain = 1,
-		/obj/item/organ/internal/heart = 1,
+		/obj/item/organ/brain = 1,
+		/obj/item/organ/heart = 1,
 		/obj/item/food/butter = 4,
 		/obj/item/food/meat/slab = 5,
 		/datum/reagent/blood = 50,
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
index 8798f7cd880..522f6e9f695 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
@@ -423,7 +423,7 @@
 	time = 15
 	name = "Deluxe Meat-pocket"
 	reqs = list(
-		/obj/item/organ/internal/heart = 1,
+		/obj/item/organ/heart = 1,
 		/obj/item/food/meatball = 1,
 		/obj/item/food/meat/slab = 1,
 		/obj/item/food/grown/herbs = 1
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index 6e09ee3497c..db47c5625e3 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -39,7 +39,7 @@
 
 ///Clowns will always like bananas.
 /obj/item/food/grown/banana/proc/check_liked(mob/living/carbon/human/consumer)
-	var/obj/item/organ/internal/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
 	if (!HAS_TRAIT(consumer, TRAIT_AGEUSIA) && liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM))
 		return FOOD_LIKED
 
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index c95102d9b0e..b99ddaf7e94 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -159,7 +159,7 @@
 	if(length(mind_traits))
 		spawned.mind.add_traits(mind_traits, JOB_TRAIT)
 
-	var/obj/item/organ/internal/liver/liver = spawned.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = spawned.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && length(liver_traits))
 		liver.add_traits(liver_traits, JOB_TRAIT)
 
diff --git a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm
index d5eb15d0c47..a0e8bd47d3c 100644
--- a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm
+++ b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm
@@ -49,7 +49,7 @@
 
 /datum/outfit/job/assistant/gimmick/cyborg/post_equip(mob/living/carbon/human/equipped, visuals_only)
 	. = ..()
-	var/obj/item/organ/internal/tongue/robot/robotongue = new ()
+	var/obj/item/organ/tongue/robot/robotongue = new ()
 	robotongue.Insert(equipped, movement_flags = DELETE_IF_REPLACED)
 
 /datum/outfit/job/assistant/gimmick/skater
diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
index 069b36482ea..09d4bc28564 100644
--- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
+++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
@@ -45,7 +45,7 @@
 			rods[nullrod_type] = initial(nullrod_type.menu_description)
 		//special non-nullrod subtyped shit
 		rods[/obj/item/gun/ballistic/bow/divine/with_quiver] = "A divine bow and 10 quivered holy arrows."
-		rods[/obj/item/organ/internal/cyberimp/arm/shard/scythe] = "A shard that implants itself into your arm, \
+		rods[/obj/item/organ/cyberimp/arm/shard/scythe] = "A shard that implants itself into your arm, \
 									allowing you to conjure forth a vorpal scythe. \
 									Allows you to behead targets for empowered strikes. \
 									Harms you if you dismiss the scythe without first causing harm to a creature. \
diff --git a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
index e6f34b894b3..d2f6f61251d 100644
--- a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
+++ b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm
@@ -5,17 +5,17 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and
 #define SCYTHE_SATED 1
 #define SCYTHE_EMPOWERED 2
 
-/obj/item/organ/internal/cyberimp/arm/shard/scythe
+/obj/item/organ/cyberimp/arm/shard/scythe
 	name = "sinister shard"
 	desc = "This shard seems to be directly linked to some sinister entity. It might be your god! It also gives you a really horrible rash when you hold onto it for too long."
 	items_to_create = list(/obj/item/vorpalscythe)
 
-/obj/item/organ/internal/cyberimp/arm/shard/scythe/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/cyberimp/arm/shard/scythe/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	. = ..()
 	if(receiver.mind)
 		ADD_TRAIT(receiver.mind, TRAIT_MORBID, ORGAN_TRAIT)
 
-/obj/item/organ/internal/cyberimp/arm/shard/scythe/Retract()
+/obj/item/organ/cyberimp/arm/shard/scythe/Retract()
 	var/obj/item/vorpalscythe/scythe = active_item
 	if(!scythe)
 		return FALSE
diff --git a/code/modules/jobs/job_types/station_trait/human_ai.dm b/code/modules/jobs/job_types/station_trait/human_ai.dm
index b328679795a..f0626d11152 100644
--- a/code/modules/jobs/job_types/station_trait/human_ai.dm
+++ b/code/modules/jobs/job_types/station_trait/human_ai.dm
@@ -128,7 +128,7 @@
 	if(visuals_only)
 		return
 	if(!equipped.get_quirk(/datum/quirk/body_purist))
-		var/obj/item/organ/internal/tongue/robot/cybernetic = new()
+		var/obj/item/organ/tongue/robot/cybernetic = new()
 		cybernetic.Insert(equipped, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 		//you only get respect if you go all the way, man.
 		ADD_TRAIT(equipped, TRAIT_COMMISSIONED, INNATE_TRAIT)
diff --git a/code/modules/library/skill_learning/skill_station.dm b/code/modules/library/skill_learning/skill_station.dm
index 2dec45a6abf..dc42dd7db90 100644
--- a/code/modules/library/skill_learning/skill_station.dm
+++ b/code/modules/library/skill_learning/skill_station.dm
@@ -229,7 +229,7 @@
 		.["slots_max"] = null
 		return
 
-	var/obj/item/organ/internal/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
 
 	// If there's no brain, we don't need to worry either.
 	if(QDELETED(occupant_brain))
@@ -272,7 +272,7 @@
 				return TRUE
 			var/chipref = params["ref"]
 			var/mob/living/carbon/carbon_occupant = occupant
-			var/obj/item/organ/internal/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
+			var/obj/item/organ/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
 			if(QDELETED(carbon_occupant) || QDELETED(occupant_brain))
 				return TRUE
 			var/obj/item/skillchip/to_be_removed = locate(chipref) in occupant_brain.skillchips
@@ -297,7 +297,7 @@
 				stack_trace("[usr] tried to toggle skillchip activation when [src] was in an invalid state.")
 				return TRUE
 			var/mob/living/carbon/carbon_occupant = occupant
-			var/obj/item/organ/internal/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
+			var/obj/item/organ/brain/occupant_brain = carbon_occupant.get_organ_slot(ORGAN_SLOT_BRAIN)
 			if(QDELETED(carbon_occupant) || QDELETED(occupant_brain))
 				return TRUE
 			var/obj/item/skillchip/to_be_removed = locate(chipref) in occupant_brain.skillchips
diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm
index eddaf300e08..5ca3f784ecb 100644
--- a/code/modules/library/skill_learning/skillchip.dm
+++ b/code/modules/library/skill_learning/skillchip.dm
@@ -42,7 +42,7 @@
 	/// Set to TRUE when the skill chip's effects are applied. Set to FALSE when they're not.
 	var/active = FALSE
 	/// Brain that holds this skillchip.
-	var/obj/item/organ/internal/brain/holding_brain
+	var/obj/item/organ/brain/holding_brain
 
 /obj/item/skillchip/Initialize(mapload, is_removable = TRUE)
 	. = ..()
@@ -131,7 +131,7 @@
  * Arguments:
  * * owner_brain - The brain that this skillchip was implanted in to.
  */
-/obj/item/skillchip/proc/on_implant(obj/item/organ/internal/brain/owner_brain)
+/obj/item/skillchip/proc/on_implant(obj/item/organ/brain/owner_brain)
 	if(holding_brain)
 		CRASH("Skillchip is trying to be implanted into [owner_brain], but it's already implanted in [holding_brain]")
 
@@ -205,7 +205,7 @@
  * Arguments:
  * * skillchip - The skillchip you're intending to activate. Does not activate the chip.
  */
-/obj/item/skillchip/proc/has_activate_incompatibility(obj/item/organ/internal/brain/brain)
+/obj/item/skillchip/proc/has_activate_incompatibility(obj/item/organ/brain/brain)
 	if(QDELETED(brain))
 		return "No brain detected."
 
@@ -255,7 +255,7 @@
 		return "Incompatible lifeform detected."
 
 	// No brain
-	var/obj/item/organ/internal/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(QDELETED(brain))
 		return "No brain detected."
 
@@ -274,7 +274,7 @@
  * Arguments:
  * * brain - The brain to check for implantability with.
  */
-/obj/item/skillchip/proc/has_brain_incompatibility(obj/item/organ/internal/brain/brain)
+/obj/item/skillchip/proc/has_brain_incompatibility(obj/item/organ/brain/brain)
 	if(!istype(brain))
 		stack_trace("Attempted to check incompatibility with invalid brain object [brain].")
 		return "Incompatible brain."
diff --git a/code/modules/lost_crew/damages/decay.dm b/code/modules/lost_crew/damages/decay.dm
index 666e63d3bed..55674894474 100644
--- a/code/modules/lost_crew/damages/decay.dm
+++ b/code/modules/lost_crew/damages/decay.dm
@@ -11,7 +11,7 @@
 	// * 0.5 because life ticks happen about every 2 seconds (we really need a way to get the current life tickspeed)
 	var/decay_ticks = max_decay_time * severity * 0.5
 
-	for(var/obj/item/organ/internal/internal in body.organs)
+	for(var/obj/item/organ/internal in body.organs)
 		internal.apply_organ_damage(decay_ticks * internal.decay_factor)
 
 	return TRUE
diff --git a/code/modules/lost_crew/lost_crew_manager.dm b/code/modules/lost_crew/lost_crew_manager.dm
index c19b6c6bb13..a8930262731 100644
--- a/code/modules/lost_crew/lost_crew_manager.dm
+++ b/code/modules/lost_crew/lost_crew_manager.dm
@@ -57,7 +57,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new)
 	if(!HAS_TRAIT(new_body, TRAIT_HUSK))
 		paper.name = "DO NOT REMOVE BRAIN"
 		paper.add_raw_text("Body swapping is not covered by medical insurance for unhusked bodies. Chemical brain explosives have been administered to enforce stipend.")
-		var/obj/item/organ/internal/brain/boombrain = new_body.get_organ_by_type(/obj/item/organ/internal/brain)
+		var/obj/item/organ/brain/boombrain = new_body.get_organ_by_type(/obj/item/organ/brain)
 		//I swear to fuck I will explode you. you're not clever
 		//everyone thought of this, but I am the fool for having any faith
 		//in people actually wanting to play the job in an interesting manner
@@ -68,7 +68,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new)
 		paper.name = "BODYSWAPPING PERMITTED"
 		paper.add_raw_text("Body swapping is covered by medical insurance in case of husking and a lack of skill in the practictioner.")
 
-	var/obj/item/organ/internal/brain/hersens = new_body.get_organ_by_type(/obj/item/organ/internal/brain)
+	var/obj/item/organ/brain/hersens = new_body.get_organ_by_type(/obj/item/organ/brain)
 	hersens.AddComponent(
 		/datum/component/ghostrole_on_revive, \
 		/* refuse_revival_if_failed = */ TRUE, \
@@ -76,7 +76,7 @@ GLOBAL_DATUM_INIT(lost_crew_manager, /datum/lost_crew_manager, new)
 	)
 
 /// Set a timer for awarding succes and drop some awesome deathlore
-/datum/lost_crew_manager/proc/on_succesful_revive(obj/item/organ/internal/brain/brain, list/death_lore, list/datum/callback/on_revive_and_player_occupancy)
+/datum/lost_crew_manager/proc/on_succesful_revive(obj/item/organ/brain/brain, list/death_lore, list/datum/callback/on_revive_and_player_occupancy)
 	var/mob/living/carbon/human/owner = brain.owner
 
 	owner.mind.add_antag_datum(/datum/antagonist/recovered_crew) //for tracking mostly
diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm b/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm
index c49b5c13996..172c0e2f9e5 100644
--- a/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm
+++ b/code/modules/mapfluff/ruins/lavalandruin_code/syndicate_base.dm
@@ -29,13 +29,13 @@
 
 /obj/structure/closet/crate/secure/freezer/commsagent/PopulateContents()
 	. = ..() //Contains a variety of less exotic tongues (And tongue accessories) for the comms agent to mess with.
-	new /obj/item/organ/internal/tongue(src)
-	new /obj/item/organ/internal/tongue/lizard(src)
-	new /obj/item/organ/internal/tongue/fly(src)
-	new /obj/item/organ/internal/tongue/zombie(src)
-	new /obj/item/organ/internal/tongue/bone(src)
-	new /obj/item/organ/internal/tongue/robot(src) //DANGER! CRYSTAL HYPERSTRUCTURE-
-	new /obj/item/organ/internal/tongue/ethereal(src)
+	new /obj/item/organ/tongue(src)
+	new /obj/item/organ/tongue/lizard(src)
+	new /obj/item/organ/tongue/fly(src)
+	new /obj/item/organ/tongue/zombie(src)
+	new /obj/item/organ/tongue/bone(src)
+	new /obj/item/organ/tongue/robot(src) //DANGER! CRYSTAL HYPERSTRUCTURE-
+	new /obj/item/organ/tongue/ethereal(src)
 	new /obj/item/autosurgeon/syndicate/commsagent(src)
 	new /obj/item/book/granter/sign_language(src)
 	new	/obj/item/clothing/gloves/radio(src)
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
index a91d033f1ee..d40d9178f3a 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm
@@ -73,27 +73,27 @@
 	var/stored_organ
 	/// Types of organ we can spawn
 	var/static/list/allowed_organs = list(
-		/obj/item/organ/internal/heart/gland/egg = 7,
-		/obj/item/organ/internal/heart/gland/plasma = 7,
-		/obj/item/organ/internal/alien/plasmavessel = 5,
-		/obj/item/organ/internal/heart/gland/chem = 5,
-		/obj/item/organ/internal/heart/gland/mindshock = 5,
-		/obj/item/organ/internal/heart/gland/spiderman = 5,
-		/obj/item/organ/internal/heart/gland/transform = 5,
-		/obj/item/organ/internal/heart/gland/slime = 4,
-		/obj/item/organ/internal/heart/gland/trauma = 4,
-		/obj/item/organ/internal/heart/carp = 3,
-		/obj/item/organ/internal/heart/rat = 3,
-		/obj/item/organ/internal/heart/gland/electric = 3,
-		/obj/item/organ/internal/monster_core/brimdust_sac = 3,
-		/obj/item/organ/internal/monster_core/regenerative_core = 3,
-		/obj/item/organ/internal/monster_core/rush_gland = 3,
-		/obj/item/organ/internal/tongue/carp = 3,
-		/obj/item/organ/internal/alien/acid = 2,
-		/obj/item/organ/internal/alien/resinspinner = 2,
-		/obj/item/organ/internal/eyes/night_vision/goliath = 2,
-		/obj/item/organ/internal/eyes/night_vision/rat = 2,
-		/obj/item/organ/internal/heart/gland/ventcrawling = 1,
+		/obj/item/organ/heart/gland/egg = 7,
+		/obj/item/organ/heart/gland/plasma = 7,
+		/obj/item/organ/alien/plasmavessel = 5,
+		/obj/item/organ/heart/gland/chem = 5,
+		/obj/item/organ/heart/gland/mindshock = 5,
+		/obj/item/organ/heart/gland/spiderman = 5,
+		/obj/item/organ/heart/gland/transform = 5,
+		/obj/item/organ/heart/gland/slime = 4,
+		/obj/item/organ/heart/gland/trauma = 4,
+		/obj/item/organ/heart/carp = 3,
+		/obj/item/organ/heart/rat = 3,
+		/obj/item/organ/heart/gland/electric = 3,
+		/obj/item/organ/monster_core/brimdust_sac = 3,
+		/obj/item/organ/monster_core/regenerative_core = 3,
+		/obj/item/organ/monster_core/rush_gland = 3,
+		/obj/item/organ/tongue/carp = 3,
+		/obj/item/organ/alien/acid = 2,
+		/obj/item/organ/alien/resinspinner = 2,
+		/obj/item/organ/eyes/night_vision/goliath = 2,
+		/obj/item/organ/eyes/night_vision/rat = 2,
+		/obj/item/organ/heart/gland/ventcrawling = 1,
 	)
 
 /obj/structure/meateor_fluff/flesh_pod/Initialize(mapload)
diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm
index 36fdad25d84..ba135081532 100644
--- a/code/modules/meteors/meteor_types.dm
+++ b/code/modules/meteors/meteor_types.dm
@@ -379,7 +379,7 @@
 	hits = 2
 	heavy = TRUE
 	meteorsound = 'sound/effects/blob/blobattack.ogg'
-	meteordrop = list(/obj/item/food/meat/slab/human, /obj/item/food/meat/slab/human/mutant, /obj/item/organ/internal/heart, /obj/item/organ/internal/lungs, /obj/item/organ/internal/tongue, /obj/item/organ/internal/appendix/)
+	meteordrop = list(/obj/item/food/meat/slab/human, /obj/item/food/meat/slab/human/mutant, /obj/item/organ/heart, /obj/item/organ/lungs, /obj/item/organ/tongue, /obj/item/organ/appendix/)
 	var/meteorgibs = /obj/effect/gibspawner/generic
 	threat = 2
 	signature = "culinary material"
@@ -391,7 +391,7 @@
 			meteordrop += pick(subtypesof(path))
 
 	for(var/path in meteordrop)
-		if(path == /obj/item/organ/internal/tongue)
+		if(path == /obj/item/organ/tongue)
 			meteordrop -= path
 			meteordrop += pick(typesof(path))
 	return ..()
@@ -412,12 +412,12 @@
 //Meaty Ore Xeno edition
 /obj/effect/meteor/meaty/xeno
 	color = "#5EFF00"
-	meteordrop = list(/obj/item/food/meat/slab/xeno, /obj/item/organ/internal/tongue/alien)
+	meteordrop = list(/obj/item/food/meat/slab/xeno, /obj/item/organ/tongue/alien)
 	meteorgibs = /obj/effect/gibspawner/xeno
 	signature = "exotic culinary material"
 
 /obj/effect/meteor/meaty/xeno/Initialize(mapload)
-	meteordrop += subtypesof(/obj/item/organ/internal/alien)
+	meteordrop += subtypesof(/obj/item/organ/alien)
 	return ..()
 
 /obj/effect/meteor/meaty/xeno/ram_turf(turf/T)
diff --git a/code/modules/mining/boulder_processing/boulder.dm b/code/modules/mining/boulder_processing/boulder.dm
index 57a143a0d33..e345f870f78 100644
--- a/code/modules/mining/boulder_processing/boulder.dm
+++ b/code/modules/mining/boulder_processing/boulder.dm
@@ -9,7 +9,10 @@
 	icon_state = "ore"
 	icon = 'icons/obj/ore.dmi'
 	item_flags = NO_MAT_REDEMPTION | SLOWS_WHILE_IN_HAND
-	throw_range = 2
+	w_class = WEIGHT_CLASS_HUGE
+	throwforce = 30 // Under normal circumstances, pretty much nobody can throw this.
+	throw_range = 0
+	tk_throw_range = 1 // Sorry, this is too cheesy, but maybe you can smash down doors with it.
 	throw_speed = 0.5
 	slowdown = 1.5
 	drag_slowdown = 1.5 // It's still a big rock.
@@ -28,6 +31,7 @@
 	register_context()
 	AddComponent(/datum/component/two_handed, require_twohands = TRUE, force_unwielded = 0, force_wielded = 5) //Heavy as all hell, it's a boulder, dude.
 	AddComponent(/datum/component/sisyphus_awarder)
+	AddElement(/datum/element/bane, mob_biotypes = MOB_SPECIAL, added_damage = 20, requires_combat_mode = FALSE)
 
 /obj/item/boulder/Destroy(force)
 	SSore_generation.available_boulders -= src
@@ -144,6 +148,7 @@
 		to_chat(user, span_notice("You finish working on \the [src], and it crumbles into ore."))
 		playsound(src, 'sound/effects/rock/rock_break.ogg', 50)
 		user.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * 0.2)
+		user.mind?.adjust_experience(/datum/skill/athletics, MINING_SKILL_BOULDER_SIZE_XP * 0.2)
 		qdel(src)
 		return
 	var/msg = (durability == 1 ? "is crumbling!" : "looks weaker!")
diff --git a/code/modules/mining/equipment/monster_organs/brimdust_sac.dm b/code/modules/mining/equipment/monster_organs/brimdust_sac.dm
index 62a3acdb447..d6767fe913b 100644
--- a/code/modules/mining/equipment/monster_organs/brimdust_sac.dm
+++ b/code/modules/mining/equipment/monster_organs/brimdust_sac.dm
@@ -11,7 +11,7 @@
  * If implanted, you can shake off a cloud of brimdust to give this buff to people around you.area
  * It will also automatically grant you one stack every 30 seconds if you are on lavaland.
  */
-/obj/item/organ/internal/monster_core/brimdust_sac
+/obj/item/organ/monster_core/brimdust_sac
 	name = "brimdust sac"
 	desc = "A strange organ from a brimdemon. You can shake it out to coat yourself in explosive powder."
 	icon_state = "brim_sac"
@@ -24,16 +24,16 @@
 	/// You will gain a stack of the buff every x seconds
 	COOLDOWN_DECLARE(brimdust_auto_apply_cooldown)
 
-/obj/item/organ/internal/monster_core/brimdust_sac/Initialize(mapload)
+/obj/item/organ/monster_core/brimdust_sac/Initialize(mapload)
 	. = ..()
 	AddComponent(/datum/component/explodable, light_impact_range = 1)
 
-/obj/item/organ/internal/monster_core/brimdust_sac/apply_to(mob/living/target, mob/user)
+/obj/item/organ/monster_core/brimdust_sac/apply_to(mob/living/target, mob/user)
 	target.apply_status_effect(user_status, BRIMDUST_STACKS_ON_USE)
 	qdel(src)
 
 // Every x seconds, if on lavaland, add one stack
-/obj/item/organ/internal/monster_core/brimdust_sac/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/monster_core/brimdust_sac/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if(!COOLDOWN_FINISHED(src, brimdust_auto_apply_cooldown))
 		return
@@ -43,7 +43,7 @@
 	owner.apply_status_effect(user_status, BRIMDUST_STACKS_ON_LIFE)
 
 /// Make a cloud which applies brimdust to everyone nearby
-/obj/item/organ/internal/monster_core/brimdust_sac/on_triggered_internal()
+/obj/item/organ/monster_core/brimdust_sac/on_triggered_internal()
 	var/turf/origin_turf = get_turf(owner)
 	do_smoke(range = 2, holder = owner, location = origin_turf, smoke_type = /obj/effect/particle_effect/fluid/smoke/bad/brimdust)
 
diff --git a/code/modules/mining/equipment/monster_organs/monster_organ.dm b/code/modules/mining/equipment/monster_organs/monster_organ.dm
index 679f3f81dd6..b6bd54a361e 100644
--- a/code/modules/mining/equipment/monster_organs/monster_organ.dm
+++ b/code/modules/mining/equipment/monster_organs/monster_organ.dm
@@ -11,7 +11,7 @@
 /obj/item/mining_stabilizer/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
 	if(!isorgan(interacting_with))
 		return NONE
-	var/obj/item/organ/internal/monster_core/target_core = interacting_with
+	var/obj/item/organ/monster_core/target_core = interacting_with
 	if (!istype(target_core))
 		balloon_alert(user, "invalid target!")
 		return ITEM_INTERACT_BLOCKING
@@ -29,7 +29,7 @@
  * Generalised behaviour is that they will decay and become useless unless provided with serum.
  * These should usually do something both when used in-hand, or when implanted into someone.
  */
-/obj/item/organ/internal/monster_core
+/obj/item/organ/monster_core
 	name = "monster core"
 	desc = "All that remains of a monster. This abstract item should not spawn. \
 		It will rapidly decay into uselessness. but don't worry because it's already useless."
@@ -58,11 +58,11 @@
 	/// Status effect applied by this organ
 	var/datum/status_effect/user_status
 
-/obj/item/organ/internal/monster_core/Initialize(mapload)
+/obj/item/organ/monster_core/Initialize(mapload)
 	. = ..()
 	decay_timer = addtimer(CALLBACK(src, PROC_REF(go_inert)), time_to_decay, TIMER_STOPPABLE)
 
-/obj/item/organ/internal/monster_core/examine(mob/user)
+/obj/item/organ/monster_core/examine(mob/user)
 	. = ..()
 	if(!decay_timer)
 		return
@@ -79,11 +79,11 @@
 		if(0 SECONDS to 1 MINUTES)
 			. += span_warning("Signs of decay have set in, but it still looks alive. It's probably about to become unusable really quickly.")
 
-/obj/item/organ/internal/monster_core/Destroy(force)
+/obj/item/organ/monster_core/Destroy(force)
 	deltimer(decay_timer)
 	return ..()
 
-/obj/item/organ/internal/monster_core/mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags)
+/obj/item/organ/monster_core/mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags)
 	. = ..()
 
 	if (inert)
@@ -96,7 +96,7 @@
 	target_carbon.visible_message(span_notice("[src] stabilizes as it's inserted."))
 	return TRUE
 
-/obj/item/organ/internal/monster_core/mob_remove(mob/living/carbon/target_carbon, special, movement_flags)
+/obj/item/organ/monster_core/mob_remove(mob/living/carbon/target_carbon, special, movement_flags)
 	if (!inert && !special)
 		owner.visible_message(span_notice("[src] rapidly decays as it's removed."))
 		go_inert()
@@ -107,7 +107,7 @@
  * Returns true if successful.
  * * Implanted - If true, organ has just been inserted into someone.
  */
-/obj/item/organ/internal/monster_core/proc/preserve(implanted = FALSE)
+/obj/item/organ/monster_core/proc/preserve(implanted = FALSE)
 	if (inert)
 		return FALSE
 	deltimer(decay_timer)
@@ -118,7 +118,7 @@
 /**
  * Decays the organ, it is now useless.
  */
-/obj/item/organ/internal/monster_core/proc/go_inert()
+/obj/item/organ/monster_core/proc/go_inert()
 	if (inert)
 		return FALSE
 	inert = TRUE
@@ -128,7 +128,7 @@
 	update_appearance()
 	return TRUE
 
-/obj/item/organ/internal/monster_core/update_desc()
+/obj/item/organ/monster_core/update_desc()
 	if (inert)
 		desc = desc_inert ? desc_inert : initial(desc)
 		return ..()
@@ -138,7 +138,7 @@
 	desc = initial(desc)
 	return ..()
 
-/obj/item/organ/internal/monster_core/update_icon_state()
+/obj/item/organ/monster_core/update_icon_state()
 	if (inert)
 		icon_state = icon_state_inert ? icon_state_inert : initial(icon_state)
 		return ..()
@@ -148,14 +148,14 @@
 	icon_state = initial(icon_state)
 	return ..()
 
-/obj/item/organ/internal/monster_core/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
+/obj/item/organ/monster_core/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
 	if(!isliving(interacting_with))
 		return NONE
 
 	try_apply(interacting_with, user)
 	return ITEM_INTERACT_SUCCESS
 
-/obj/item/organ/internal/monster_core/attack_self(mob/user)
+/obj/item/organ/monster_core/attack_self(mob/user)
 	if (!user.can_perform_action(src, FORBID_TELEKINESIS_REACH|ALLOW_RESTING))
 		return
 	try_apply(user, user)
@@ -167,7 +167,7 @@
  * * target - Person you are applying this to.
  * * user - Person who is doing the applying.
  */
-/obj/item/organ/internal/monster_core/proc/try_apply(atom/target, mob/user)
+/obj/item/organ/monster_core/proc/try_apply(atom/target, mob/user)
 	if (!isliving(target))
 		balloon_alert(user, "invalid target!")
 		return
@@ -187,7 +187,7 @@
  * * target - Person you are applying this to.
  * * user - Person who is doing the applying.
  */
-/obj/item/organ/internal/monster_core/proc/apply_to(mob/living/target, mob/user)
+/obj/item/organ/monster_core/proc/apply_to(mob/living/target, mob/user)
 	if (user_status)
 		target.apply_status_effect(user_status)
 	qdel(src)
@@ -196,7 +196,7 @@
  * Utility proc to find the associated monster organ action and trigger it.
  * Call this instead of on_triggered_internal() if the action needs to trigger automatically, or the cooldown won't happen.
  */
-/obj/item/organ/internal/monster_core/proc/trigger_organ_action(trigger_flags)
+/obj/item/organ/monster_core/proc/trigger_organ_action(trigger_flags)
 	var/datum/action/cooldown/monster_core_action/action = locate() in actions
 	action?.Trigger(trigger_flags = trigger_flags)
 
@@ -204,7 +204,7 @@
  * Called when activated while implanted inside someone.
  * This could be via clicking the associated action button or through the above method.
  */
-/obj/item/organ/internal/monster_core/proc/on_triggered_internal()
+/obj/item/organ/monster_core/proc/on_triggered_internal()
 	SHOULD_CALL_PARENT(FALSE)
 	CRASH("Someone forgot to make their organ do something when you implant it.")
 
@@ -221,7 +221,7 @@
 	. = ..()
 	if (!target)
 		return
-	var/obj/item/organ/internal/monster_core/organ = target
+	var/obj/item/organ/monster_core/organ = target
 	if (!istype(organ))
 		return
 	organ.on_triggered_internal()
diff --git a/code/modules/mining/equipment/monster_organs/regenerative_core.dm b/code/modules/mining/equipment/monster_organs/regenerative_core.dm
index 98758d5a369..e601ac89f8c 100644
--- a/code/modules/mining/equipment/monster_organs/regenerative_core.dm
+++ b/code/modules/mining/equipment/monster_organs/regenerative_core.dm
@@ -2,7 +2,7 @@
  * On use in hand, heals you over time and removes injury movement debuffs. Also makes you a bit sad.
  * On use when implanted, fully heals. Automatically fully heals if you would enter crit.
  */
-/obj/item/organ/internal/monster_core/regenerative_core
+/obj/item/organ/monster_core/regenerative_core
 	name = "regenerative core"
 	desc = "All that remains of a hivelord. It can be used to help keep your body going, but it will rapidly decay into uselessness."
 	desc_preserved = "All that remains of a hivelord. It is preserved, allowing you to use it to heal completely without danger of decay."
@@ -12,30 +12,30 @@
 	icon_state = "hivelord_core"
 	icon_state_inert = "hivelord_core_decayed"
 
-/obj/item/organ/internal/monster_core/regenerative_core/preserve(implanted = FALSE)
+/obj/item/organ/monster_core/regenerative_core/preserve(implanted = FALSE)
 	if (implanted)
 		SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "implanted"))
 	else
 		SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "stabilizer"))
 	return ..()
 
-/obj/item/organ/internal/monster_core/regenerative_core/go_inert()
+/obj/item/organ/monster_core/regenerative_core/go_inert()
 	. = .. ()
 	if (!.)
 		return
 	SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "inert"))
 
-/obj/item/organ/internal/monster_core/regenerative_core/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/monster_core/regenerative_core/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if (owner.health <= owner.crit_threshold)
 		trigger_organ_action(TRIGGER_FORCE_AVAILABLE)
 
-/obj/item/organ/internal/monster_core/regenerative_core/on_triggered_internal()
+/obj/item/organ/monster_core/regenerative_core/on_triggered_internal()
 	owner.revive(HEAL_ALL)
 	qdel(src)
 
 /// Log applications and apply moodlet.
-/obj/item/organ/internal/monster_core/regenerative_core/apply_to(mob/living/target, mob/user)
+/obj/item/organ/monster_core/regenerative_core/apply_to(mob/living/target, mob/user)
 	target.add_mood_event(MOOD_CATEGORY_LEGION_CORE, /datum/mood_event/healsbadman)
 	if (target != user)
 		target.visible_message(span_notice("[user] forces [target] to apply [src]... Black tendrils entangle and reinforce [target.p_them()]!"))
@@ -46,7 +46,7 @@
 	return ..()
 
 /// Different graphics/desc for the lavaland legion
-/obj/item/organ/internal/monster_core/regenerative_core/legion
+/obj/item/organ/monster_core/regenerative_core/legion
 	desc = "A strange rock that crackles with power. It can be used to heal completely, but it will rapidly decay into uselessness."
 	desc_preserved = "The core has been stabilized, allowing you to use it to heal completely without danger of decay."
 	desc_inert = "The core has decayed, and is completely useless."
diff --git a/code/modules/mining/equipment/monster_organs/rush_gland.dm b/code/modules/mining/equipment/monster_organs/rush_gland.dm
index f9cfa1b88f1..cf901269e90 100644
--- a/code/modules/mining/equipment/monster_organs/rush_gland.dm
+++ b/code/modules/mining/equipment/monster_organs/rush_gland.dm
@@ -5,7 +5,7 @@
  * On use in hand, makes you run really fast for 5 seconds and ignore injury movement decrease.
  * On use when implanted, run for longer and ignore all negative movement. Automatically triggers if health is low (to escape).
  */
-/obj/item/organ/internal/monster_core/rush_gland
+/obj/item/organ/monster_core/rush_gland
 	name = "rush gland"
 	icon_state = "lobster_gland"
 	icon_state_preserved = "lobster_gland_stable"
@@ -16,23 +16,23 @@
 	user_status = /datum/status_effect/lobster_rush
 	actions_types = list(/datum/action/cooldown/monster_core_action/adrenal_boost)
 
-/obj/item/organ/internal/monster_core/rush_gland/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/monster_core/rush_gland/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if (owner.health <= HEALTH_DANGER_ZONE)
 		trigger_organ_action()
 
-/obj/item/organ/internal/monster_core/rush_gland/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/monster_core/rush_gland/on_mob_insert(mob/living/carbon/organ_owner)
 	. = ..()
 	RegisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED, PROC_REF(trigger_organ_action_on_sig))
 
-/obj/item/organ/internal/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	UnregisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED)
 
-/obj/item/organ/internal/monster_core/rush_gland/on_triggered_internal()
+/obj/item/organ/monster_core/rush_gland/on_triggered_internal()
 	owner.apply_status_effect(/datum/status_effect/lobster_rush/extended)
 
-/obj/item/organ/internal/monster_core/rush_gland/proc/trigger_organ_action_on_sig(datum/source)
+/obj/item/organ/monster_core/rush_gland/proc/trigger_organ_action_on_sig(datum/source)
 	SIGNAL_HANDLER
 	INVOKE_ASYNC(src, PROC_REF(trigger_organ_action))
 
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 6b2e79ce489..d1a75bd114c 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -27,7 +27,7 @@
 		if(2)
 			new /obj/item/soulstone/anybody/mining(src)
 		if(3)
-			new /obj/item/organ/internal/cyberimp/arm/shard/katana(src)
+			new /obj/item/organ/cyberimp/arm/shard/katana(src)
 		if(4)
 			new /obj/item/clothing/glasses/godeye(src)
 		if(5)
@@ -48,7 +48,7 @@
 		if(8)
 			new /obj/item/rod_of_asclepius(src)
 		if(9)
-			new /obj/item/organ/internal/heart/cursed/wizard(src)
+			new /obj/item/organ/heart/cursed/wizard(src)
 		if(10)
 			new /obj/item/ship_in_a_bottle(src)
 		if(11)
@@ -154,7 +154,7 @@
 	var/list/choices = subtypesof(/obj/machinery/anomalous_crystal) - /obj/machinery/anomalous_crystal/theme_warp // NOVA EDIT CHANGE - Less griefing - ORIGINAL: var/list/choices = subtypesof(/obj/machinery/anomalous_crystal)
 	var/random_crystal = pick(choices)
 	new random_crystal(src)
-	new /obj/item/organ/internal/vocal_cords/colossus(src)
+	new /obj/item/organ/vocal_cords/colossus(src)
 
 /obj/structure/closet/crate/necropolis/colossus/crusher
 	name = "angelic colossus chest"
diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm
index bbe1de54243..05d59f556c2 100644
--- a/code/modules/mining/lavaland/tendril_loot.dm
+++ b/code/modules/mining/lavaland/tendril_loot.dm
@@ -552,7 +552,7 @@
 		to_chat(exposed_human, span_userdanger("A terrible pain travels down your back as your wings change shape!"))
 	else
 		to_chat(exposed_human, span_userdanger("A terrible pain travels down your back as wings burst out!"))
-	var/obj/item/organ/external/wings/functional/wings = get_wing_choice(exposed_human, chest)
+	var/obj/item/organ/wings/functional/wings = get_wing_choice(exposed_human, chest)
 	wings = new wings()
 	wings.Insert(exposed_human)
 	playsound(exposed_human.loc, 'sound/items/poster/poster_ripped.ogg', 50, TRUE, -1)
@@ -565,7 +565,7 @@
 		return wing_types[1]
 	var/list/radial_wings = list()
 	var/list/name2type = list()
-	for(var/obj/item/organ/external/wings/functional/possible_type as anything in wing_types)
+	for(var/obj/item/organ/wings/functional/possible_type as anything in wing_types)
 		var/datum/sprite_accessory/accessory = initial(possible_type.sprite_accessory_override) //get the type
 		accessory = SSaccessories.sprite_accessories[initial(accessory.key)][initial(accessory.name)] //NOVA EDIT CHANGE - ORIGINAL: accessory = SSaccessories.wings_list[initial(accessory.name)] //get the singleton instance
 		var/image/img = image(icon = accessory.icon, icon_state = "m_wingsopen_[accessory.icon_state]_BEHIND") //Process the HUD elements
@@ -934,7 +934,7 @@
 	name = "Scan Target"
 	desc = "Contact may or may not be close."
 
-/obj/item/organ/internal/cyberimp/arm/shard
+/obj/item/organ/cyberimp/arm/shard
 	name = "dark spoon shard"
 	desc = "An eerie metal shard surrounded by dark energies...of soup drinking. You probably don't think you should have been able to find this."
 	icon = 'icons/obj/mining_zones/artefacts.dmi'
@@ -944,7 +944,7 @@
 	extend_sound = 'sound/items/unsheath.ogg'
 	retract_sound = 'sound/items/sheath.ogg'
 
-/obj/item/organ/internal/cyberimp/arm/shard/attack_self(mob/user, modifiers)
+/obj/item/organ/cyberimp/arm/shard/attack_self(mob/user, modifiers)
 	. = ..()
 	to_chat(user, span_userdanger("The mass goes up your arm and goes inside it!"))
 	playsound(user, 'sound/effects/magic/demon_consume.ogg', 50, TRUE)
@@ -954,15 +954,15 @@
 	user.temporarilyRemoveItemFromInventory(src, TRUE)
 	Insert(user)
 
-/obj/item/organ/internal/cyberimp/arm/shard/screwdriver_act(mob/living/user, obj/item/screwtool)
+/obj/item/organ/cyberimp/arm/shard/screwdriver_act(mob/living/user, obj/item/screwtool)
 	return
 
-/obj/item/organ/internal/cyberimp/arm/shard/katana
+/obj/item/organ/cyberimp/arm/shard/katana
 	name = "dark shard"
 	desc = "An eerie metal shard surrounded by dark energies."
 	items_to_create = list(/obj/item/cursed_katana)
 
-/obj/item/organ/internal/cyberimp/arm/shard/katana/Retract()
+/obj/item/organ/cyberimp/arm/shard/katana/Retract()
 	var/obj/item/cursed_katana/katana = active_item
 	if(!katana || katana.shattered)
 		return FALSE
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index c532769a1d9..adb97b09800 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -275,8 +275,8 @@ Works together with spawning an observer, noted above.
 		if(ishuman(usr)) //following code only applies to those capable of having an ethereal heart, ie humans
 			var/mob/living/carbon/human/crystal_fella = usr
 			var/our_heart = crystal_fella.get_organ_slot(ORGAN_SLOT_HEART)
-			if(istype(our_heart, /obj/item/organ/internal/heart/ethereal)) //so you got the heart?
-				var/obj/item/organ/internal/heart/ethereal/ethereal_heart = our_heart
+			if(istype(our_heart, /obj/item/organ/heart/ethereal)) //so you got the heart?
+				var/obj/item/organ/heart/ethereal/ethereal_heart = our_heart
 				ethereal_heart.stop_crystalization_process(crystal_fella) //stops the crystallization process
 
 	stop_sound_channel(CHANNEL_HEARTBEAT) //Stop heartbeat sounds because You Are A Ghost Now
diff --git a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
index 1fa30063dd5..13caade7c94 100644
--- a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
+++ b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
@@ -83,7 +83,7 @@
 	if(HAS_TRAIT(current_target, TRAIT_DEAF))
 		return
 
-	var/obj/item/organ/internal/ears/target_ears = current_target.get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/target_ears = current_target.get_organ_slot(ORGAN_SLOT_EARS)
 	target_ears?.adjustEarDamage(0, 5)
 
 /mob/living/basic/bot/honkbot/ui_data(mob/user)
diff --git a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
index 363243a2833..7e572c2d92f 100644
--- a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
+++ b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm
@@ -177,6 +177,19 @@
 	paralyze_chance = 0
 	initial_size = 0.9
 
+/mob/living/basic/gorilla/hostile
+	name = "Feral Gorilla"
+	maxHealth = 180
+	health = 180
+	desc = "A gorilla created via \"advanced genetic science\". While not quite as strong as their wildborne brethren, this simian still packs a punch."
+	melee_damage_lower = 15
+	melee_damage_upper = 18
+	obj_damage = 25
+	speed = 0.1
+	paralyze_chance = 0
+	initial_size = 0.9
+	faction = list(FACTION_HOSTILE)
+
 /mob/living/basic/gorilla/genetics/Initialize(mapload)
 	. = ..()
 	qdel(GetComponent(/datum/component/amputating_limbs))
diff --git a/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm b/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm
index b83c4f253f3..6f8c2e5c96f 100644
--- a/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm
+++ b/code/modules/mob/living/basic/heretic/maid_in_the_mirror.dm
@@ -28,7 +28,7 @@
 	var/static/list/loot = list(
 		/obj/effect/decal/cleanable/ash,
 		/obj/item/clothing/suit/armor/vest,
-		/obj/item/organ/internal/lungs,
+		/obj/item/organ/lungs,
 		/obj/item/shard,
 	)
 	AddElement(/datum/element/death_drops, loot)
diff --git a/code/modules/mob/living/basic/heretic/raw_prophet.dm b/code/modules/mob/living/basic/heretic/raw_prophet.dm
index f4ed7229a00..1d0d0f93f20 100644
--- a/code/modules/mob/living/basic/heretic/raw_prophet.dm
+++ b/code/modules/mob/living/basic/heretic/raw_prophet.dm
@@ -25,7 +25,7 @@
 /mob/living/basic/heretic_summon/raw_prophet/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/wheel)
-	var/static/list/body_parts = list(/obj/effect/gibspawner/human, /obj/item/bodypart/arm/left, /obj/item/organ/internal/eyes)
+	var/static/list/body_parts = list(/obj/effect/gibspawner/human, /obj/item/bodypart/arm/left, /obj/item/organ/eyes)
 	AddElement(/datum/element/death_drops, body_parts)
 	AddComponent(/datum/component/focused_attacker)
 	var/on_link_message = "You feel something new enter your sphere of mind... \
diff --git a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm
index 81dc34002ee..e314fe152ca 100644
--- a/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm
+++ b/code/modules/mob/living/basic/lavaland/brimdemon/brimdemon.dm
@@ -31,7 +31,7 @@
 	butcher_results = list(
 		/obj/item/food/meat/slab = 2,
 		/obj/effect/decal/cleanable/brimdust = 1,
-		/obj/item/organ/internal/monster_core/brimdust_sac = 1,
+		/obj/item/organ/monster_core/brimdust_sac = 1,
 	)
 	/// How we get blasting
 	var/datum/action/cooldown/mob_cooldown/brimbeam/beam
diff --git a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm
index f76479dc131..286e7539624 100644
--- a/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm
+++ b/code/modules/mob/living/basic/lavaland/hivelord/hivelord.dm
@@ -29,7 +29,7 @@
 
 /mob/living/basic/mining/hivelord/Initialize(mapload)
 	. = ..()
-	var/static/list/death_loot = list(/obj/item/organ/internal/monster_core/regenerative_core)
+	var/static/list/death_loot = list(/obj/item/organ/monster_core/regenerative_core)
 	AddElement(/datum/element/relay_attackers)
 	AddElement(/datum/element/death_drops, death_loot)
 	AddComponent(/datum/component/clickbox, icon_state = "hivelord", max_scale = INFINITY, dead_state = "hivelord_dead") // They writhe so much.
diff --git a/code/modules/mob/living/basic/lavaland/legion/legion.dm b/code/modules/mob/living/basic/lavaland/legion/legion.dm
index 76d3f51947e..007d8b6bfa6 100644
--- a/code/modules/mob/living/basic/lavaland/legion/legion.dm
+++ b/code/modules/mob/living/basic/lavaland/legion/legion.dm
@@ -50,7 +50,7 @@
 
 /// Create what we want to drop on death, in proc form so we can always return a static list
 /mob/living/basic/mining/legion/proc/get_loot_list()
-	var/static/list/death_loot = list(/obj/item/organ/internal/monster_core/regenerative_core/legion)
+	var/static/list/death_loot = list(/obj/item/organ/monster_core/regenerative_core/legion)
 	return death_loot
 
 /mob/living/basic/mining/legion/Exited(atom/movable/gone, direction)
@@ -88,7 +88,7 @@
 	if (prob(75))
 		return
 	// Congratulations you have won a special prize: cancer
-	var/obj/item/organ/internal/legion_tumour/cancer = new()
+	var/obj/item/organ/legion_tumour/cancer = new()
 	cancer.Insert(consumed, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 
 /// A Legion which only drops skeletons instead of corpses which might have fun loot, so it cannot be farmed
@@ -167,5 +167,5 @@
 
 /// Create what we want to drop on death, in proc form so we can always return a static list
 /mob/living/basic/mining/legion/large/get_loot_list()
-	var/static/list/death_loot = list(/obj/item/organ/internal/monster_core/regenerative_core/legion = 3, /obj/effect/mob_spawn/corpse/human/legioninfested = 4)
+	var/static/list/death_loot = list(/obj/item/organ/monster_core/regenerative_core/legion = 3, /obj/effect/mob_spawn/corpse/human/legioninfested = 4)
 	return death_loot
diff --git a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm
index d4503230e48..984080907c2 100644
--- a/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm
+++ b/code/modules/mob/living/basic/lavaland/legion/legion_tumour.dm
@@ -1,5 +1,5 @@
 /// Left behind when a legion infects you, for medical enrichment
-/obj/item/organ/internal/legion_tumour
+/obj/item/organ/legion_tumour
 	name = "legion tumour"
 	desc = "A mass of pulsing flesh and dark tendrils, containing the power to regenerate flesh at a terrible cost."
 	failing_desc = "pulses and writhes with horrible life, reaching towards you with its tendrils!"
@@ -27,22 +27,22 @@
 		'sound/mobs/non-humanoids/hiss/lowHiss4.ogg',
 	)
 
-/obj/item/organ/internal/legion_tumour/Initialize(mapload)
+/obj/item/organ/legion_tumour/Initialize(mapload)
 	. = ..()
 	animate_pulse()
 
-/obj/item/organ/internal/legion_tumour/apply_organ_damage(damage_amount, maximum, required_organ_flag)
+/obj/item/organ/legion_tumour/apply_organ_damage(damage_amount, maximum, required_organ_flag)
 	var/was_failing = organ_flags & ORGAN_FAILING
 	. = ..()
 	if (was_failing != (organ_flags & ORGAN_FAILING))
 		animate_pulse()
 
-/obj/item/organ/internal/legion_tumour/set_organ_damage(damage_amount, required_organ_flag)
+/obj/item/organ/legion_tumour/set_organ_damage(damage_amount, required_organ_flag)
 	. = ..()
 	animate_pulse()
 
 /// Do a heartbeat animation depending on if we're failing or not
-/obj/item/organ/internal/legion_tumour/proc/animate_pulse()
+/obj/item/organ/legion_tumour/proc/animate_pulse()
 	animate(src, transform = matrix()) // Stop any current animation
 
 	var/speed_divider = organ_flags & ORGAN_FAILING ? 2 : 1
@@ -51,23 +51,23 @@
 	animate(transform = matrix(), time = 0.5 SECONDS / speed_divider, easing = SINE_EASING | EASE_IN)
 	animate(transform = matrix(), time = 2 SECONDS / speed_divider)
 
-/obj/item/organ/internal/legion_tumour/Remove(mob/living/carbon/egg_owner, special, movement_flags)
+/obj/item/organ/legion_tumour/Remove(mob/living/carbon/egg_owner, special, movement_flags)
 	. = ..()
 	stage = 0
 	elapsed_time = 0
 
-/obj/item/organ/internal/legion_tumour/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/legion_tumour/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 	owner.log_message("has received [src] which will eventually turn them into a Legion.", LOG_VICTIM)
 
-/obj/item/organ/internal/legion_tumour/attack(mob/living/target, mob/living/user, params)
+/obj/item/organ/legion_tumour/attack(mob/living/target, mob/living/user, params)
 	if (try_apply(target, user))
 		qdel(src)
 		return
 	return ..()
 
 /// Smear it on someone like a regen core, why not. Make sure they're alive though.
-/obj/item/organ/internal/legion_tumour/proc/try_apply(mob/living/target, mob/user)
+/obj/item/organ/legion_tumour/proc/try_apply(mob/living/target, mob/user)
 	if(!user.Adjacent(target) || !isliving(target))
 		return FALSE
 
@@ -90,7 +90,7 @@
 	skull.melee_attack(target)
 	return TRUE
 
-/obj/item/organ/internal/legion_tumour/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/legion_tumour/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if (QDELETED(src) || QDELETED(owner))
 		return
@@ -146,7 +146,7 @@
 		to_chat(owner, span_bolddanger("Something is moving under your skin!"))
 
 /// Consume our host
-/obj/item/organ/internal/legion_tumour/proc/infest()
+/obj/item/organ/legion_tumour/proc/infest()
 	if (QDELETED(src) || QDELETED(owner))
 		return
 	owner.log_message("has been turned into a Legion by their tumour.", LOG_VICTIM)
@@ -155,7 +155,7 @@
 	new_legion.consume(owner)
 	qdel(src)
 
-/obj/item/organ/internal/legion_tumour/on_find(mob/living/finder)
+/obj/item/organ/legion_tumour/on_find(mob/living/finder)
 	. = ..()
 	to_chat(finder, span_warning("There's an enormous tumour in [owner]'s [zone]!"))
 	if(stage < 4)
diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
index d7f5a024ace..d8288360bd1 100644
--- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
+++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm
@@ -22,7 +22,7 @@
 	butcher_results = list(
 		/obj/item/food/meat/slab/rawcrab = 2,
 		/obj/item/stack/sheet/bone = 2,
-		/obj/item/organ/internal/monster_core/rush_gland = 1,
+		/obj/item/organ/monster_core/rush_gland = 1,
 	)
 	crusher_loot = /obj/item/crusher_trophy/lobster_claw
 	ai_controller = /datum/ai_controller/basic_controller/lobstrosity
@@ -146,7 +146,7 @@
 	butcher_results = list(
 		/obj/item/food/meat/slab/rawcrab = 1,
 		/obj/item/stack/sheet/bone = 1,
-		/obj/item/organ/internal/monster_core/rush_gland = 1,
+		/obj/item/organ/monster_core/rush_gland = 1,
 	)
 	crusher_loot = null
 	ai_controller = /datum/ai_controller/basic_controller/lobstrosity/juvenile
diff --git a/code/modules/mob/living/basic/pets/cat/cat.dm b/code/modules/mob/living/basic/pets/cat/cat.dm
index 3c2ab3f7c9f..3075aa6bcb7 100644
--- a/code/modules/mob/living/basic/pets/cat/cat.dm
+++ b/code/modules/mob/living/basic/pets/cat/cat.dm
@@ -12,8 +12,8 @@
 	unsuitable_atmos_damage = 0.5
 	butcher_results = list(
 		/obj/item/food/meat/slab = 1,
-		/obj/item/organ/internal/ears/cat = 1,
-		/obj/item/organ/external/tail/cat = 1,
+		/obj/item/organ/ears/cat = 1,
+		/obj/item/organ/tail/cat = 1,
 		/obj/item/stack/sheet/animalhide/cat = 1
 	)
 	response_help_continuous = "pets"
@@ -181,8 +181,8 @@
 	can_interact_with_stove = TRUE
 	butcher_results = list(
 		/obj/item/food/meat/slab = 2,
-		/obj/item/organ/internal/ears/cat = 1,
-		/obj/item/organ/external/tail/cat = 1,
+		/obj/item/organ/ears/cat = 1,
+		/obj/item/organ/tail/cat = 1,
 		/obj/item/food/breadslice/plain = 1
 	)
 	collar_icon_state = null
diff --git a/code/modules/mob/living/basic/pets/cat/keeki.dm b/code/modules/mob/living/basic/pets/cat/keeki.dm
index 4c18d22b02a..7314f9b4906 100644
--- a/code/modules/mob/living/basic/pets/cat/keeki.dm
+++ b/code/modules/mob/living/basic/pets/cat/keeki.dm
@@ -8,8 +8,8 @@
 	maxHealth = 50
 	gender = FEMALE
 	butcher_results = list(
-		/obj/item/organ/internal/brain = 1,
-		/obj/item/organ/internal/heart = 1,
+		/obj/item/organ/brain = 1,
+		/obj/item/organ/heart = 1,
 		/obj/item/food/cakeslice/birthday = 3,
 		/obj/item/food/meat/slab = 2
 	)
@@ -40,7 +40,7 @@
 
 /mob/living/basic/pet/cat/cak/CheckParts(list/parts)
 	. = ..()
-	var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents
+	var/obj/item/organ/brain/candidate = locate(/obj/item/organ/brain) in contents
 	if(isnull(candidate?.brainmob?.mind))
 		return
 	var/datum/mind/candidate_mind = candidate.brainmob.mind
diff --git a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm
index 9ac8e10d8f4..c5fac5f966e 100644
--- a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm
+++ b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm
@@ -91,7 +91,7 @@
 	maxHealth = 50
 	gender = NEUTER
 	damage_coeff = list(BRUTE = 3, BURN = 3, TOX = 1, STAMINA = 0, OXY = 1)
-	butcher_results = list(/obj/item/organ/internal/brain = 1, /obj/item/organ/internal/heart = 1, /obj/item/food/breadslice/plain = 3,  \
+	butcher_results = list(/obj/item/organ/brain = 1, /obj/item/organ/heart = 1, /obj/item/food/breadslice/plain = 3,  \
 	/obj/item/food/meat/slab = 2)
 	response_harm_continuous = "takes a bite out of"
 	response_harm_simple = "take a bite out of"
@@ -101,7 +101,7 @@
 
 /mob/living/basic/pet/dog/breaddog/CheckParts(list/parts)
 	. = ..()
-	var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents
+	var/obj/item/organ/brain/candidate = locate(/obj/item/organ/brain) in contents
 	if(!candidate || !candidate.brainmob || !candidate.brainmob.mind)
 		return
 	candidate.brainmob.mind.transfer_to(src)
diff --git a/code/modules/mob/living/basic/pets/penguin/penguin.dm b/code/modules/mob/living/basic/pets/penguin/penguin.dm
index 7f7280d5b14..0df0dfedcb2 100644
--- a/code/modules/mob/living/basic/pets/penguin/penguin.dm
+++ b/code/modules/mob/living/basic/pets/penguin/penguin.dm
@@ -133,7 +133,7 @@
 	density = FALSE
 	pass_flags = PASSMOB
 	mob_size = MOB_SIZE_SMALL
-	butcher_results = list(/obj/item/organ/internal/ears/penguin = 1, /obj/item/food/meat/slab/penguin = 1)
+	butcher_results = list(/obj/item/organ/ears/penguin = 1, /obj/item/food/meat/slab/penguin = 1)
 	ai_controller = /datum/ai_controller/basic_controller/penguin/baby
 	can_lay_eggs = FALSE
 	///will it grow up?
diff --git a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm
index 7a28473f1fa..e6d77586e4b 100644
--- a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm
+++ b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm
@@ -132,7 +132,7 @@
 	response_harm_simple = "take a bite out of"
 	attacked_sound = 'sound/items/eatfood.ogg'
 	death_message = "loses its false life and collapses!"
-	butcher_results = list(/obj/item/food/butter = 6, /obj/item/food/meat/slab = 3, /obj/item/organ/internal/brain = 1, /obj/item/organ/internal/heart = 1)
+	butcher_results = list(/obj/item/food/butter = 6, /obj/item/food/meat/slab = 3, /obj/item/organ/brain = 1, /obj/item/organ/heart = 1)
 	attack_sound = 'sound/items/weapons/slap.ogg'
 	attack_vis_effect = ATTACK_EFFECT_DISARM
 	attack_verb_simple = "slap"
@@ -160,7 +160,7 @@
 
 /mob/living/basic/bear/butter/CheckParts(list/parts) //Borrowed code from Cak, allows the brain used to actually control the bear.
 	. = ..()
-	var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents
+	var/obj/item/organ/brain/candidate = locate(/obj/item/organ/brain) in contents
 	if(!candidate || !candidate.brainmob || !candidate.brainmob.mind)
 		return
 	var/datum/mind/candidate_mind = candidate.brainmob.mind
diff --git a/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm b/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm
index 246b025d559..926ce374faf 100644
--- a/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm
+++ b/code/modules/mob/living/basic/space_fauna/cat_surgeon.dm
@@ -51,7 +51,7 @@
 		return
 
 	var/mob/living/carbon/human/attacked = target
-	var/obj/item/organ/external/tail/cat/tail = attacked.get_organ_by_type(/obj/item/organ/external/tail/cat)
+	var/obj/item/organ/tail/cat/tail = attacked.get_organ_by_type(/obj/item/organ/tail/cat)
 	if(QDELETED(tail))
 		return
 
diff --git a/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm b/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm
index d7aa8903398..f2585aecd62 100644
--- a/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm
+++ b/code/modules/mob/living/basic/space_fauna/changeling/headslug.dm
@@ -74,7 +74,7 @@
 /// Simply infects the target corpse with our changeling eggs. This shouldn't fail, because all checks should have been done in check_and_implant()
 /// Just to be super-duper safe to the player, we do return TRUE if all goes well and read that value in check_and_implant() to be nice to the player.
 /mob/living/basic/headslug/proc/infect(mob/living/carbon/victim)
-	var/obj/item/organ/internal/body_egg/changeling_egg/egg = new(victim)
+	var/obj/item/organ/body_egg/changeling_egg/egg = new(victim)
 
 	egg.origin = mind
 
diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
index 811186d43ad..fdc92d06f66 100644
--- a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
+++ b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm
@@ -1,16 +1,16 @@
 /// The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl
-/obj/item/organ/internal/heart/demon
+/obj/item/organ/heart/demon
 	name = "demon heart"
 	desc = "Still it beats furiously, emanating an aura of utter hate."
 	icon = 'icons/obj/medical/organs/organs.dmi'
 	icon_state = "demon_heart-on"
 	decay_factor = 0
 
-/obj/item/organ/internal/heart/demon/Initialize(mapload)
+/obj/item/organ/heart/demon/Initialize(mapload)
 	AddElement(/datum/element/update_icon_blocker)
 	return ..()
 
-/obj/item/organ/internal/heart/demon/attack(mob/target_mob, mob/living/carbon/user, obj/target)
+/obj/item/organ/heart/demon/attack(mob/target_mob, mob/living/carbon/user, obj/target)
 	if(target_mob != user)
 		return ..()
 
@@ -33,18 +33,18 @@
 	user.temporarilyRemoveItemFromInventory(src, TRUE)
 	src.Insert(user) //Consuming the heart literally replaces your heart with a demon heart. H A R D C O R E
 
-/obj/item/organ/internal/heart/demon/on_mob_insert(mob/living/carbon/heart_owner)
+/obj/item/organ/heart/demon/on_mob_insert(mob/living/carbon/heart_owner)
 	. = ..()
 	// Gives a non-eat-people crawl to the new owner
 	var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = new(heart_owner)
 	crawl.Grant(heart_owner)
 
-/obj/item/organ/internal/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
+/obj/item/organ/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
 	. = ..()
 	var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = locate() in heart_owner.actions
 	qdel(crawl)
 
-/obj/item/organ/internal/heart/demon/Stop()
+/obj/item/organ/heart/demon/Stop()
 	return FALSE // Always beating.
 
 /obj/effect/decal/cleanable/blood/innards
diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm b/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm
index a8073fa8329..add0ba237f8 100644
--- a/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm
+++ b/code/modules/mob/living/basic/space_fauna/demon/demon_subtypes.dm
@@ -45,7 +45,7 @@
 	var/static/list/droppable_loot = list(
 		/obj/effect/decal/cleanable/blood,
 		/obj/effect/decal/cleanable/blood/innards,
-		/obj/item/organ/internal/heart/demon,
+		/obj/item/organ/heart/demon,
 	)
 
 	return droppable_loot
diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
index e735067b3ed..9c56ec044c7 100644
--- a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
+++ b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm
@@ -100,13 +100,13 @@
 	if(!ishuman(target))
 		return TRUE
 	var/mob/living/carbon/human_target = target
-	var/obj/item/organ/internal/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES)
 	if(isnull(eyes) || eyes.damage < 10)
 		return TRUE
 	heal_eye_damage(human_target, eyes)
 	return FALSE
 
-/mob/living/basic/eyeball/proc/heal_eye_damage(mob/living/target, obj/item/organ/internal/eyes/eyes)
+/mob/living/basic/eyeball/proc/heal_eye_damage(mob/living/target, obj/item/organ/eyes/eyes)
 	if(!COOLDOWN_FINISHED(src, eye_healing))
 		return
 	to_chat(target, span_warning("[src] seems to be healing your [eyes.zone]!"))
diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm
index 5051f815371..27f637d3a87 100644
--- a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm
+++ b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_behavior.dm
@@ -7,7 +7,7 @@
 	if(!eye_damage_threshold)
 		return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
 	for(var/mob/living/carbon/blind in oview(9, living_pawn))
-		var/obj/item/organ/internal/eyes/eyes = blind.get_organ_slot(ORGAN_SLOT_EYES)
+		var/obj/item/organ/eyes/eyes = blind.get_organ_slot(ORGAN_SLOT_EYES)
 		if(isnull(eyes))
 			continue
 		if(eyes.damage < eye_damage_threshold)
@@ -36,7 +36,7 @@
 
 	if(QDELETED(target))
 		return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED
-	var/obj/item/organ/internal/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
 	var/datum/callback/callback = CALLBACK(living_pawn, TYPE_PROC_REF(/mob/living/basic/eyeball, heal_eye_damage), target, eyes)
 	callback.Invoke()
 
diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm
index 17b260d03ed..f71594ea0ec 100644
--- a/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm
+++ b/code/modules/mob/living/basic/space_fauna/eyeball/eyeball_ai_subtree.dm
@@ -34,7 +34,7 @@
 	var/eye_damage_threshold = owner.ai_controller.blackboard[BB_EYE_DAMAGE_THRESHOLD]
 	if(!eye_damage_threshold)
 		return TRUE
-	var/obj/item/organ/internal/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = human_target.get_organ_slot(ORGAN_SLOT_EYES)
 	if(eyes.damage > eye_damage_threshold) //we dont attack people with bad vision
 		return FALSE
 
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 9953172dff5..dbfb2a79157 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -10,7 +10,7 @@
 	var/mob/living/brain/brainmob = null //The current occupant.
 	var/mob/living/silicon/robot = null //Appears unused.
 	var/obj/vehicle/sealed/mecha = null //This does not appear to be used outside of reference in mecha.dm.
-	var/obj/item/organ/internal/brain/brain = null //The actual brain
+	var/obj/item/organ/brain/brain = null //The actual brain
 	var/datum/ai_laws/laws = new()
 	var/force_replace_ai_name = FALSE
 	var/overrides_aicore_laws = FALSE // Whether the laws on the MMI, if any, override possible pre-existing laws loaded on the AI core.
@@ -35,7 +35,7 @@
 	if(!brain)
 		icon_state = "[base_icon_state]_off"
 		return ..()
-	icon_state = "[base_icon_state]_brain[istype(brain, /obj/item/organ/internal/brain/alien) ? "_alien" : null]"
+	icon_state = "[base_icon_state]_brain[istype(brain, /obj/item/organ/brain/alien) ? "_alien" : null]"
 	return ..()
 
 /obj/item/mmi/update_overlays()
@@ -51,8 +51,8 @@
 
 /obj/item/mmi/attackby(obj/item/O, mob/user, params)
 	user.changeNext_move(CLICK_CD_MELEE)
-	if(istype(O, /obj/item/organ/internal/brain)) //Time to stick a brain in it --NEO
-		var/obj/item/organ/internal/brain/newbrain = O
+	if(istype(O, /obj/item/organ/brain)) //Time to stick a brain in it --NEO
+		var/obj/item/organ/brain/newbrain = O
 		if(brain)
 			to_chat(user, span_warning("There's already a brain in the MMI!"))
 			return
@@ -99,7 +99,7 @@
 
 		name = "[initial(name)]: [brainmob.real_name]"
 		update_appearance()
-		if(istype(brain, /obj/item/organ/internal/brain/alien))
+		if(istype(brain, /obj/item/organ/brain/alien))
 			braintype = "Xenoborg" //HISS....Beep.
 		else
 			braintype = "Cyborg"
@@ -121,7 +121,7 @@
  * Arguments:
  * * new_brain - Brain to be force-inserted into the MMI. Any calling code should handle proper removal of the brain from the mob, as this proc only forceMoves.
  */
-/obj/item/mmi/proc/force_brain_into(obj/item/organ/internal/brain/new_brain)
+/obj/item/mmi/proc/force_brain_into(obj/item/organ/brain/new_brain)
 	if(isnull(new_brain))
 		stack_trace("Proc called with null brain.")
 		return FALSE
@@ -160,7 +160,7 @@
 	name = "[initial(name)]: [brainmob.real_name]"
 
 	update_appearance()
-	if(istype(brain, /obj/item/organ/internal/brain/alien))
+	if(istype(brain, /obj/item/organ/brain/alien))
 		braintype = "Xenoborg"
 	else
 		braintype = "Cyborg"
@@ -209,7 +209,7 @@
 
 	if(ishuman(L))
 		var/mob/living/carbon/human/H = L
-		var/obj/item/organ/internal/brain/newbrain = H.get_organ_by_type(/obj/item/organ/internal/brain)
+		var/obj/item/organ/brain/newbrain = H.get_organ_by_type(/obj/item/organ/brain)
 		newbrain.Remove(H, special = TRUE, movement_flags = NO_ID_TRANSFER)
 		newbrain.forceMove(src)
 		brain = newbrain
@@ -220,7 +220,7 @@
 
 	name = "[initial(name)]: [brainmob.real_name]"
 	update_appearance()
-	if(istype(brain, /obj/item/organ/internal/brain/alien))
+	if(istype(brain, /obj/item/organ/brain/alien))
 		braintype = "Xenoborg" //HISS....Beep.
 	else
 		braintype = "Cyborg"
diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm
index 17f5be02a91..ccce0269e54 100644
--- a/code/modules/mob/living/brain/brain.dm
+++ b/code/modules/mob/living/brain/brain.dm
@@ -11,7 +11,7 @@
 	create_dna(src)
 	stored_dna.initialize_dna(random_blood_type())
 	if(isturf(loc)) //not spawned in an MMI or brain organ (most likely adminspawned)
-		var/obj/item/organ/internal/brain/OB = new(loc) //we create a new brain organ for it.
+		var/obj/item/organ/brain/OB = new(loc) //we create a new brain organ for it.
 		OB.brainmob = src
 		forceMove(OB)
 	if(!container?.mecha && (!container || container.immobilize)) //Unless inside a mecha, brains are rather helpless.
@@ -19,7 +19,7 @@
 	ADD_TRAIT(src, TRAIT_SILICON_EMOTES_ALLOWED, INNATE_TRAIT)
 
 /mob/living/brain/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents)
-	var/obj/item/organ/internal/brain/brain_loc = loc
+	var/obj/item/organ/brain/brain_loc = loc
 	if(brain_loc && isnull(new_turf) && brain_loc.owner) //we're actively being put inside a new body.
 		return ..(old_turf, get_turf(brain_loc.owner), same_z_layer, notify_contents)
 	return ..()
@@ -79,10 +79,10 @@
 /mob/living/brain/forceMove(atom/destination)
 	if(container)
 		return container.forceMove(destination)
-	else if (istype(loc, /obj/item/organ/internal/brain))
-		var/obj/item/organ/internal/brain/B = loc
+	else if (istype(loc, /obj/item/organ/brain))
+		var/obj/item/organ/brain/B = loc
 		B.forceMove(destination)
-	else if (istype(destination, /obj/item/organ/internal/brain))
+	else if (istype(destination, /obj/item/organ/brain))
 		doMove(destination)
 	else if (istype(destination, /obj/item/mmi))
 		doMove(destination)
@@ -102,8 +102,8 @@
 
 /mob/living/brain/proc/get_traumas()
 	. = list()
-	if(istype(loc, /obj/item/organ/internal/brain))
-		var/obj/item/organ/internal/brain/B = loc
+	if(istype(loc, /obj/item/organ/brain))
+		var/obj/item/organ/brain/B = loc
 		. = B.traumas
 
 /mob/living/brain/get_policy_keywords()
diff --git a/code/modules/mob/living/brain/brain_cybernetic.dm b/code/modules/mob/living/brain/brain_cybernetic.dm
index d87b6d90283..c88db6dc1a1 100644
--- a/code/modules/mob/living/brain/brain_cybernetic.dm
+++ b/code/modules/mob/living/brain/brain_cybernetic.dm
@@ -1,11 +1,11 @@
-/obj/item/organ/internal/brain/cybernetic
+/obj/item/organ/brain/cybernetic
 	name = "cybernetic brain"
 	desc = "A mechanical brain found inside of androids. Not to be confused with a positronic brain."
 	icon_state = "brain-c"
 	organ_flags = ORGAN_ROBOTIC | ORGAN_VITAL
 	failing_desc = "seems to be broken, and will not work without repairs."
 
-/obj/item/organ/internal/brain/cybernetic/brain_damage_examine()
+/obj/item/organ/brain/cybernetic/brain_damage_examine()
 	if(suicided)
 		return span_info("Its circuitry is smoking slightly. They must not have been able to handle the stress of it all.")
 	if(brainmob && (decoy_override || brainmob.client || brainmob.get_ghost()))
@@ -18,7 +18,7 @@
 	else
 		return span_info("This one is completely devoid of life.")
 
-/obj/item/organ/internal/brain/cybernetic/check_for_repair(obj/item/item, mob/user)
+/obj/item/organ/brain/cybernetic/check_for_repair(obj/item/item, mob/user)
 	if (item.tool_behaviour == TOOL_MULTITOOL) //attempt to repair the brain
 		if (brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing
 			to_chat(user, span_warning("[src] is far too damaged, there's nothing else we can do for it!"))
@@ -48,7 +48,7 @@
 		return TRUE
 	return FALSE
 
-/obj/item/organ/internal/brain/cybernetic/emp_act(severity)
+/obj/item/organ/brain/cybernetic/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF)
 		return
diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm
index ced02095e41..44f8b14443d 100644
--- a/code/modules/mob/living/brain/brain_item.dm
+++ b/code/modules/mob/living/brain/brain_item.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/brain
+/obj/item/organ/brain
 	name = "brain"
 	desc = "A piece of juicy meat found in a person's head."
 	icon_state = "brain"
@@ -45,21 +45,12 @@
 	/// We got smooth from being washed
 	var/smooth_brain = FALSE
 
-/obj/item/organ/internal/brain/Initialize(mapload)
+/obj/item/organ/brain/Initialize(mapload)
 	. = ..()
 	// Brain size logic
 	transform = transform.Scale(brain_size)
 
-/obj/item/organ/internal/brain/examine()
-	. = ..()
-	if (smooth_brain)
-		. += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...")
-	if(brain_size < 1)
-		. += span_notice("It is a bit on the smaller side...")
-	if(brain_size > 1)
-		. += span_notice("It is bigger than average...")
-
-/obj/item/organ/internal/brain/mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags)
+/obj/item/organ/brain/mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags)
 	. = ..()
 	if(!.)
 		return
@@ -114,7 +105,7 @@
 	//Update the body's icon so it doesnt appear debrained anymore
 	brain_owner.update_body_parts()
 
-/obj/item/organ/internal/brain/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/brain/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
 	// Delete skillchips first as parent proc sets owner to null, and skillchips need to know the brain's owner.
 	if(!QDELETED(organ_owner) && length(skillchips))
 		if(!special)
@@ -137,11 +128,11 @@
 		organ_owner.update_body_parts()
 		organ_owner.clear_mood_event("brain_damage")
 
-/obj/item/organ/internal/brain/update_icon_state()
-	icon_state = "[initial(icon_state)][smooth_brain ? "-smooth_brain" : ""]"
+/obj/item/organ/brain/update_icon_state()
+	icon_state = "[initial(icon_state)][smooth_brain ? "-smooth" : ""]"
 	return ..()
 
-/obj/item/organ/internal/brain/proc/transfer_identity(mob/living/L)
+/obj/item/organ/brain/proc/transfer_identity(mob/living/L)
 	name = "[L.name]'s [initial(name)]"
 	if(brainmob)
 		if(!decoy_override)
@@ -173,7 +164,7 @@
 		L.mind.transfer_to(brainmob)
 		to_chat(brainmob, span_notice("You feel slightly disoriented. That's normal when you're just a brain."))
 
-/obj/item/organ/internal/brain/attackby(obj/item/item, mob/user, params)
+/obj/item/organ/brain/attackby(obj/item/item, mob/user, params)
 	user.changeNext_move(CLICK_CD_MELEE)
 
 	if(istype(item, /obj/item/borg/apparatus/organ_storage))
@@ -215,7 +206,7 @@
 		visible_message(span_danger("[user] hits [src] with [item]!"))
 		to_chat(user, span_danger("You hit [src] with [item]!"))
 
-/obj/item/organ/internal/brain/proc/check_for_repair(obj/item/item, mob/user)
+/obj/item/organ/brain/proc/check_for_repair(obj/item/item, mob/user)
 	if(damage && item.is_drainable() && item.reagents.has_reagent(/datum/reagent/medicine/mannitol) && (organ_flags & ORGAN_ORGANIC)) //attempt to heal the brain
 		if(brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing
 			to_chat(user, span_warning("[src] is far too damaged, there's nothing else we can do for it!"))
@@ -234,18 +225,20 @@
 		return TRUE
 	return FALSE
 
-/obj/item/organ/internal/brain/examine(mob/user)
+/obj/item/organ/brain/examine(mob/user)
 	. = ..()
 	if(length(skillchips))
 		. += span_info("It has a skillchip embedded in it.")
 	. += brain_damage_examine()
+	if (smooth_brain)
+		. += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...")
 	if(brain_size < 1)
 		. += span_notice("It is a bit on the smaller side...")
 	if(brain_size > 1)
 		. += span_notice("It is bigger than average...")
 
 /// Needed so subtypes can override examine text while still calling parent
-/obj/item/organ/internal/brain/proc/brain_damage_examine()
+/obj/item/organ/brain/proc/brain_damage_examine()
 	if(suicided)
 		return span_info("It's started turning slightly grey. They must not have been able to handle the stress of it all.")
 	if(brainmob && (decoy_override || brainmob.client || brainmob.get_ghost()))
@@ -258,7 +251,7 @@
 	else
 		return span_info("This one is completely devoid of life.")
 
-/obj/item/organ/internal/brain/get_status_appendix(advanced, add_tooltips)
+/obj/item/organ/brain/get_status_appendix(advanced, add_tooltips)
 	var/list/trauma_text
 	for(var/datum/brain_trauma/trauma as anything in traumas)
 		var/trauma_desc = ""
@@ -278,7 +271,7 @@
 	if(LAZYLEN(trauma_text))
 		return "Mental trauma: [english_list(trauma_text, and_text = ", and ")]."
 
-/obj/item/organ/internal/brain/attack(mob/living/carbon/C, mob/user)
+/obj/item/organ/brain/attack(mob/living/carbon/C, mob/user)
 	if(!istype(C))
 		return ..()
 
@@ -287,7 +280,7 @@
 	if(user.zone_selected != BODY_ZONE_HEAD)
 		return ..()
 
-	var/target_has_brain = C.get_organ_by_type(/obj/item/organ/internal/brain)
+	var/target_has_brain = C.get_organ_by_type(/obj/item/organ/brain)
 
 	if(!target_has_brain && C.is_eyes_covered())
 		to_chat(user, span_warning("You're going to need to remove [C.p_their()] head cover first!"))
@@ -315,7 +308,7 @@
 	else
 		..()
 
-/obj/item/organ/internal/brain/Destroy() //copypasted from MMIs.
+/obj/item/organ/brain/Destroy() //copypasted from MMIs.
 	QDEL_NULL(brainmob)
 	QDEL_LIST(traumas)
 
@@ -323,13 +316,13 @@
 	owner?.mind?.set_current(null) //You aren't allowed to return to brains that don't exist
 	return ..()
 
-/obj/item/organ/internal/brain/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/brain/on_life(seconds_per_tick, times_fired)
 	if(damage >= BRAIN_DAMAGE_DEATH) //rip
 		to_chat(owner, span_userdanger("The last spark of life in your brain fizzles out..."))
 		owner.investigate_log("has been killed by brain damage.", INVESTIGATE_DEATHS)
 		owner.death()
 
-/obj/item/organ/internal/brain/check_damage_thresholds(mob/M)
+/obj/item/organ/brain/check_damage_thresholds(mob/M)
 	. = ..()
 	//if we're not more injured than before, return without gambling for a trauma
 	if(damage <= prev_damage)
@@ -362,9 +355,9 @@
 			else
 				return brain_message
 
-/obj/item/organ/internal/brain/before_organ_replacement(obj/item/organ/replacement)
+/obj/item/organ/brain/before_organ_replacement(obj/item/organ/replacement)
 	. = ..()
-	var/obj/item/organ/internal/brain/replacement_brain = replacement
+	var/obj/item/organ/brain/replacement_brain = replacement
 	if(!istype(replacement_brain))
 		return
 
@@ -401,7 +394,7 @@
 		remove_trauma_from_traumas(trauma)
 		replacement_brain.add_trauma_to_traumas(trauma)
 
-/obj/item/organ/internal/brain/machine_wash(obj/machinery/washing_machine/brainwasher)
+/obj/item/organ/brain/machine_wash(obj/machinery/washing_machine/brainwasher)
 	. = ..()
 	if (can_smoothen_out && !smooth_brain)
 		smooth_brain = TRUE
@@ -413,19 +406,19 @@
 	else
 		set_organ_damage(BRAIN_DAMAGE_DEATH)
 
-/obj/item/organ/internal/brain/zombie
+/obj/item/organ/brain/zombie
 	name = "zombie brain"
 	desc = "This glob of green mass can't have much intelligence inside it."
 	icon_state = "brain-x"
 	organ_traits = list(TRAIT_CAN_STRIP, TRAIT_PRIMITIVE)
 
-/obj/item/organ/internal/brain/alien
+/obj/item/organ/brain/alien
 	name = "alien brain"
 	desc = "We barely understand the brains of terrestial animals. Who knows what we may find in the brain of such an advanced species?"
 	icon_state = "brain-x"
 	organ_traits = list(TRAIT_CAN_STRIP)
 
-/obj/item/organ/internal/brain/primitive //No like books and stompy metal men
+/obj/item/organ/brain/primitive //No like books and stompy metal men
 	name = "primitive brain"
 	desc = "This juicy piece of meat has a clearly underdeveloped frontal lobe."
 	organ_traits = list(
@@ -438,7 +431,7 @@
 		TRAIT_BEAST_EMPATHY, // know the way of beast, calm with food
 	)
 
-/obj/item/organ/internal/brain/golem
+/obj/item/organ/brain/golem
 	name = "crystalline matrix"
 	desc = "This collection of sparkling gems somehow allows a golem to think."
 	icon_state = "adamantine_resonator"
@@ -447,32 +440,32 @@
 	organ_flags = ORGAN_MINERAL
 	organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP, TRAIT_ROCK_METAMORPHIC)
 
-/obj/item/organ/internal/brain/lustrous
+/obj/item/organ/brain/lustrous
 	name = "lustrous brain"
 	desc = "This is your brain on bluespace dust. Not even once."
 	icon_state = "random_fly_4"
 	can_smoothen_out = FALSE
 	organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP)
 
-/obj/item/organ/internal/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	organ_owner.cure_trauma_type(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE)
 	organ_owner.RemoveElement(/datum/element/tenacious)
 
-/obj/item/organ/internal/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special)
 	. = ..()
 	organ_owner.gain_trauma(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE)
 	organ_owner.AddElement(/datum/element/tenacious)
 
-/obj/item/organ/internal/brain/felinid //A bit smaller than average
+/obj/item/organ/brain/felinid //A bit smaller than average
 	brain_size = 0.8
 
-/obj/item/organ/internal/brain/lizard //A bit smaller than average
+/obj/item/organ/brain/lizard //A bit smaller than average
 	name = "lizard brain"
 	desc = "This juicy piece of meat has a oversized brain stem and cerebellum, with not much of a limbic system to speak of at all. You would expect it's owner to be pretty cold blooded."
 	organ_traits = list(TRAIT_TACKLING_TAILED_DEFENDER)
 
-/obj/item/organ/internal/brain/abductor
+/obj/item/organ/brain/abductor
 	name = "grey brain"
 	desc = "A piece of juicy meat found in an ayy lmao's head."
 	icon_state = "brain-x"
@@ -481,20 +474,20 @@
 
 ////////////////////////////////////TRAUMAS////////////////////////////////////////
 
-/obj/item/organ/internal/brain/proc/has_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
+/obj/item/organ/brain/proc/has_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
 	for(var/X in traumas)
 		var/datum/brain_trauma/BT = X
 		if(istype(BT, brain_trauma_type) && (BT.resilience <= resilience))
 			return BT
 
-/obj/item/organ/internal/brain/proc/get_traumas_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
+/obj/item/organ/brain/proc/get_traumas_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
 	. = list()
 	for(var/X in traumas)
 		var/datum/brain_trauma/BT = X
 		if(istype(BT, brain_trauma_type) && (BT.resilience <= resilience))
 			. += BT
 
-/obj/item/organ/internal/brain/proc/can_gain_trauma(datum/brain_trauma/trauma, resilience, natural_gain = FALSE)
+/obj/item/organ/brain/proc/can_gain_trauma(datum/brain_trauma/trauma, resilience, natural_gain = FALSE)
 	if(!ispath(trauma))
 		trauma = trauma.type
 	if(!initial(trauma.can_gain))
@@ -530,19 +523,19 @@
 	return TRUE
 
 //Proc to use when directly adding a trauma to the brain, so extra args can be given
-/obj/item/organ/internal/brain/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...)
+/obj/item/organ/brain/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...)
 	var/list/arguments = list()
 	if(args.len > 2)
 		arguments = args.Copy(3)
 	. = brain_gain_trauma(trauma, resilience, arguments)
 
-/obj/item/organ/internal/brain/vv_edit_var(var_name, var_value)
+/obj/item/organ/brain/vv_edit_var(var_name, var_value)
 	. = ..()
 	if(var_name == NAMEOF(src, smooth_brain))
 		update_appearance()
 
 //Direct trauma gaining proc. Necessary to assign a trauma to its brain. Avoid using directly.
-/obj/item/organ/internal/brain/proc/brain_gain_trauma(datum/brain_trauma/trauma, resilience, list/arguments)
+/obj/item/organ/brain/proc/brain_gain_trauma(datum/brain_trauma/trauma, resilience, list/arguments)
 	if(!can_gain_trauma(trauma, resilience))
 		return FALSE
 
@@ -572,18 +565,18 @@
 
 /// Adds the passed trauma instance to our list of traumas and links it to our brain.
 /// DOES NOT handle setting up the trauma, that's done by [proc/brain_gain_trauma]!
-/obj/item/organ/internal/brain/proc/add_trauma_to_traumas(datum/brain_trauma/trauma)
+/obj/item/organ/brain/proc/add_trauma_to_traumas(datum/brain_trauma/trauma)
 	trauma.brain = src
 	traumas += trauma
 
 /// Removes the passed trauma instance to our list of traumas and links it to our brain
 /// DOES NOT handle removing the trauma's effects, that's done by [/datum/brain_trauma/Destroy()]!
-/obj/item/organ/internal/brain/proc/remove_trauma_from_traumas(datum/brain_trauma/trauma)
+/obj/item/organ/brain/proc/remove_trauma_from_traumas(datum/brain_trauma/trauma)
 	trauma.brain = null
 	traumas -= trauma
 
 //Add a random trauma of a certain subtype
-/obj/item/organ/internal/brain/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience, natural_gain = FALSE)
+/obj/item/organ/brain/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience, natural_gain = FALSE)
 	var/list/datum/brain_trauma/possible_traumas = list()
 	for(var/T in subtypesof(brain_trauma_type))
 		var/datum/brain_trauma/BT = T
@@ -597,12 +590,12 @@
 	return gain_trauma(trauma_type, resilience)
 
 //Cure a random trauma of a certain resilience level
-/obj/item/organ/internal/brain/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_BASIC)
+/obj/item/organ/brain/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience = TRAUMA_RESILIENCE_BASIC)
 	var/list/traumas = get_traumas_type(brain_trauma_type, resilience)
 	if(LAZYLEN(traumas))
 		qdel(pick(traumas))
 
-/obj/item/organ/internal/brain/proc/cure_all_traumas(resilience = TRAUMA_RESILIENCE_BASIC)
+/obj/item/organ/brain/proc/cure_all_traumas(resilience = TRAUMA_RESILIENCE_BASIC)
 	var/amount_cured = 0
 	var/list/traumas = get_traumas_type(resilience = resilience)
 	for(var/X in traumas)
@@ -610,7 +603,7 @@
 		amount_cured++
 	return amount_cured
 
-/obj/item/organ/internal/brain/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag = NONE)
+/obj/item/organ/brain/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag = NONE)
 	. = ..()
 	if(!owner)
 		return FALSE
@@ -620,7 +613,7 @@
 		owner.clear_mood_event("brain_damage")
 
 /// This proc lets the mob's brain decide what bodypart to attack with in an unarmed strike.
-/obj/item/organ/internal/brain/proc/get_attacking_limb(mob/living/carbon/human/target)
+/obj/item/organ/brain/proc/get_attacking_limb(mob/living/carbon/human/target)
 	var/obj/item/bodypart/arm/active_hand = owner.get_active_hand()
 	if(target.body_position == LYING_DOWN && owner.usable_legs)
 		var/obj/item/bodypart/found_bodypart = owner.get_bodypart((active_hand.held_index % 2) ? BODY_ZONE_L_LEG : BODY_ZONE_R_LEG)
@@ -628,8 +621,8 @@
 	return active_hand
 
 /// Brains REALLY like ghosting people. we need special tricks to avoid that, namely removing the old brain with no_id_transfer
-/obj/item/organ/internal/brain/replace_into(mob/living/carbon/new_owner)
-	var/obj/item/organ/internal/brain/old_brain = new_owner.get_organ_slot(ORGAN_SLOT_BRAIN)
+/obj/item/organ/brain/replace_into(mob/living/carbon/new_owner)
+	var/obj/item/organ/brain/old_brain = new_owner.get_organ_slot(ORGAN_SLOT_BRAIN)
 	old_brain.Remove(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER)
 	qdel(old_brain)
 	return Insert(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER | DELETE_IF_REPLACED)
diff --git a/code/modules/mob/living/brain/death.dm b/code/modules/mob/living/brain/death.dm
index 60487aa0c35..8166e9f8446 100644
--- a/code/modules/mob/living/brain/death.dm
+++ b/code/modules/mob/living/brain/death.dm
@@ -15,6 +15,6 @@
 	if(container)
 		qdel(container)//Gets rid of the MMI if there is one
 	if(loc)
-		if(istype(loc, /obj/item/organ/internal/brain))
+		if(istype(loc, /obj/item/organ/brain))
 			qdel(loc)//Gets rid of the brain item
 	..()
diff --git a/code/modules/mob/living/brain/life.dm b/code/modules/mob/living/brain/life.dm
index 7ffe49951ec..5b016db7fba 100644
--- a/code/modules/mob/living/brain/life.dm
+++ b/code/modules/mob/living/brain/life.dm
@@ -20,10 +20,10 @@
 		return
 	if(stat != DEAD)
 		death()
-	var/obj/item/organ/internal/brain/BR
+	var/obj/item/organ/brain/BR
 	if(container?.brain)
 		BR = container.brain
-	else if(istype(loc, /obj/item/organ/internal/brain))
+	else if(istype(loc, /obj/item/organ/brain))
 		BR = loc
 	if(BR)
 		BR.set_organ_damage(BRAIN_DAMAGE_DEATH) //beaten to a pulp
diff --git a/code/modules/mob/living/brain/skillchip.dm b/code/modules/mob/living/brain/skillchip.dm
index 2c066c7e735..4bab004c685 100644
--- a/code/modules/mob/living/brain/skillchip.dm
+++ b/code/modules/mob/living/brain/skillchip.dm
@@ -6,7 +6,7 @@
  * Arguments:
  * * skillchip - The skillchip you'd like to remove.
  */
-/obj/item/organ/internal/brain/proc/remove_skillchip(obj/item/skillchip/skillchip, silent = FALSE)
+/obj/item/organ/brain/proc/remove_skillchip(obj/item/skillchip/skillchip, silent = FALSE)
 	// Check this skillchip is in the brain.
 	if(!(skillchip in skillchips))
 		stack_trace("Attempted to remove skillchip [skillchip] that wasn't in [src] skillchip list.")
@@ -27,7 +27,7 @@
  * * skillchip - The skillchip you'd like to implant.
  * * force - Whether or not to force the skillchip to be implanted, ignoring any checks.
  */
-/obj/item/organ/internal/brain/proc/implant_skillchip(obj/item/skillchip/skillchip, force = FALSE)
+/obj/item/organ/brain/proc/implant_skillchip(obj/item/skillchip/skillchip, force = FALSE)
 	// If we're not forcing the implant, so let's do some checks.
 	if(!force)
 		// Slot capacity check!
@@ -50,7 +50,7 @@
  * Arguments:
  * * not_removable - Special override, whether or not to force cloned chips to be non-removable, i.e. to delete on removal.
  */
-/obj/item/organ/internal/brain/proc/clone_skillchip_list(not_removable = FALSE)
+/obj/item/organ/brain/proc/clone_skillchip_list(not_removable = FALSE)
 	var/list/skillchip_metadata = list()
 	// Remove and call on_removal proc if successful.
 	for(var/chip in skillchips)
@@ -76,7 +76,7 @@
  * Arguments:
  * * silent - Whether to give the user a chat notification with the removal flavour text.
  */
-/obj/item/organ/internal/brain/proc/destroy_all_skillchips(silent = TRUE)
+/obj/item/organ/brain/proc/destroy_all_skillchips(silent = TRUE)
 	if(!QDELETED(owner))
 		for(var/chip in skillchips)
 			var/obj/item/skillchip/skillchip = chip
@@ -86,7 +86,7 @@
 /**
  * Returns the total maximum skillchip complexity supported by this brain.
  */
-/obj/item/organ/internal/brain/proc/get_max_skillchip_complexity()
+/obj/item/organ/brain/proc/get_max_skillchip_complexity()
 	if(!QDELETED(owner))
 		return max_skillchip_complexity + owner.skillchip_complexity_modifier
 
@@ -95,7 +95,7 @@
 /**
  * Returns the total current skillchip complexity used in this brain.
  */
-/obj/item/organ/internal/brain/proc/get_used_skillchip_complexity()
+/obj/item/organ/brain/proc/get_used_skillchip_complexity()
 	var/complexity_tally = 0
 
 	for(var/chip in skillchips)
@@ -111,13 +111,13 @@
 /**
  * Returns the total maximum skillchip slot capacity supported by this brain.
  */
-/obj/item/organ/internal/brain/proc/get_max_skillchip_slots()
+/obj/item/organ/brain/proc/get_max_skillchip_slots()
 	return max_skillchip_slots
 
 /**
  * Returns the total current skillchip slot capacity used in this brain.
  */
-/obj/item/organ/internal/brain/proc/get_used_skillchip_slots()
+/obj/item/organ/brain/proc/get_used_skillchip_slots()
 	var/slot_tally = 0
 
 	for(var/chip in skillchips)
@@ -130,7 +130,7 @@
 /**
  * Deactivates all chips currently in the brain.
  */
-/obj/item/organ/internal/brain/proc/activate_skillchip_failsafe(silent = TRUE)
+/obj/item/organ/brain/proc/activate_skillchip_failsafe(silent = TRUE)
 	if(QDELETED(owner))
 		return
 
@@ -154,7 +154,7 @@
 		to_chat(owner, span_warning("Unusual brain biology detected during regeneration. Failsafe procedure engaged. [chip_tally] skillchips have been deactivated."))
 
 /// Disables or re-enables any extra skillchips after skillchip limit changes.
-/obj/item/organ/internal/brain/proc/update_skillchips()
+/obj/item/organ/brain/proc/update_skillchips()
 	var/limit = get_max_skillchip_complexity()
 	var/dt = limit - get_used_skillchip_complexity()
 
diff --git a/code/modules/mob/living/carbon/alien/adult/adult.dm b/code/modules/mob/living/carbon/alien/adult/adult.dm
index c53491e0ce7..d2c41e61a12 100644
--- a/code/modules/mob/living/carbon/alien/adult/adult.dm
+++ b/code/modules/mob/living/carbon/alien/adult/adult.dm
@@ -37,7 +37,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
 	AddElement(/datum/element/strippable, GLOB.strippable_alien_humanoid_items)
 
 /mob/living/carbon/alien/adult/create_internal_organs()
-	organs += new /obj/item/organ/internal/stomach/alien()
+	organs += new /obj/item/organ/stomach/alien()
 	return ..()
 
 /mob/living/carbon/alien/adult/cuff_resist(obj/item/I)
@@ -127,7 +127,7 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
 	if(!can_consume(lucky_winner))
 		return TRUE
 
-	var/obj/item/organ/internal/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(!istype(melting_pot))
 		visible_message(span_clown("[src] can't seem to consume [lucky_winner]!"), \
 			span_alien("You feel a pain in your... chest? You can't get [lucky_winner] down."))
diff --git a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
index 9e25a12f739..08bbf090aa1 100644
--- a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm
@@ -369,7 +369,7 @@ Doesn't work on other aliens/AI.*/
 	if(!iscarbon(owner))
 		return
 	var/mob/living/carbon/alien/adult/alieninated_owner = owner
-	var/obj/item/organ/internal/stomach/alien/melting_pot = alieninated_owner.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/alien/melting_pot = alieninated_owner.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(!melting_pot)
 		owner.visible_message(span_clown("[src] gags, and spits up a bit of purple liquid. Ewwww."), \
 			span_alien("You feel a pain in your... chest? There's nothing there there's nothing there no no n-"))
@@ -386,14 +386,14 @@ Doesn't work on other aliens/AI.*/
 
 /// Gets the plasma level of this carbon's plasma vessel, or -1 if they don't have one
 /mob/living/carbon/proc/getPlasma()
-	var/obj/item/organ/internal/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel)
+	var/obj/item/organ/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/alien/plasmavessel)
 	if(!vessel)
 		return -1
 	return vessel.stored_plasma
 
 /// Adjusts the plasma level of the carbon's plasma vessel if they have one
 /mob/living/carbon/proc/adjustPlasma(amount)
-	var/obj/item/organ/internal/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/internal/alien/plasmavessel)
+	var/obj/item/organ/alien/plasmavessel/vessel = get_organ_by_type(/obj/item/organ/alien/plasmavessel)
 	if(!vessel)
 		return FALSE
 	vessel.stored_plasma = max(vessel.stored_plasma + amount,0)
diff --git a/code/modules/mob/living/carbon/alien/adult/caste/drone.dm b/code/modules/mob/living/carbon/alien/adult/caste/drone.dm
index ff208baabd2..c238f1013ab 100644
--- a/code/modules/mob/living/carbon/alien/adult/caste/drone.dm
+++ b/code/modules/mob/living/carbon/alien/adult/caste/drone.dm
@@ -10,9 +10,9 @@
 	return ..()
 
 /mob/living/carbon/alien/adult/drone/create_internal_organs()
-	organs += new /obj/item/organ/internal/alien/plasmavessel/large
-	organs += new /obj/item/organ/internal/alien/resinspinner
-	organs += new /obj/item/organ/internal/alien/acid
+	organs += new /obj/item/organ/alien/plasmavessel/large
+	organs += new /obj/item/organ/alien/resinspinner
+	organs += new /obj/item/organ/alien/acid
 	return ..()
 
 /datum/action/cooldown/alien/evolve_to_praetorian
@@ -33,7 +33,7 @@
 		return FALSE
 
 	var/mob/living/carbon/alien/adult/royal/evolver = owner
-	var/obj/item/organ/internal/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/internal/alien/hivenode)
+	var/obj/item/organ/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/alien/hivenode)
 	// Players are Murphy's Law. We may not expect
 	// there to ever be a living xeno with no hivenode,
 	// but they _WILL_ make it happen.
diff --git a/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm b/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm
index 51d9a3bce1b..3bfbe796164 100644
--- a/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/adult/caste/hunter.dm
@@ -10,7 +10,7 @@
 	var/pounce_speed = 2
 
 /mob/living/carbon/alien/adult/hunter/create_internal_organs()
-	organs += new /obj/item/organ/internal/alien/plasmavessel/small
+	organs += new /obj/item/organ/alien/plasmavessel/small
 	..()
 
 //Hunter verbs
diff --git a/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm
index 8fa142a38f0..473cdfafec2 100644
--- a/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm
+++ b/code/modules/mob/living/carbon/alien/adult/caste/praetorian.dm
@@ -19,10 +19,10 @@
 	return ..()
 
 /mob/living/carbon/alien/adult/royal/praetorian/create_internal_organs()
-	organs += new /obj/item/organ/internal/alien/plasmavessel/large
-	organs += new /obj/item/organ/internal/alien/resinspinner
-	organs += new /obj/item/organ/internal/alien/acid
-	organs += new /obj/item/organ/internal/alien/neurotoxin
+	organs += new /obj/item/organ/alien/plasmavessel/large
+	organs += new /obj/item/organ/alien/resinspinner
+	organs += new /obj/item/organ/alien/acid
+	organs += new /obj/item/organ/alien/neurotoxin
 	return ..()
 
 /datum/action/cooldown/alien/evolve_to_queen
@@ -43,7 +43,7 @@
 		return FALSE
 
 	var/mob/living/carbon/alien/adult/royal/evolver = owner
-	var/obj/item/organ/internal/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/internal/alien/hivenode)
+	var/obj/item/organ/alien/hivenode/node = evolver.get_organ_by_type(/obj/item/organ/alien/hivenode)
 	if(!node || node.recent_queen_death)
 		return FALSE
 
diff --git a/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm
index bef621905f4..2560522c405 100644
--- a/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm
+++ b/code/modules/mob/living/carbon/alien/adult/caste/sentinel.dm
@@ -11,7 +11,7 @@
 	return ..()
 
 /mob/living/carbon/alien/adult/sentinel/create_internal_organs()
-	organs += new /obj/item/organ/internal/alien/plasmavessel
-	organs += new /obj/item/organ/internal/alien/acid
-	organs += new /obj/item/organ/internal/alien/neurotoxin
+	organs += new /obj/item/organ/alien/plasmavessel
+	organs += new /obj/item/organ/alien/acid
+	organs += new /obj/item/organ/alien/neurotoxin
 	..()
diff --git a/code/modules/mob/living/carbon/alien/adult/death.dm b/code/modules/mob/living/carbon/alien/adult/death.dm
index ce99343ea2c..d71d466089c 100644
--- a/code/modules/mob/living/carbon/alien/adult/death.dm
+++ b/code/modules/mob/living/carbon/alien/adult/death.dm
@@ -15,7 +15,7 @@
 	for(var/mob/living/carbon/C in GLOB.alive_mob_list)
 		if(C == src) //Make sure not to proc it on ourselves.
 			continue
-		var/obj/item/organ/internal/alien/hivenode/node = C.get_organ_by_type(/obj/item/organ/internal/alien/hivenode)
+		var/obj/item/organ/alien/hivenode/node = C.get_organ_by_type(/obj/item/organ/alien/hivenode)
 		if(istype(node)) // just in case someone would ever add a diffirent node to hivenode slot
 			node.queen_death()
 
diff --git a/code/modules/mob/living/carbon/alien/adult/queen.dm b/code/modules/mob/living/carbon/alien/adult/queen.dm
index a925b4c5460..8cbd5571977 100644
--- a/code/modules/mob/living/carbon/alien/adult/queen.dm
+++ b/code/modules/mob/living/carbon/alien/adult/queen.dm
@@ -65,11 +65,11 @@
 	return ..()
 
 /mob/living/carbon/alien/adult/royal/queen/create_internal_organs()
-	organs += new /obj/item/organ/internal/alien/plasmavessel/large/queen
-	organs += new /obj/item/organ/internal/alien/resinspinner
-	organs += new /obj/item/organ/internal/alien/acid
-	organs += new /obj/item/organ/internal/alien/neurotoxin
-	organs += new /obj/item/organ/internal/alien/eggsac
+	organs += new /obj/item/organ/alien/plasmavessel/large/queen
+	organs += new /obj/item/organ/alien/resinspinner
+	organs += new /obj/item/organ/alien/acid
+	organs += new /obj/item/organ/alien/neurotoxin
+	organs += new /obj/item/organ/alien/eggsac
 	return ..()
 
 //Queen verbs
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index e5da7a47665..6c24358ce17 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -53,12 +53,12 @@
 		CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_has_trait), src, TRAIT_ADVANCEDTOOLUSER))
 
 /mob/living/carbon/alien/create_internal_organs()
-	organs += new /obj/item/organ/internal/brain/alien
-	organs += new /obj/item/organ/internal/alien/hivenode
-	organs += new /obj/item/organ/internal/tongue/alien
-	organs += new /obj/item/organ/internal/eyes/alien
-	organs += new /obj/item/organ/internal/liver/alien
-	organs += new /obj/item/organ/internal/ears
+	organs += new /obj/item/organ/brain/alien
+	organs += new /obj/item/organ/alien/hivenode
+	organs += new /obj/item/organ/tongue/alien
+	organs += new /obj/item/organ/eyes/alien
+	organs += new /obj/item/organ/liver/alien
+	organs += new /obj/item/organ/ears
 	..()
 
 /mob/living/carbon/alien/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) // beepsky won't hunt aliums
@@ -100,7 +100,7 @@ Des: Gives the client of the alien an image on each infected mob.
 		for (var/i in GLOB.mob_living_list)
 			var/mob/living/L = i
 			if(HAS_TRAIT(L, TRAIT_XENO_HOST))
-				var/obj/item/organ/internal/body_egg/alien_embryo/A = L.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo)
+				var/obj/item/organ/body_egg/alien_embryo/A = L.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo)
 				if(A)
 					var/I = image('icons/mob/nonhuman-player/alien.dmi', loc = L, icon_state = "infected[A.stage]")
 					client.images += I
@@ -139,8 +139,8 @@ Des: Removes all infected images from the alien.
 		mind.name = new_xeno.real_name
 		mind.transfer_to(new_xeno)
 
-	var/obj/item/organ/internal/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH)
-	var/obj/item/organ/internal/stomach/alien/frying_pan = new_xeno.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/alien/melting_pot = get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/alien/frying_pan = new_xeno.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(istype(melting_pot) && istype(frying_pan))
 		for (var/atom/movable/poor_sod as anything in melting_pot.stomach_contents)
 			frying_pan.consume_thing(poor_sod)
diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm
index 9a6319c3092..4aeed5c2b9d 100644
--- a/code/modules/mob/living/carbon/alien/alien_defense.dm
+++ b/code/modules/mob/living/carbon/alien/alien_defense.dm
@@ -74,7 +74,7 @@ In all, this is a lot like the monkey code. /N
 	if(!. || QDELETED(src))
 		return FALSE
 
-	var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
 	switch (severity)
 		if (EXPLODE_DEVASTATE)
 			gib(DROP_ALL_REMAINS)
diff --git a/code/modules/mob/living/carbon/alien/alien_say.dm b/code/modules/mob/living/carbon/alien/alien_say.dm
index 4cfdc265abf..29f55300d91 100644
--- a/code/modules/mob/living/carbon/alien/alien_say.dm
+++ b/code/modules/mob/living/carbon/alien/alien_say.dm
@@ -20,6 +20,6 @@
 	..(message, shown_name, TRUE)
 
 /mob/living/carbon/hivecheck()
-	var/obj/item/organ/internal/alien/hivenode/N = get_organ_by_type(/obj/item/organ/internal/alien/hivenode)
+	var/obj/item/organ/alien/hivenode/N = get_organ_by_type(/obj/item/organ/alien/hivenode)
 	if(N && !N.recent_queen_death) //Mob has alien hive node and is not under the dead queen special effect.
 		return TRUE
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index f4159813ed9..39915a0384d 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -40,7 +40,7 @@
 	return ..()
 
 /mob/living/carbon/alien/larva/create_internal_organs()
-	organs += new /obj/item/organ/internal/alien/plasmavessel/small/tiny
+	organs += new /obj/item/organ/alien/plasmavessel/small/tiny
 	..()
 
 //This needs to be fixed
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index 52f7b8dfc47..a8de80b7058 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -14,7 +14,7 @@
 	if(HAS_TRAIT(src, TRAIT_GODMODE))
 		return
 	if(stat != DEAD)
-		if(health <= -maxHealth || !get_organ_by_type(/obj/item/organ/internal/brain))
+		if(health <= -maxHealth || !get_organ_by_type(/obj/item/organ/brain))
 			death()
 			return
 		if((HAS_TRAIT(src, TRAIT_KNOCKEDOUT)))
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index ac9fd81cf97..7db1bb103cc 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -1,14 +1,14 @@
-/obj/item/organ/internal/alien
+/obj/item/organ/alien
 	icon_state = "acid"
-	food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/acid = 10)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/acid = 10)
 
-/obj/item/organ/internal/alien/plasmavessel
+/obj/item/organ/alien/plasmavessel
 	name = "plasma vessel"
 	icon_state = "plasma"
 	w_class = WEIGHT_CLASS_NORMAL
 	zone = BODY_ZONE_CHEST
 	slot = ORGAN_SLOT_XENO_PLASMAVESSEL
-	food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/plasma = 10)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/plasma = 10)
 	actions_types = list(
 		/datum/action/cooldown/alien/make_structure/plant_weeds,
 		/datum/action/cooldown/alien/transfer,
@@ -23,7 +23,7 @@
 	/// The rate this organ regenerates plasma at per second.
 	var/plasma_rate = 5
 
-/obj/item/organ/internal/alien/plasmavessel/large
+/obj/item/organ/alien/plasmavessel/large
 	name = "large plasma vessel"
 	icon_state = "plasma_large"
 	w_class = WEIGHT_CLASS_BULKY
@@ -31,10 +31,10 @@
 	max_plasma = 500
 	plasma_rate = 7.5
 
-/obj/item/organ/internal/alien/plasmavessel/large/queen
+/obj/item/organ/alien/plasmavessel/large/queen
 	plasma_rate = 10
 
-/obj/item/organ/internal/alien/plasmavessel/small
+/obj/item/organ/alien/plasmavessel/small
 	name = "small plasma vessel"
 	icon_state = "plasma_small"
 	w_class = WEIGHT_CLASS_SMALL
@@ -42,14 +42,14 @@
 	max_plasma = 150
 	plasma_rate = 2.5
 
-/obj/item/organ/internal/alien/plasmavessel/small/tiny
+/obj/item/organ/alien/plasmavessel/small/tiny
 	name = "tiny plasma vessel"
 	icon_state = "plasma_tiny"
 	w_class = WEIGHT_CLASS_TINY
 	max_plasma = 100
 	actions_types = list(/datum/action/cooldown/alien/transfer)
 
-/obj/item/organ/internal/alien/plasmavessel/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/alien/plasmavessel/on_life(seconds_per_tick, times_fired)
 	var/delta_time = DELTA_WORLD_TIME(SSmobs)
 	//Instantly healing to max health in a single tick would be silly. If it takes 8 seconds to fire, then something's fucked.
 	var/delta_time_capped = min(delta_time, 8)
@@ -68,27 +68,27 @@
 	else
 		owner.adjustPlasma(0.1 * plasma_rate * delta_time)
 
-/obj/item/organ/internal/alien/plasmavessel/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/alien/plasmavessel/on_mob_insert(mob/living/carbon/organ_owner)
 	. = ..()
 	if(isalien(organ_owner))
 		var/mob/living/carbon/alien/target_alien = organ_owner
 		target_alien.updatePlasmaDisplay()
 	RegisterSignal(organ_owner, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item))
 
-/obj/item/organ/internal/alien/plasmavessel/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/alien/plasmavessel/on_mob_remove(mob/living/carbon/organ_owner)
 	. = ..()
 	if(isalien(organ_owner))
 		var/mob/living/carbon/alien/organ_owner_alien = organ_owner
 		organ_owner_alien.updatePlasmaDisplay()
 	UnregisterSignal(organ_owner, COMSIG_MOB_GET_STATUS_TAB_ITEMS)
 
-/obj/item/organ/internal/alien/plasmavessel/proc/get_status_tab_item(mob/living/carbon/source, list/items)
+/obj/item/organ/alien/plasmavessel/proc/get_status_tab_item(mob/living/carbon/source, list/items)
 	SIGNAL_HANDLER
 	items += "Plasma Stored: [stored_plasma]/[max_plasma]"
 
 #define QUEEN_DEATH_DEBUFF_DURATION 2400
 
-/obj/item/organ/internal/alien/hivenode
+/obj/item/organ/alien/hivenode
 	name = "hive node"
 	icon_state = "hivenode"
 	zone = BODY_ZONE_HEAD
@@ -99,17 +99,17 @@
 	/// Indicates if the queen died recently, aliens are heavily weakened while this is active.
 	var/recent_queen_death = FALSE
 
-/obj/item/organ/internal/alien/hivenode/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/alien/hivenode/on_mob_insert(mob/living/carbon/organ_owner)
 	. = ..()
 	organ_owner.faction |= ROLE_ALIEN
 
-/obj/item/organ/internal/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
+/obj/item/organ/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
 	if(organ_owner)
 		organ_owner.faction -= ROLE_ALIEN
 	return ..()
 
 //When the alien queen dies, all aliens suffer a penalty as punishment for failing to protect her.
-/obj/item/organ/internal/alien/hivenode/proc/queen_death()
+/obj/item/organ/alien/hivenode/proc/queen_death()
 	if(!owner || owner.stat == DEAD)
 		return
 	if(isalien(owner)) //Different effects for aliens than humans
@@ -132,7 +132,7 @@
 	addtimer(CALLBACK(src, PROC_REF(clear_queen_death)), QUEEN_DEATH_DEBUFF_DURATION)
 
 
-/obj/item/organ/internal/alien/hivenode/proc/clear_queen_death()
+/obj/item/organ/alien/hivenode/proc/clear_queen_death()
 	if(QDELETED(src)) //In case the node is deleted
 		return
 	recent_queen_death = FALSE
@@ -143,7 +143,7 @@
 
 #undef QUEEN_DEATH_DEBUFF_DURATION
 
-/obj/item/organ/internal/alien/resinspinner
+/obj/item/organ/alien/resinspinner
 	name = "resin spinner"
 	icon_state = "spinner-x"
 	zone = BODY_ZONE_PRECISE_MOUTH
@@ -151,7 +151,7 @@
 	actions_types = list(/datum/action/cooldown/alien/make_structure/resin)
 
 
-/obj/item/organ/internal/alien/acid
+/obj/item/organ/alien/acid
 	name = "acid gland"
 	icon_state = "acid"
 	zone = BODY_ZONE_PRECISE_MOUTH
@@ -159,7 +159,7 @@
 	actions_types = list(/datum/action/cooldown/alien/acid/corrosion)
 
 
-/obj/item/organ/internal/alien/neurotoxin
+/obj/item/organ/alien/neurotoxin
 	name = "neurotoxin gland"
 	icon_state = "neurotox"
 	zone = BODY_ZONE_PRECISE_MOUTH
@@ -167,7 +167,7 @@
 	actions_types = list(/datum/action/cooldown/alien/acid/neurotoxin)
 
 
-/obj/item/organ/internal/alien/eggsac
+/obj/item/organ/alien/eggsac
 	name = "egg sac"
 	icon_state = "eggsac"
 	zone = BODY_ZONE_PRECISE_GROIN
@@ -176,18 +176,18 @@
 	actions_types = list(/datum/action/cooldown/alien/make_structure/lay_egg)
 
 /// The stomach that lets aliens eat people/things
-/obj/item/organ/internal/stomach/alien
+/obj/item/organ/stomach/alien
 	name = "alien stomach"
 	icon_state = "stomach-x"
 	w_class = WEIGHT_CLASS_BULKY
 	actions_types = list(/datum/action/cooldown/alien/regurgitate)
 	var/list/atom/movable/stomach_contents = list()
 
-/obj/item/organ/internal/stomach/alien/Destroy()
+/obj/item/organ/stomach/alien/Destroy()
 	QDEL_LIST(stomach_contents)
 	return ..()
 
-/obj/item/organ/internal/stomach/alien/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/stomach/alien/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if(!owner || SSmobs.times_fired % 3 != 0)
 		return
@@ -198,7 +198,7 @@
 			continue
 		thing.acid_act(75, 10)
 
-/obj/item/organ/internal/stomach/alien/proc/consume_thing(atom/movable/thing)
+/obj/item/organ/stomach/alien/proc/consume_thing(atom/movable/thing)
 	RegisterSignal(thing, COMSIG_MOVABLE_MOVED, PROC_REF(content_moved))
 	RegisterSignal(thing, COMSIG_QDELETING, PROC_REF(content_deleted))
 	if(isliving(thing))
@@ -206,30 +206,30 @@
 	stomach_contents += thing
 	thing.forceMove(owner || src) // We assert that if we have no owner, we will not be nullspaced
 
-/obj/item/organ/internal/stomach/alien/proc/content_died(atom/movable/source)
+/obj/item/organ/stomach/alien/proc/content_died(atom/movable/source)
 	SIGNAL_HANDLER
 	qdel(source)
 
-/obj/item/organ/internal/stomach/alien/proc/content_deleted(atom/movable/source)
+/obj/item/organ/stomach/alien/proc/content_deleted(atom/movable/source)
 	SIGNAL_HANDLER
 	stomach_contents -= source
 
-/obj/item/organ/internal/stomach/alien/proc/content_moved(atom/movable/source)
+/obj/item/organ/stomach/alien/proc/content_moved(atom/movable/source)
 	SIGNAL_HANDLER
 	if(source.loc == src || source.loc == owner) // not in us? out da list then
 		return
 	stomach_contents -= source
 	UnregisterSignal(source, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_DEATH, COMSIG_QDELETING))
 
-/obj/item/organ/internal/stomach/alien/mob_insert(mob/living/carbon/stomach_owner, special, movement_flags)
+/obj/item/organ/stomach/alien/mob_insert(mob/living/carbon/stomach_owner, special, movement_flags)
 	RegisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE, PROC_REF(something_moved))
 	return ..()
 
-/obj/item/organ/internal/stomach/alien/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
+/obj/item/organ/stomach/alien/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
 	UnregisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE)
 	return ..()
 
-/obj/item/organ/internal/stomach/alien/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
+/obj/item/organ/stomach/alien/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
 	. = ..()
 	if(loc == null && owner)
 		for(var/atom/movable/thing as anything in contents)
@@ -238,12 +238,12 @@
 		for(var/atom/movable/thing as anything in contents)
 			thing.forceMove(src)
 
-/obj/item/organ/internal/stomach/alien/proc/something_moved(mob/living/source, mob/living/user, direction)
+/obj/item/organ/stomach/alien/proc/something_moved(mob/living/source, mob/living/user, direction)
 	SIGNAL_HANDLER
 	relaymove(user, direction)
 	return COMSIG_BLOCK_RELAYMOVE
 
-/obj/item/organ/internal/stomach/alien/relaymove(mob/living/user, direction)
+/obj/item/organ/stomach/alien/relaymove(mob/living/user, direction)
 	if(!(user in src.stomach_contents))
 		return
 	if(!prob(40))
@@ -327,7 +327,7 @@
 		owner.gib(DROP_ALL_REMAINS)
 	qdel(src)
 
-/obj/item/organ/internal/stomach/alien/proc/eject_stomach(list/turf/targets, spit_range, content_speed, particle_delay, particle_count=4)
+/obj/item/organ/stomach/alien/proc/eject_stomach(list/turf/targets, spit_range, content_speed, particle_delay, particle_count=4)
 	var/atom/spit_as = owner || src
 	// Throw out the stuff in our stomach
 	for(var/atom/movable/thing as anything in stomach_contents)
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index fb90df140e6..97d4c4265de 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -1,10 +1,10 @@
 // This is to replace the previous datum/disease/alien_embryo for slightly improved handling and maintainability
 // It functions almost identically (see code/datums/diseases/alien_embryo.dm)
-/obj/item/organ/internal/body_egg/alien_embryo
+/obj/item/organ/body_egg/alien_embryo
 	name = "alien embryo"
 	icon = 'icons/mob/nonhuman-player/alien.dmi'
 	icon_state = "larva0_dead"
-	food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/acid = 10)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/acid = 10)
 	///What stage of growth the embryo is at. Developed embryos give the host symptoms suggesting that an embryo is inside them.
 	var/stage = 0
 	/// Are we bursting out of the poor sucker who's the xeno mom?
@@ -12,11 +12,11 @@
 	/// How long does it take to advance one stage? Growth time * 5 = how long till we make a Larva!
 	var/growth_time = 60 SECONDS
 
-/obj/item/organ/internal/body_egg/alien_embryo/Initialize(mapload)
+/obj/item/organ/body_egg/alien_embryo/Initialize(mapload)
 	. = ..()
 	advance_embryo_stage()
 
-/obj/item/organ/internal/body_egg/alien_embryo/on_find(mob/living/finder)
+/obj/item/organ/body_egg/alien_embryo/on_find(mob/living/finder)
 	..()
 	if(stage < 5)
 		to_chat(finder, span_notice("It's small and weak, barely the size of a foetus."))
@@ -25,7 +25,7 @@
 		if(prob(10))
 			attempt_grow(gib_on_success = FALSE)
 
-/obj/item/organ/internal/body_egg/alien_embryo/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/body_egg/alien_embryo/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if(QDELETED(src) || QDELETED(owner))
 		return
@@ -58,7 +58,7 @@
 			owner.adjustToxLoss(5 * seconds_per_tick) // Why is this [TOX]?
 
 /// Controls Xenomorph Embryo growth. If embryo is fully grown (or overgrown), stop the proc. If not, increase the stage by one and if it's not fully grown (stage 6), add a timer to do this proc again after however long the growth time variable is.
-/obj/item/organ/internal/body_egg/alien_embryo/proc/advance_embryo_stage()
+/obj/item/organ/body_egg/alien_embryo/proc/advance_embryo_stage()
 	if(stage >= 6)
 		return
 	stage++
@@ -73,7 +73,7 @@
 
 		addtimer(CALLBACK(src, PROC_REF(advance_embryo_stage)), growth_time*slowdown)
 
-/obj/item/organ/internal/body_egg/alien_embryo/egg_process()
+/obj/item/organ/body_egg/alien_embryo/egg_process()
 	if(stage == 6 && prob(50))
 		for(var/datum/surgery/operations as anything in owner.surgeries)
 			if(operations.location != BODY_ZONE_CHEST)
@@ -85,7 +85,7 @@
 		attempt_grow()
 
 /// Attempt to burst an alien outside of the host, getting a ghost to play as the xeno.
-/obj/item/organ/internal/body_egg/alien_embryo/proc/attempt_grow(gib_on_success = TRUE)
+/obj/item/organ/body_egg/alien_embryo/proc/attempt_grow(gib_on_success = TRUE)
 	if(QDELETED(owner) || bursting)
 		return
 
@@ -104,7 +104,7 @@
 	on_poll_concluded(gib_on_success, chosen_one)
 
 /// Poll has concluded with a suitor
-/obj/item/organ/internal/body_egg/alien_embryo/proc/on_poll_concluded(gib_on_success, mob/dead/observer/ghost)
+/obj/item/organ/body_egg/alien_embryo/proc/on_poll_concluded(gib_on_success, mob/dead/observer/ghost)
 	if(QDELETED(owner))
 		return
 
@@ -157,7 +157,7 @@
 Proc: AddInfectionImages(C)
 Des: Adds the infection image to all aliens for this embryo
 ----------------------------------------*/
-/obj/item/organ/internal/body_egg/alien_embryo/AddInfectionImages()
+/obj/item/organ/body_egg/alien_embryo/AddInfectionImages()
 	for(var/mob/living/carbon/alien/alien in GLOB.player_list)
 		var/I = image('icons/mob/nonhuman-player/alien.dmi', loc = owner, icon_state = "infected[stage]")
 		alien.client?.images += I
@@ -166,7 +166,7 @@ Des: Adds the infection image to all aliens for this embryo
 Proc: RemoveInfectionImage(C)
 Des: Removes all images from the mob infected by this embryo
 ----------------------------------------*/
-/obj/item/organ/internal/body_egg/alien_embryo/RemoveInfectionImages()
+/obj/item/organ/body_egg/alien_embryo/RemoveInfectionImages()
 	for(var/mob/living/carbon/alien/alien in GLOB.player_list)
 		for(var/image/I in alien.client?.images)
 			var/searchfor = "infected"
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index 12eafbc3568..1a278f4aaa5 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -213,8 +213,8 @@
 		worn_icon_state = "[base_icon_state]_impregnated"
 
 		var/obj/item/bodypart/chest/LC = target.get_bodypart(BODY_ZONE_CHEST)
-		if((!LC || IS_ORGANIC_LIMB(LC)) && !target.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo))
-			new /obj/item/organ/internal/body_egg/alien_embryo(target)
+		if((!LC || IS_ORGANIC_LIMB(LC)) && !target.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo))
+			new /obj/item/organ/body_egg/alien_embryo(target)
 			target.log_message("was impregnated by a facehugger", LOG_GAME)
 			target.log_message("was impregnated by a facehugger", LOG_VICTIM, log_globally = FALSE)
 			if(target.stat != DEAD && istype(target.buckled, /obj/structure/bed/nest)) //Handles toggling the nest sustenance status effect if the user was already buckled to a nest.
@@ -257,7 +257,7 @@
 	AddComponent(/datum/component/knockoff, knockoff_chance = 40, target_zones = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST), slots_knockoffable = slot_flags)
 
 /obj/item/clothing/mask/facehugger/allow_attack_hand_drop(mob/living/carbon/human/user)
-	if(!real || sterile || user.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo))
+	if(!real || sterile || user.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo))
 		return ..()
 	if(istype(user) && ishuman(loc) && stat != DEAD)
 		if(user == loc && user.get_item_by_slot(slot_flags) == src)
@@ -269,7 +269,7 @@
 	var/mob/living/carbon/human/wearer = loc
 	if(!istype(wearer) || user != wearer)
 		return
-	if(!real || sterile || user.get_organ_by_type(/obj/item/organ/internal/body_egg/alien_embryo))
+	if(!real || sterile || user.get_organ_by_type(/obj/item/organ/body_egg/alien_embryo))
 		return ..()
 	if(wearer.get_item_by_slot(slot_flags) == src && stat != DEAD)
 		to_chat(user, span_userdanger("[src] is latched on too tight! Get help or wait for it to let go!"))
@@ -281,7 +281,7 @@
 		return FALSE
 	if(M.stat == DEAD)
 		return FALSE
-	if(M.get_organ_by_type(/obj/item/organ/internal/alien/hivenode))
+	if(M.get_organ_by_type(/obj/item/organ/alien/hivenode))
 		return FALSE
 	var/mob/living/carbon/C = M
 	if(ishuman(C) && !(C.dna.species.no_equip_flags & ITEM_SLOT_MASK))
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 157987c722e..1bec7342602 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -166,6 +166,13 @@
 		if(start_T && end_T)
 			log_combat(src, thrown_thing, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")
 	var/power_throw = 0
+	var/extra_throw_range = HAS_TRAIT(src, TRAIT_THROWINGARM) ? 2 : 0
+
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
+	if(istype(potential_spine))
+		power_throw += potential_spine.added_throw_speed
+		extra_throw_range += potential_spine.added_throw_range
+
 	if(HAS_TRAIT(src, TRAIT_HULK))
 		power_throw++
 	if(HAS_TRAIT(src, TRAIT_DWARF))
@@ -202,11 +209,6 @@
 	visible_message(span_danger("[src] [verb_text][plural_s(verb_text)] [thrown_thing][power_throw_text]"), \
 					span_danger("You [verb_text] [thrown_thing][power_throw_text]"))
 	log_message("has thrown [thrown_thing] [power_throw_text]", LOG_ATTACK)
-	var/extra_throw_range = HAS_TRAIT(src, TRAIT_THROWINGARM) ? 2 : 0
-
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
-	if(istype(potential_spine))
-		extra_throw_range += potential_spine.added_throw_range
 
 	var/drift_force = max(0.5 NEWTONS, 1 NEWTONS + power_throw)
 	if (isitem(thrown_thing))
@@ -598,7 +600,7 @@
 	lighting_cutoff = initial(lighting_cutoff)
 	lighting_color_cutoffs = list(lighting_cutoff_red, lighting_cutoff_green, lighting_cutoff_blue)
 
-	var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
 	if(eyes)
 		set_invis_see(eyes.see_invisible)
 		new_sight |= eyes.sight_flags
@@ -654,7 +656,7 @@
 	for(var/obj/item/clothing/worn_item in get_equipped_items())
 		tint += worn_item.tint
 
-	var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
 	if(eyes)
 		tint += eyes.tint
 
@@ -955,7 +957,7 @@
 	return ..()
 
 /mob/living/carbon/can_be_revived()
-	if(!get_organ_by_type(/obj/item/organ/internal/brain) && (!IS_CHANGELING(src)) || HAS_TRAIT(src, TRAIT_HUSK))
+	if(!get_organ_by_type(/obj/item/organ/brain) && (!IS_CHANGELING(src)) || HAS_TRAIT(src, TRAIT_HUSK))
 		return FALSE
 //NOVA EDIT ADDITION - DNR TRAIT
 	if(HAS_TRAIT(src, TRAIT_DNR))
@@ -983,7 +985,7 @@
 
 	// Only check for a heart if they actually need a heart. Who would've thunk
 	if (needs_heart())
-		var/obj/item/organ/internal/heart = get_organ_by_type(/obj/item/organ/internal/heart)
+		var/obj/item/organ/heart = get_organ_by_type(/obj/item/organ/heart)
 
 		if (!heart)
 			return DEFIB_FAIL_NO_HEART
@@ -991,7 +993,7 @@
 		if (heart.organ_flags & ORGAN_FAILING)
 			return DEFIB_FAIL_FAILING_HEART
 
-	var/obj/item/organ/internal/brain/current_brain = get_organ_by_type(/obj/item/organ/internal/brain)
+	var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain)
 
 	if (QDELETED(current_brain))
 		return DEFIB_FAIL_NO_BRAIN
@@ -1102,7 +1104,7 @@
 	add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bodypart, update = TRUE, multiplicative_slowdown = final_modification)
 
 /mob/living/carbon/proc/create_internal_organs()
-	for(var/obj/item/organ/internal/internal_organ in organs)
+	for(var/obj/item/organ/internal_organ in organs)
 		internal_organ.Insert(src)
 
 /proc/cmp_organ_slot_asc(slot_a, slot_b)
@@ -1355,7 +1357,7 @@
 /mob/living/carbon/proc/adjust_skillchip_complexity_modifier(delta)
 	skillchip_complexity_modifier += delta
 
-	var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
 
 	if(!brain)
 		return
@@ -1484,7 +1486,7 @@
 /// Accepts an optional timeout after which we remove the tail wagging
 /// Returns true if successful, false otherwise
 /mob/living/carbon/proc/wag_tail(timeout = INFINITY)
-	var/obj/item/organ/external/tail/wagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+	var/obj/item/organ/tail/wagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 	if(!wagged)
 		return FALSE
 	return wagged.start_wag(src, timeout)
@@ -1492,7 +1494,7 @@
 /// Helper to cleanly stop all tail wagging
 /// Returns true if successful, false otherwise
 /mob/living/carbon/proc/unwag_tail() // can't unwag a tail
-	var/obj/item/organ/external/tail/unwagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+	var/obj/item/organ/tail/unwagged = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 	if(!unwagged)
 		return FALSE
 	return unwagged.stop_wag(src)
diff --git a/code/modules/mob/living/carbon/carbon_context.dm b/code/modules/mob/living/carbon/carbon_context.dm
index 59d3a6db71a..b376ea3e113 100644
--- a/code/modules/mob/living/carbon/carbon_context.dm
+++ b/code/modules/mob/living/carbon/carbon_context.dm
@@ -25,7 +25,7 @@
 			if (body_position == STANDING_UP)
 				if(check_zone(user.zone_selected) == BODY_ZONE_HEAD && get_bodypart(BODY_ZONE_HEAD))
 					context[SCREENTIP_CONTEXT_LMB] = "Headpat"
-				else if(user.zone_selected == BODY_ZONE_PRECISE_GROIN && !isnull(get_organ_by_type(/obj/item/organ/external/tail)))
+				else if(user.zone_selected == BODY_ZONE_PRECISE_GROIN && !isnull(get_organ_by_type(/obj/item/organ/tail)))
 					context[SCREENTIP_CONTEXT_LMB] = "Pull tail"
 				else
 					context[SCREENTIP_CONTEXT_LMB] = "Hug"
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 5511df58083..8809c8c6195 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -4,7 +4,7 @@
 	. = ..()
 	if(is_blind() && !is_blind_from(list(UNCONSCIOUS_TRAIT, HYPNOCHAIR_TRAIT)))
 		return INFINITY //For all my homies that can not see in the world
-	var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
 	if(eyes)
 		. += eyes.flash_protect
 	else
@@ -20,7 +20,7 @@
 	. = ..()
 	if(HAS_TRAIT(src, TRAIT_DEAF))
 		return INFINITY //For all my homies that can not hear in the world
-	var/obj/item/organ/internal/ears/E = get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/E = get_organ_slot(ORGAN_SLOT_EARS)
 	if(!E)
 		return INFINITY
 	else
@@ -45,7 +45,7 @@
 	return null
 
 /mob/living/carbon/is_pepper_proof(check_flags = ALL)
-	var/obj/item/organ/internal/eyes/eyes = get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/eyes = get_organ_by_type(/obj/item/organ/eyes)
 	if(eyes && eyes.pepperspray_protect)
 		return eyes
 	if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & PEPPERPROOF))
@@ -347,12 +347,12 @@
 			to_chat(helper, span_warning("[src] looks visibly upset as you pat [p_them()] on the head."))
 		//NOVA EDIT ADDITION BEGIN - EMOTES
 		if(HAS_TRAIT(src, TRAIT_EXCITABLE))
-			var/obj/item/organ/external/tail/src_tail = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+			var/obj/item/organ/tail/src_tail = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 			if(src_tail && !(src_tail.wag_flags & WAG_WAGGING))
 				emote("wag")
 		//NOVA EDIT ADDITION END
 
-	else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && !isnull(src.get_organ_by_type(/obj/item/organ/external/tail)))
+	else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && !isnull(src.get_organ_by_type(/obj/item/organ/tail)))
 		helper.visible_message(span_notice("[helper] pulls on [src]'s tail!"), \
 					null, span_hear("You hear a soft patter."), DEFAULT_MESSAGE_RANGE, list(helper, src))
 		to_chat(helper, span_notice("You pull on [src]'s tail!"))
@@ -473,7 +473,7 @@
 
 
 /mob/living/carbon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25)
-	var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
 	if(!eyes) //can't flash what can't see!
 		return
 
@@ -524,7 +524,7 @@
 	SEND_SIGNAL(src, COMSIG_CARBON_SOUNDBANG, reflist)
 	intensity = reflist[1]
 	var/ear_safety = get_ear_protection()
-	var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
 	var/effect_amount = intensity - ear_safety
 	if(effect_amount > 0)
 		if(stun_pwr)
@@ -566,7 +566,7 @@
 
 /mob/living/carbon/can_hear()
 	. = FALSE
-	var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
 	if(ears && !HAS_TRAIT(src, TRAIT_DEAF))
 		. = TRUE
 	if(health <= hardcrit_threshold && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))
@@ -741,7 +741,7 @@
 		body_parts -= part
 	GLOB.bioscrambler_valid_parts = body_parts
 
-	var/list/organs = subtypesof(/obj/item/organ/internal) + subtypesof(/obj/item/organ/external)
+	var/list/organs = subtypesof(/obj/item/organ) + subtypesof(/obj/item/organ)
 	for(var/obj/item/organ/organ_type as anything in organs)
 		if(!is_type_in_typecache(organ_type, GLOB.bioscrambler_organs_blacklist) && !(initial(organ_type.organ_flags) & ORGAN_ROBOTIC))
 			continue
diff --git a/code/modules/mob/living/carbon/carbon_say.dm b/code/modules/mob/living/carbon/carbon_say.dm
index 3e4c29fa0e8..e1dc3d27992 100644
--- a/code/modules/mob/living/carbon/carbon_say.dm
+++ b/code/modules/mob/living/carbon/carbon_say.dm
@@ -7,7 +7,7 @@
 	return ..()
 
 /mob/living/carbon/could_speak_language(datum/language/language_path)
-	var/obj/item/organ/internal/tongue/spoken_with = get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/spoken_with = get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(spoken_with)
 		// the tower of babel needs to bypass the tongue language restrictions without giving omnitongue
 		return HAS_MIND_TRAIT(src, TRAIT_TOWER_OF_BABEL) || spoken_with.could_speak_language(language_path)
diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm
index abf7cdaabdd..bb341008773 100644
--- a/code/modules/mob/living/carbon/death.dm
+++ b/code/modules/mob/living/carbon/death.dm
@@ -34,7 +34,7 @@
 	var/atom/Tsec = drop_location()
 
 	for(var/obj/item/organ/organ as anything in organs)
-		if((drop_bitflags & DROP_BRAIN) && istype(organ, /obj/item/organ/internal/brain))
+		if((drop_bitflags & DROP_BRAIN) && istype(organ, /obj/item/organ/brain))
 			if((drop_bitflags & DROP_BODYPARTS) && (check_zone(organ.zone) != BODY_ZONE_CHEST)) // chests can't drop
 				continue // the head will drop, so the brain should stay inside
 
@@ -43,7 +43,7 @@
 			organ.throw_at(get_edge_target_turf(src, pick(GLOB.alldirs)), rand(1,3), 5)
 			continue
 
-		if((drop_bitflags & DROP_ORGANS) && !istype(organ, /obj/item/organ/internal/brain))
+		if((drop_bitflags & DROP_ORGANS) && !istype(organ, /obj/item/organ/brain))
 			if((drop_bitflags & DROP_BODYPARTS) && (check_zone(organ.zone) != BODY_ZONE_CHEST))
 				continue // only chest & groin organs will be ejected
 
@@ -65,7 +65,7 @@
 
 /mob/living/carbon/set_suicide(suicide_state) //you thought that box trick was pretty clever, didn't you? well now hardmode is on, boyo.
 	. = ..()
-	var/obj/item/organ/internal/brain/userbrain = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/userbrain = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(userbrain)
 		userbrain.suicided = suicide_state
 
diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm
index 1586d27a5ce..bad20ec7d16 100644
--- a/code/modules/mob/living/carbon/examine.dm
+++ b/code/modules/mob/living/carbon/examine.dm
@@ -51,7 +51,7 @@
 	if (length(status_examines))
 		. += status_examines
 
-	if(get_bodypart(BODY_ZONE_HEAD) && !get_organ_by_type(/obj/item/organ/internal/brain))
+	if(get_bodypart(BODY_ZONE_HEAD) && !get_organ_by_type(/obj/item/organ/brain))
 		. += span_deadsay("It appears that [t_his] brain is missing...")
 
 	var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
@@ -239,7 +239,7 @@
 			if(CONSCIOUS)
 				if(HAS_TRAIT(src, TRAIT_DUMB))
 					. += "[t_He] [t_has] a stupid expression on [t_his] face."
-		var/obj/item/organ/internal/brain/brain = get_organ_by_type(/obj/item/organ/internal/brain)
+		var/obj/item/organ/brain/brain = get_organ_by_type(/obj/item/organ/brain)
 		if(brain && isnull(ai_controller))
 			var/npc_message = ""
 			if(HAS_TRAIT(brain, TRAIT_GHOSTROLE_ON_REVIVE))
@@ -381,7 +381,7 @@
 	var/t_his = p_their()
 	var/t_is = p_are()
 	//This checks to see if the body is revivable
-	var/obj/item/organ/brain = get_organ_by_type(/obj/item/organ/internal/brain)
+	var/obj/item/organ/brain = get_organ_by_type(/obj/item/organ/brain)
 	if(brain && HAS_TRAIT(brain, TRAIT_GHOSTROLE_ON_REVIVE))
 		return span_deadsay("[t_He] [t_is] limp and unresponsive; but [t_his] soul might yet come back...")
 	var/client_like = client || HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE)
@@ -583,7 +583,7 @@
 	. = list()
 
 	var/list/cybers = list()
-	for(var/obj/item/organ/internal/cyberimp/cyberimp in organs)
+	for(var/obj/item/organ/cyberimp/cyberimp in organs)
 		if(IS_ROBOTIC_ORGAN(cyberimp) && !(cyberimp.organ_flags & ORGAN_HIDDEN))
 			cybers += cyberimp.examine_title(user)
 	if(length(cybers))
diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm
index 76cb1e25dcc..c4e44f0c512 100644
--- a/code/modules/mob/living/carbon/human/_species.dm
+++ b/code/modules/mob/living/carbon/human/_species.dm
@@ -78,23 +78,23 @@ GLOBAL_LIST_EMPTY(features_by_species)
 	///Internal organs that are unique to this race, like a tail or other cosmetic organs. list(typepath of organ 1, typepath of organ 2 = "Round").
 	var/list/mutant_organs = list()
 	///Replaces default brain with a different organ
-	var/obj/item/organ/internal/brain/mutantbrain = /obj/item/organ/internal/brain
+	var/obj/item/organ/brain/mutantbrain = /obj/item/organ/brain
 	///Replaces default heart with a different organ
-	var/obj/item/organ/internal/heart/mutantheart = /obj/item/organ/internal/heart
+	var/obj/item/organ/heart/mutantheart = /obj/item/organ/heart
 	///Replaces default lungs with a different organ
-	var/obj/item/organ/internal/lungs/mutantlungs = /obj/item/organ/internal/lungs
+	var/obj/item/organ/lungs/mutantlungs = /obj/item/organ/lungs
 	///Replaces default eyes with a different organ
-	var/obj/item/organ/internal/eyes/mutanteyes = /obj/item/organ/internal/eyes
+	var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes
 	///Replaces default ears with a different organ
-	var/obj/item/organ/internal/ears/mutantears = /obj/item/organ/internal/ears
+	var/obj/item/organ/ears/mutantears = /obj/item/organ/ears
 	///Replaces default tongue with a different organ
-	var/obj/item/organ/internal/tongue/mutanttongue = /obj/item/organ/internal/tongue
+	var/obj/item/organ/tongue/mutanttongue = /obj/item/organ/tongue
 	///Replaces default liver with a different organ
-	var/obj/item/organ/internal/liver/mutantliver = /obj/item/organ/internal/liver
+	var/obj/item/organ/liver/mutantliver = /obj/item/organ/liver
 	///Replaces default stomach with a different organ
-	var/obj/item/organ/internal/stomach/mutantstomach = /obj/item/organ/internal/stomach
+	var/obj/item/organ/stomach/mutantstomach = /obj/item/organ/stomach
 	///Replaces default appendix with a different organ.
-	var/obj/item/organ/internal/appendix/mutantappendix = /obj/item/organ/internal/appendix
+	var/obj/item/organ/appendix/mutantappendix = /obj/item/organ/appendix
 
 	/// Store body marking defines. See mobs.dm for bitflags
 	//var/list/body_markings = list() // NOVA EDIT REMOVAL - We already have this defined as an assoc list
@@ -326,7 +326,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
 		if(remove_existing)
 			health_pct = (existing_organ.maxHealth - existing_organ.damage) / existing_organ.maxHealth
 			if(slot == ORGAN_SLOT_BRAIN)
-				var/obj/item/organ/internal/brain/existing_brain = existing_organ
+				var/obj/item/organ/brain/existing_brain = existing_organ
 				existing_brain.before_organ_replacement(new_organ)
 				existing_brain.Remove(organ_holder, special = TRUE, movement_flags = NO_ID_TRANSFER)
 			else
@@ -485,7 +485,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
 		var/obj/item/bodypart/head/noggin = species_human.get_bodypart(BODY_ZONE_HEAD)
 		if(noggin?.head_flags & HEAD_EYESPRITES)
 			// eyes (missing eye sprites get handled by the head itself, but sadly we have to do this stupid shit here, for now)
-			var/obj/item/organ/internal/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES)
+			var/obj/item/organ/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES)
 			if(eye_organ)
 				eye_organ.refresh(call_update = FALSE)
 				standing += eye_organ.generate_body_overlay(species_human)
@@ -662,7 +662,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
 		if(ITEM_SLOT_EYES)
 			if(!H.get_bodypart(BODY_ZONE_HEAD))
 				return FALSE
-			var/obj/item/organ/internal/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES)
+			var/obj/item/organ/eyes/eyes = H.get_organ_slot(ORGAN_SLOT_EYES)
 			if(eyes?.no_glasses)
 				return FALSE
 			return equip_delay_self_check(I, H, bypass_equip_delay_self)
@@ -851,7 +851,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
 		to_chat(user, span_warning("You don't want to harm [target]!"))
 		return FALSE
 
-	var/obj/item/organ/internal/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = user.get_organ_slot(ORGAN_SLOT_BRAIN)
 	var/obj/item/bodypart/attacking_bodypart
 	if(brain)
 		attacking_bodypart = brain.get_attacking_limb(target)
@@ -1391,7 +1391,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
 
 /datum/species/proc/spec_stun(mob/living/carbon/human/H,amount)
 	if((H.movement_type & FLYING) && !H.buckled)
-		var/obj/item/organ/external/wings/functional/wings = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+		var/obj/item/organ/wings/functional/wings = H.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
 		if(wings)
 			wings.toggle_flight(H)
 			wings.fly_slip(H)
@@ -1563,7 +1563,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
 		return null
 
 	var/static/list/food_flags = FOOD_FLAGS
-	var/obj/item/organ/internal/tongue/fake_tongue = mutanttongue
+	var/obj/item/organ/tongue/fake_tongue = mutanttongue
 
 	return list(
 		"liked_food" = bitfield_to_list(initial(fake_tongue.liked_foodtypes), food_flags),
@@ -1886,7 +1886,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
 	var/list/to_add = list()
 
 	var/alcohol_tolerance = initial(mutantliver.alcohol_tolerance)
-	var/obj/item/organ/internal/liver/base_liver = /obj/item/organ/internal/liver
+	var/obj/item/organ/liver/base_liver = /obj/item/organ/liver
 	var/tolerance_difference = alcohol_tolerance - initial(base_liver.alcohol_tolerance)
 
 	if (tolerance_difference != 0)
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 220570faa80..672920633df 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift)
 	if(stat == DEAD)
 		return
 	stop_sound_channel(CHANNEL_HEARTBEAT)
-	var/obj/item/organ/internal/heart/human_heart = get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/human_heart = get_organ_slot(ORGAN_SLOT_HEART)
 	human_heart?.beat = BEAT_NONE
 	human_heart?.Stop()
 
@@ -52,7 +52,7 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift)
 		readout += "<br>[round(reagent.volume, 0.001)] units of [reagent.name]"
 
 	readout += "<br>Stomach:"
-	var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
 	for(var/datum/reagent/bile in belly?.reagents?.reagent_list)
 		if(!belly.food_reagents[bile.type])
 			readout += "<br>[round(bile.volume, 0.001)] units of [bile.name]"
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index b2c316ec292..86d750436e9 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -120,7 +120,7 @@
 
 /datum/emote/living/carbon/human/wag/run_emote(mob/user, params, type_override, intentional)
 	. = ..()
-	var/obj/item/organ/external/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+	var/obj/item/organ/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 	//I am so sorry my son
 	//We bypass helpers here cause we already have the tail
 	if(oranges_accessory.wag_flags & WAG_WAGGING) //We verified the tail exists in can_run_emote()
@@ -130,14 +130,14 @@
 
 /datum/emote/living/carbon/human/wag/select_message_type(mob/user, intentional)
 	. = ..()
-	var/obj/item/organ/external/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+	var/obj/item/organ/tail/oranges_accessory = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 	if(oranges_accessory.wag_flags & WAG_WAGGING)
 		. = "stops wagging " + message
 	else
 		. = "wags " + message
 
 /datum/emote/living/carbon/human/wag/can_run_emote(mob/user, status_check, intentional, params)
-	var/obj/item/organ/external/tail/tail = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+	var/obj/item/organ/tail/tail = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 	if(tail?.wag_flags & WAG_ABLE)
 		return ..()
 	return FALSE
@@ -149,7 +149,7 @@
 
 /datum/emote/living/carbon/human/wing/run_emote(mob/user, params, type_override, intentional)
 	. = ..()
-	var/obj/item/organ/external/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+	var/obj/item/organ/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
 	if(isnull(wings))
 		CRASH("[type] ran on a mob that has no wings!")
 	if(wings.wings_open)
@@ -158,12 +158,12 @@
 		wings.open_wings()
 
 /datum/emote/living/carbon/human/wing/select_message_type(mob/user, intentional)
-	var/obj/item/organ/external/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+	var/obj/item/organ/wings/functional/wings = user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
 	var/emote_verb = wings.wings_open ? "closes" : "opens"
 	return "[emote_verb] [message]"
 
 /datum/emote/living/carbon/human/wing/can_run_emote(mob/user, status_check = TRUE, intentional, params)
-	if(!istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS), /obj/item/organ/external/wings/functional))
+	if(!istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS), /obj/item/organ/wings/functional))
 		return FALSE
 	return ..()
 
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index b0ba82f77c6..b0ce29cd1a4 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -572,12 +572,12 @@
 			to_chat(src, span_warning("you can't breathe!"))
 			return FALSE
 
-		var/obj/item/organ/internal/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+		var/obj/item/organ/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
 		if(isnull(human_lungs))
 			balloon_alert(src, "you don't have lungs!")
 			return FALSE
 		// NOVA EDIT ADDITION - Disable CPR for synth heatsink
-		if(istype(human_lungs, /obj/item/organ/internal/lungs/synth))
+		if(istype(human_lungs, /obj/item/organ/lungs/synth))
 			balloon_alert(src, "you don't have lungs!")
 			return FALSE
 		// NOVA EDIT ADDITION END
@@ -942,7 +942,7 @@
 		if(result != "Yes")
 			return
 
-		var/obj/item/organ/internal/brain/target_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+		var/obj/item/organ/brain/target_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
 
 		if(isnull(target_brain))
 			to_chat(usr, "This mob has no brain to insert into an MMI.")
@@ -995,17 +995,21 @@
 	var/carrydelay = 5 SECONDS //if you have latex you are faster at grabbing
 	var/skills_space
 	var/fitness_level = mind?.get_skill_level(/datum/skill/athletics) - 1
+	var/experience_reward = 5
 	if(HAS_TRAIT(src, TRAIT_QUICKER_CARRY))
 		carrydelay -= 2 SECONDS
+		experience_reward *= 3
 	else if(HAS_TRAIT(src, TRAIT_QUICK_CARRY))
 		carrydelay -= 1 SECONDS
+		experience_reward *= 2
 
 	// can remove up to 2 seconds at legendary
 	carrydelay -= fitness_level * (1/3) SECONDS
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		carrydelay *= potential_spine.athletics_boost_multiplier
+		experience_reward += experience_reward * potential_spine.athletics_boost_multiplier
 
 	if(carrydelay <= 3 SECONDS)
 		skills_space = " very quickly"
@@ -1027,6 +1031,8 @@
 		visible_message(span_warning("[src] fails to fireman carry [target]!"))
 		return
 
+	mind?.adjust_experience(/datum/skill/athletics, experience_reward) //Get a bit fitter every time we fireman carry successfully. Deadlift your friends for gains!
+
 	return buckle_mob(target, TRUE, TRUE, CARRIER_NEEDS_ARM)
 
 /mob/living/carbon/human/proc/piggyback(mob/living/carbon/target)
@@ -1110,6 +1116,52 @@
 	if(mind.assigned_role.title in SSjob.name_occupations)
 		.[mind.assigned_role.title] = minutes
 
+/mob/living/carbon/human/proc/add_eye_color_left(color, color_priority, update_body = TRUE)
+	LAZYSET(eye_color_left_overrides, "[color_priority]", color)
+	if (update_body)
+		update_body()
+
+/mob/living/carbon/human/proc/add_eye_color_right(color, color_priority, update_body = TRUE)
+	LAZYSET(eye_color_right_overrides, "[color_priority]", color)
+	if (update_body)
+		update_body()
+
+/mob/living/carbon/human/proc/add_eye_color(color, color_priority, update_body = TRUE)
+	add_eye_color_left(color, color_priority, update_body = FALSE)
+	add_eye_color_right(color, color_priority, update_body = update_body)
+
+/mob/living/carbon/human/proc/remove_eye_color(color_priority, update_body = TRUE)
+	LAZYREMOVE(eye_color_left_overrides, "[color_priority]")
+	LAZYREMOVE(eye_color_right_overrides, "[color_priority]")
+	if (update_body)
+		update_body()
+
+/mob/living/carbon/human/proc/get_right_eye_color()
+	if (!LAZYLEN(eye_color_right_overrides))
+		return eye_color_right
+
+	var/eye_color = eye_color_right
+	var/priority
+	for (var/override_priority in eye_color_right_overrides)
+		var/new_priority = text2num(override_priority)
+		if (new_priority > priority)
+			priority = new_priority
+			eye_color = eye_color_right_overrides[override_priority]
+	return eye_color
+
+/mob/living/carbon/human/proc/get_left_eye_color()
+	if (!LAZYLEN(eye_color_left_overrides))
+		return eye_color_left
+
+	var/eye_color = eye_color_left
+	var/priority
+	for (var/override_priority in eye_color_left_overrides)
+		var/new_priority = text2num(override_priority)
+		if (new_priority > priority)
+			priority = new_priority
+			eye_color = eye_color_left_overrides[override_priority]
+	return eye_color
+
 /mob/living/carbon/human/monkeybrain
 	ai_controller = /datum/ai_controller/monkey
 
@@ -1227,7 +1279,7 @@
 	race = /datum/species/snail
 
 /mob/living/carbon/human/species/vampire
-	race = /datum/species/vampire
+	race = /datum/species/human/vampire
 
 /mob/living/carbon/human/species/zombie
 	race = /datum/species/zombie
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 2a075c6c4bc..486a1e819a1 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -282,7 +282,7 @@
 //200 max knockdown for EXPLODE_HEAVY
 //160 max knockdown for EXPLODE_LIGHT
 
-	var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
 	switch (severity)
 		if (EXPLODE_DEVASTATE)
 			if(bomb_armor < EXPLODE_GIB_THRESHOLD) //gibs the mob if their bomb armor is lower than EXPLODE_GIB_THRESHOLD
@@ -391,7 +391,7 @@
 		//Note we both check that the user is in cardiac arrest and can actually heartattack
 		//If they can't, they're missing their heart and this would runtime
 		if(undergoing_cardiac_arrest() && can_heartattack() && (shock_damage * siemens_coeff >= 1) && prob(25))
-			var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+			var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
 			if(heart.Restart() && stat == CONSCIOUS)
 				to_chat(src, span_notice("You feel your heart beating again!"))
 	if (!(flags & SHOCK_NO_HUMAN_ANIM))
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index c536a43aeb5..08b421b341c 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -35,11 +35,14 @@
 	var/facial_hair_color = COLOR_BLACK
 	var/facial_hairstyle = "Shaved"
 
-	//Eye colour
+	// Base "natural" eye color
 	var/eye_color_left = COLOR_BLACK
 	var/eye_color_right = COLOR_BLACK
 	/// Var used to keep track of a human mob having a heterochromatic right eye. To ensure prefs don't overwrite shit
 	var/eye_color_heterochromatic = FALSE
+	// Eye color overrides assoc lists - priority key to hex color
+	var/list/eye_color_left_overrides
+	var/list/eye_color_right_overrides
 
 	var/skin_tone = "caucasian1" //Skin tone
 
diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm
index 66962ba4dfe..d179673edbf 100644
--- a/code/modules/mob/living/carbon/human/human_helpers.dm
+++ b/code/modules/mob/living/carbon/human/human_helpers.dm
@@ -137,7 +137,7 @@
 	. += "[dna.species.type]"
 
 /mob/living/carbon/human/proc/get_eye_scars()
-	var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
 	if (!isnull(eyes))
 		return eyes.scarring
 
diff --git a/code/modules/mob/living/carbon/human/human_say.dm b/code/modules/mob/living/carbon/human/human_say.dm
index 48011902581..c5e3c7a3123 100644
--- a/code/modules/mob/living/carbon/human/human_say.dm
+++ b/code/modules/mob/living/carbon/human/human_say.dm
@@ -22,7 +22,7 @@
 	return ..()
 
 /mob/living/carbon/human/get_default_say_verb()
-	var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(isnull(tongue))
 		if(HAS_TRAIT(src, TRAIT_SIGN_LANG))
 			return "signs"
diff --git a/code/modules/mob/living/carbon/human/human_suicide.dm b/code/modules/mob/living/carbon/human/human_suicide.dm
index 318cba1587d..e6b4bbac8e0 100644
--- a/code/modules/mob/living/carbon/human/human_suicide.dm
+++ b/code/modules/mob/living/carbon/human/human_suicide.dm
@@ -22,7 +22,7 @@
 	if(combat_mode)
 		send_applicable_messages(HUMAN_COMBAT_MODE_SUICIDE_MESSAGE)
 	else
-		var/obj/item/organ/internal/brain/userbrain = get_organ_by_type(/obj/item/organ/internal/brain)
+		var/obj/item/organ/brain/userbrain = get_organ_by_type(/obj/item/organ/brain)
 		if(userbrain?.damage >= 75)
 			send_applicable_messages(HUMAN_BRAIN_DAMAGE_SUICIDE_MESSAGE)
 		else
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 048f7bcfe2c..6befcb5c9fe 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -79,7 +79,7 @@
 		return ..()
 
 /mob/living/carbon/human/check_breath(datum/gas_mixture/breath)
-	var/obj/item/organ/internal/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/human_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(human_lungs)
 		return human_lungs.check_breath(breath, src)
 
diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm
index 04df6a70588..db332b0efde 100644
--- a/code/modules/mob/living/carbon/human/species_types/abductors.dm
+++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm
@@ -12,11 +12,11 @@
 		TRAIT_NO_UNDERWEAR,
 		TRAIT_VIRUSIMMUNE,
 	)
-	mutanttongue = /obj/item/organ/internal/tongue/abductor
+	mutanttongue = /obj/item/organ/tongue/abductor
 	mutantstomach = null
 	mutantheart = null
 	mutantlungs = null
-	mutantbrain = /obj/item/organ/internal/brain/abductor
+	mutantbrain = /obj/item/organ/brain/abductor
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
 
 	bodypart_overrides = list(
diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm
index 86f745bb8be..2974155515d 100644
--- a/code/modules/mob/living/carbon/human/species_types/android.dm
+++ b/code/modules/mob/living/carbon/human/species_types/android.dm
@@ -26,15 +26,15 @@
 
 	inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID
 	meat = null
-	mutantbrain = /obj/item/organ/internal/brain/cybernetic
-	mutanttongue = /obj/item/organ/internal/tongue/robot
+	mutantbrain = /obj/item/organ/brain/cybernetic
+	mutanttongue = /obj/item/organ/tongue/robot
 	mutantstomach = null
 	mutantappendix = null
 	mutantheart = null
 	mutantliver = null
 	mutantlungs = null
-	mutanteyes = /obj/item/organ/internal/eyes/robotic
-	mutantears = /obj/item/organ/internal/ears/cybernetic
+	mutanteyes = /obj/item/organ/eyes/robotic
+	mutantears = /obj/item/organ/ears/cybernetic
 	species_language_holder = /datum/language_holder/synthetic
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
 
diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
index af0d8ade4bc..9251c6099d9 100644
--- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
@@ -19,10 +19,10 @@
 		BODY_ZONE_CHEST = /obj/item/bodypart/chest,
 	)
 	inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
-	mutantbrain = /obj/item/organ/internal/brain/dullahan
-	mutanteyes = /obj/item/organ/internal/eyes/dullahan
-	mutanttongue = /obj/item/organ/internal/tongue/dullahan
-	mutantears = /obj/item/organ/internal/ears/dullahan
+	mutantbrain = /obj/item/organ/brain/dullahan
+	mutanteyes = /obj/item/organ/eyes/dullahan
+	mutanttongue = /obj/item/organ/tongue/dullahan
+	mutantears = /obj/item/organ/ears/dullahan
 	mutantstomach = null
 	mutantlungs = null
 	skinned_type = /obj/item/stack/sheet/animalhide/human
@@ -51,7 +51,7 @@
 	human.put_in_hands(head)
 
 	// We want to give the head some boring old eyes just so it doesn't look too jank on the head sprite.
-	var/obj/item/organ/internal/eyes/eyes = new /obj/item/organ/internal/eyes(head)
+	var/obj/item/organ/eyes/eyes = new /obj/item/organ/eyes(head)
 	eyes.eye_color_left = human.eye_color_left
 	eyes.eye_color_right = human.eye_color_right
 	eyes.bodypart_insert(my_head)
@@ -95,7 +95,7 @@
 	human.reset_perspective(human)
 
 /datum/species/dullahan/proc/update_vision_perspective(mob/living/carbon/human/human)
-	var/obj/item/organ/internal/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES)
 	if(eyes)
 		human.update_tint()
 		if(eyes.tint)
@@ -106,7 +106,7 @@
 			prevent_perspective_change = TRUE
 
 /datum/species/dullahan/on_owner_login(mob/living/carbon/human/owner)
-	var/obj/item/organ/internal/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
 	if(owner_first_client_connection_handled)
 		if(!eyes.tint)
 			owner.reset_perspective(my_head, TRUE)
@@ -164,15 +164,15 @@
 
 	return to_add
 
-/obj/item/organ/internal/brain/dullahan
+/obj/item/organ/brain/dullahan
 	decoy_override = TRUE
 	organ_flags = ORGAN_ORGANIC //not vital
 
-/obj/item/organ/internal/tongue/dullahan
+/obj/item/organ/tongue/dullahan
 	zone = "abstract"
 	modifies_speech = TRUE
 
-/obj/item/organ/internal/tongue/dullahan/handle_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/dullahan/handle_speech(datum/source, list/speech_args)
 	if(ishuman(owner))
 		var/mob/living/carbon/human/human = owner
 		if(isdullahan(human))
@@ -182,10 +182,10 @@
 				head.say(speech_args[SPEECH_MESSAGE], spans = speech_args[SPEECH_SPANS], sanitize = FALSE, language = speech_args[SPEECH_LANGUAGE], message_range = speech_args[SPEECH_RANGE])
 	speech_args[SPEECH_MESSAGE] = ""
 
-/obj/item/organ/internal/ears/dullahan
+/obj/item/organ/ears/dullahan
 	zone = "abstract"
 
-/obj/item/organ/internal/eyes/dullahan
+/obj/item/organ/eyes/dullahan
 	name = "head vision"
 	desc = "An abstraction."
 	actions_types = list(/datum/action/item_action/organ_action/dullahan)
@@ -198,7 +198,7 @@
 
 /datum/action/item_action/organ_action/dullahan/Trigger(trigger_flags)
 	. = ..()
-	var/obj/item/organ/internal/eyes/dullahan/dullahan_eyes = target
+	var/obj/item/organ/eyes/dullahan/dullahan_eyes = target
 	dullahan_eyes.tint = dullahan_eyes.tint ? NONE : INFINITY
 
 	if(ishuman(owner))
@@ -247,7 +247,7 @@
 		return // It's so over
 	detached_head.real_name = wearer.real_name
 	detached_head.name = wearer.real_name
-	var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in detached_head
+	var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in detached_head
 	brain.name = "[wearer.name]'s brain"
 
 /obj/item/dullahan_relay/proc/examinate_check(mob/user, atom/source)
diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index 4fa4db94336..1f1d7d3af47 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -2,10 +2,10 @@
 	name = "\improper Ethereal"
 	id = SPECIES_ETHEREAL
 	meat = /obj/item/food/meat/slab/human/mutant/ethereal
-	mutantlungs = /obj/item/organ/internal/lungs/ethereal
-	mutantstomach = /obj/item/organ/internal/stomach/ethereal
-	mutanttongue = /obj/item/organ/internal/tongue/ethereal
-	mutantheart = /obj/item/organ/internal/heart/ethereal
+	mutantlungs = /obj/item/organ/lungs/ethereal
+	mutantstomach = /obj/item/organ/stomach/ethereal
+	mutanttongue = /obj/item/organ/tongue/ethereal
+	mutantheart = /obj/item/organ/heart/ethereal
 	exotic_blood = /datum/reagent/consumable/liquidelectricity //Liquid Electricity. fuck you think of something better gamer
 	exotic_bloodtype = "LE"
 	siemens_coeff = 0.5 //They thrive on energy
@@ -60,7 +60,7 @@
 	ethereal_light = new_ethereal.mob_light(light_type = /obj/effect/dummy/lighting_obj/moblight/species)
 	refresh_light_color(new_ethereal)
 
-	var/obj/item/organ/internal/heart/ethereal/ethereal_heart = new_ethereal.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/ethereal/ethereal_heart = new_ethereal.get_organ_slot(ORGAN_SLOT_HEART)
 	ethereal_heart.ethereal_color = default_color
 
 	for(var/obj/item/bodypart/limb as anything in new_ethereal.bodyparts)
@@ -241,7 +241,7 @@
 	name = "Lustrous"
 	id = SPECIES_ETHEREAL_LUSTROUS
 	examine_limb_id = SPECIES_ETHEREAL
-	mutantbrain = /obj/item/organ/internal/brain/lustrous
+	mutantbrain = /obj/item/organ/brain/lustrous
 	changesource_flags = MIRROR_BADMIN | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN
 	inherent_traits = list(
 		TRAIT_MUTANT_COLORS,
diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm
index 5728ef61367..090ae9447b4 100644
--- a/code/modules/mob/living/carbon/human/species_types/felinid.dm
+++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm
@@ -3,12 +3,12 @@
 	name = "Felinid"
 	id = SPECIES_FELINE
 	examine_limb_id = SPECIES_HUMAN
-	mutantbrain = /obj/item/organ/internal/brain/felinid
-	mutanttongue = /obj/item/organ/internal/tongue/cat
+	mutantbrain = /obj/item/organ/brain/felinid
+	mutanttongue = /obj/item/organ/tongue/cat
 	/* NOVA EDIT REMOVAL - CUSTOMIZATION
-	mutantears = /obj/item/organ/internal/ears/cat
+	mutantears = /obj/item/organ/ears/cat
 	mutant_organs = list(
-		/obj/item/organ/external/tail/cat = "Cat",
+		/obj/item/organ/tail/cat = "Cat",
 	)
 	*/ // NOVA EDIT REMOVAL END
 	inherent_traits = list(
@@ -44,16 +44,16 @@
 				target_human.dna.features["ears"] = "Cat"
 		/* NOVA EDIT CHANGE START - ORIGINAL
 		if(target_human.dna.features["ears"] == "None")
-			mutantears = /obj/item/organ/internal/ears
+			mutantears = /obj/item/organ/ears
 		else
-			var/obj/item/organ/internal/ears/cat/ears = new(FALSE, target_human.dna.features["ears"])
+			var/obj/item/organ/ears/cat/ears = new(FALSE, target_human.dna.features["ears"])
 			ears.Insert(target_human, movement_flags = DELETE_IF_REPLACED)
 		*/
 		if(target_human.dna.features["ears"] == "Cat")
-			var/obj/item/organ/internal/ears/cat/ears = new
+			var/obj/item/organ/ears/cat/ears = new
 			ears.Insert(target_human, movement_flags = DELETE_IF_REPLACED)
 		else
-			mutantears = /obj/item/organ/internal/ears
+			mutantears = /obj/item/organ/ears
 		// NOVA EDIT CHANGE END
 	return ..()
 
@@ -138,7 +138,7 @@
 /proc/purrbation_toggle(mob/living/carbon/human/target_human, silent = FALSE)
 	if(!ishuman(target_human))
 		return
-	if(!istype(target_human.get_organ_slot(ORGAN_SLOT_EARS), /obj/item/organ/internal/ears/cat))
+	if(!istype(target_human.get_organ_slot(ORGAN_SLOT_EARS), /obj/item/organ/ears/cat))
 		purrbation_apply(target_human, silent = silent)
 		. = TRUE
 	else
@@ -154,7 +154,7 @@
 		cat_species.original_felinid = FALSE
 	else
 		// This removes the spines if they exist
-		var/obj/item/organ/external/spines/current_spines = soon_to_be_felinid.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES)
+		var/obj/item/organ/spines/current_spines = soon_to_be_felinid.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES)
 		if(current_spines)
 			current_spines.Remove(soon_to_be_felinid, special = TRUE)
 			qdel(current_spines)
@@ -163,10 +163,10 @@
 		// Humans get converted directly to felinids, and the key is handled in on_species_gain.
 		// Now when we get mob.dna.features[feature_key], it returns None, which is why the tail is invisible.
 		// stored_feature_id is only set once (the first time an organ is inserted), so this should be safe.
-		var/obj/item/organ/internal/ears/cat/kitty_ears = new
+		var/obj/item/organ/ears/cat/kitty_ears = new
 		kitty_ears.Insert(soon_to_be_felinid, special = TRUE, movement_flags = DELETE_IF_REPLACED)
-		if(should_visual_organ_apply_to(/obj/item/organ/external/tail/cat, soon_to_be_felinid)) //only give them a tail if they actually have sprites for it / are a compatible subspecies.
-			var/obj/item/organ/external/tail/cat/kitty_tail = new
+		if(should_visual_organ_apply_to(/obj/item/organ/tail/cat, soon_to_be_felinid)) //only give them a tail if they actually have sprites for it / are a compatible subspecies.
+			var/obj/item/organ/tail/cat/kitty_tail = new
 			kitty_tail.Insert(soon_to_be_felinid, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 
 	if(!silent)
@@ -183,24 +183,24 @@
 		var/datum/species/target_species = purrbated_human.dna.species
 
 		// From the previous check we know they're not a felinid, therefore removing cat ears and tail is safe
-		var/obj/item/organ/external/tail/old_tail = purrbated_human.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
-		if(istype(old_tail, /obj/item/organ/external/tail/cat))
+		var/obj/item/organ/tail/old_tail = purrbated_human.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+		if(istype(old_tail, /obj/item/organ/tail/cat))
 			old_tail.Remove(purrbated_human, special = TRUE)
 			qdel(old_tail)
 			// Locate does not work on assoc lists, so we do it by hand
 			for(var/external_organ in target_species.mutant_organs)
 				if(!should_visual_organ_apply_to(external_organ, purrbated_human))
 					continue
-				if(ispath(external_organ, /obj/item/organ/external/tail))
-					var/obj/item/organ/external/tail/new_tail = new external_organ()
+				if(ispath(external_organ, /obj/item/organ/tail))
+					var/obj/item/organ/tail/new_tail = new external_organ()
 					new_tail.Insert(purrbated_human, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 				// Don't forget the spines we removed earlier
-				else if(ispath(external_organ, /obj/item/organ/external/spines))
-					var/obj/item/organ/external/spines/new_spines = new external_organ()
+				else if(ispath(external_organ, /obj/item/organ/spines))
+					var/obj/item/organ/spines/new_spines = new external_organ()
 					new_spines.Insert(purrbated_human, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 
-		var/obj/item/organ/internal/ears/old_ears = purrbated_human.get_organ_slot(ORGAN_SLOT_EARS)
-		if(istype(old_ears, /obj/item/organ/internal/ears/cat))
+		var/obj/item/organ/ears/old_ears = purrbated_human.get_organ_slot(ORGAN_SLOT_EARS)
+		if(istype(old_ears, /obj/item/organ/ears/cat))
 			var/obj/item/organ/new_ears = new target_species.mutantears()
 			new_ears.Insert(purrbated_human, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 	if(!silent)
@@ -211,7 +211,7 @@
 	human_for_preview.set_hairstyle("Hime Cut", update = TRUE)
 
 	/* NOVA EDIT - Making the species menu icons work better - ORIGINAL:
-	var/obj/item/organ/internal/ears/cat/cat_ears = human_for_preview.get_organ_by_type(/obj/item/organ/internal/ears/cat)
+	var/obj/item/organ/ears/cat/cat_ears = human_for_preview.get_organ_by_type(/obj/item/organ/ears/cat)
 	if (cat_ears)
 		cat_ears.color = human_for_preview.hair_color
 		human_for_preview.update_body()
diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
index 0f2072b7773..11548c7b129 100644
--- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
@@ -4,18 +4,18 @@
 	id = SPECIES_FLYPERSON
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
 	meat = /obj/item/food/meat/slab/human/mutant/fly
-	mutanteyes = /obj/item/organ/internal/eyes/fly
+	mutanteyes = /obj/item/organ/eyes/fly
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
 	species_language_holder = /datum/language_holder/fly
 	payday_modifier = 1.0
 
-	mutanttongue = /obj/item/organ/internal/tongue/fly
-	mutantheart = /obj/item/organ/internal/heart/fly
-	mutantlungs = /obj/item/organ/internal/lungs/fly
-	mutantliver = /obj/item/organ/internal/liver/fly
-	mutantstomach = /obj/item/organ/internal/stomach/fly
-	mutantappendix = /obj/item/organ/internal/appendix/fly
-	mutant_organs = list(/obj/item/organ/internal/fly, /obj/item/organ/internal/fly/groin)
+	mutanttongue = /obj/item/organ/tongue/fly
+	mutantheart = /obj/item/organ/heart/fly
+	mutantlungs = /obj/item/organ/lungs/fly
+	mutantliver = /obj/item/organ/liver/fly
+	mutantstomach = /obj/item/organ/stomach/fly
+	mutantappendix = /obj/item/organ/appendix/fly
+	mutant_organs = list(/obj/item/organ/fly, /obj/item/organ/fly/groin)
 
 	bodypart_overrides = list(
 		BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/fly,
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index ec34526351e..11be5877d4c 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -35,13 +35,13 @@
 	bodytemp_heat_damage_limit = BODYTEMP_HEAT_LAVALAND_SAFE
 	bodytemp_cold_damage_limit = BODYTEMP_COLD_ICEBOX_SAFE
 
-	mutant_organs = list(/obj/item/organ/internal/adamantine_resonator)
-	mutanteyes = /obj/item/organ/internal/eyes/golem
-	mutantbrain = /obj/item/organ/internal/brain/golem
-	mutanttongue = /obj/item/organ/internal/tongue/golem
-	mutantstomach = /obj/item/organ/internal/stomach/golem
-	mutantliver = /obj/item/organ/internal/liver/golem
-	mutantappendix = /obj/item/organ/internal/appendix/golem
+	mutant_organs = list(/obj/item/organ/adamantine_resonator)
+	mutanteyes = /obj/item/organ/eyes/golem
+	mutantbrain = /obj/item/organ/brain/golem
+	mutanttongue = /obj/item/organ/tongue/golem
+	mutantstomach = /obj/item/organ/stomach/golem
+	mutantliver = /obj/item/organ/liver/golem
+	mutantappendix = /obj/item/organ/appendix/golem
 	bodypart_overrides = list(
 		BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/golem,
 		BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/golem,
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index 90757c9343b..47a627edf1c 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -17,9 +17,9 @@
 		TRAIT_TOXINLOVER,
 		TRAIT_NOBLOOD,
 	)
-	mutanttongue = /obj/item/organ/internal/tongue/jelly
-	mutantlungs = /obj/item/organ/internal/lungs/slime
-	mutanteyes = /obj/item/organ/internal/eyes/jelly
+	mutanttongue = /obj/item/organ/tongue/jelly
+	mutantlungs = /obj/item/organ/lungs/slime
+	mutanteyes = /obj/item/organ/eyes/jelly
 	mutantheart = null
 	meat = /obj/item/food/meat/slab/human/mutant/slime
 	exotic_blood = /datum/reagent/toxin/slimejelly
@@ -178,7 +178,7 @@
 	plural_form = "Slimepeople"
 	id = SPECIES_SLIMEPERSON
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
-	mutanteyes = /obj/item/organ/internal/eyes
+	mutanteyes = /obj/item/organ/eyes
 	var/datum/action/innate/split_body/slime_split
 	var/list/mob/living/carbon/bodies
 	var/datum/action/innate/swap_body/swap_body
@@ -488,7 +488,7 @@
 		BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/jelly/luminescent,
 		BODY_ZONE_CHEST = /obj/item/bodypart/chest/jelly/luminescent,
 	)
-	mutanteyes = /obj/item/organ/internal/eyes
+	mutanteyes = /obj/item/organ/eyes
 	/// How strong is our glow
 	var/glow_intensity = LUMINESCENT_DEFAULT_GLOW
 	/// Internal dummy used to glow (very cool)
diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
index 346ecef9060..f8c1dd92bff 100644
--- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm
@@ -9,13 +9,13 @@
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE
 	mutant_bodyparts = list("body_markings" = "None", "legs" = "Normal Legs") // NOVA EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/lizard = "None")
 	mutant_organs = list(
-		/obj/item/organ/external/horns = "None",
-		/obj/item/organ/external/frills = "None",
-		/obj/item/organ/external/snout = "Round",
-		/obj/item/organ/external/spines = "None",
-		/obj/item/organ/external/tail/lizard = "Smooth",
+		/obj/item/organ/horns = "None",
+		/obj/item/organ/frills = "None",
+		/obj/item/organ/snout = "Round",
+		/obj/item/organ/spines = "None",
+		/obj/item/organ/tail/lizard = "Smooth",
 	)
-	mutanttongue = /obj/item/organ/internal/tongue/lizard
+	mutanttongue = /obj/item/organ/tongue/lizard
 	coldmod = 1.5
 	heatmod = 0.67
 	payday_modifier = 1.0
@@ -169,8 +169,8 @@ Lizard subspecies: ASHWALKERS
 	name = "Ash Walker"
 	id = SPECIES_LIZARD_ASH
 	examine_limb_id = SPECIES_LIZARD
-	mutantlungs = /obj/item/organ/internal/lungs/lavaland
-	mutantbrain = /obj/item/organ/internal/brain/primitive
+	mutantlungs = /obj/item/organ/lungs/lavaland
+	mutantbrain = /obj/item/organ/brain/primitive
 	inherent_traits = list(
 		TRAIT_MUTANT_COLORS,
 		TRAIT_VIRUSIMMUNE,
@@ -211,15 +211,11 @@ Lizard subspecies: SILVER SCALED
 	mutantlungs = null
 	damage_modifier = 10 //very light silvery scales soften blows
 	species_language_holder = /datum/language_holder/lizard/silver
-	mutanttongue = /obj/item/organ/internal/tongue/lizard/silver
+	mutanttongue = /obj/item/organ/tongue/lizard/silver
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN
 	examine_limb_id = SPECIES_LIZARD
 	///stored mutcolor for when we turn back off of a silverscale.
 	var/old_mutcolor
-	///stored eye color for when we turn back off of a silverscale.
-	var/old_eye_color_left
-	///See above
-	var/old_eye_color_right
 
 /datum/species/lizard/silverscale/get_physical_attributes()
 	return "Silver Scales are to lizardpeople what angels are to humans. \
@@ -228,17 +224,13 @@ Lizard subspecies: SILVER SCALED
 
 /datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/human/new_silverscale, datum/species/old_species, pref_load)
 	old_mutcolor = new_silverscale.dna.features["mcolor"]
-	old_eye_color_left = new_silverscale.eye_color_left
-	old_eye_color_right = new_silverscale.eye_color_right
 	new_silverscale.dna.features["mcolor"] = "#eeeeee"
-	new_silverscale.eye_color_left = "#0000a0"
-	new_silverscale.eye_color_right = "#0000a0"
+	new_silverscale.add_eye_color("#0000a0", EYE_COLOR_SPECIES_PRIORITY)
 	. = ..()
 	new_silverscale.add_filter("silver_glint", 2, list("type" = "outline", "color" = "#ffffff63", "size" = 2))
 
 /datum/species/lizard/silverscale/on_species_loss(mob/living/carbon/human/was_silverscale, datum/species/new_species, pref_load)
 	was_silverscale.dna.features["mcolor"] = old_mutcolor
-	was_silverscale.eye_color_left = old_eye_color_left
-	was_silverscale.eye_color_right = old_eye_color_right
+	was_silverscale.remove_eye_color(EYE_COLOR_SPECIES_PRIORITY)
 	was_silverscale.remove_filter("silver_glint")
 	return ..()
diff --git a/code/modules/mob/living/carbon/human/species_types/monkeys.dm b/code/modules/mob/living/carbon/human/species_types/monkeys.dm
index 0d332c78c58..057dffbf222 100644
--- a/code/modules/mob/living/carbon/human/species_types/monkeys.dm
+++ b/code/modules/mob/living/carbon/human/species_types/monkeys.dm
@@ -4,10 +4,10 @@
 	name = "\improper Monkey"
 	id = SPECIES_MONKEY
 	mutant_organs = list(
-		/obj/item/organ/external/tail/monkey = "Monkey",
+		/obj/item/organ/tail/monkey = "Monkey",
 	)
-	mutanttongue = /obj/item/organ/internal/tongue/monkey
-	mutantbrain = /obj/item/organ/internal/brain/primate
+	mutanttongue = /obj/item/organ/tongue/monkey
+	mutantbrain = /obj/item/organ/brain/primate
 	skinned_type = /obj/item/stack/sheet/animalhide/monkey
 	meat = /obj/item/food/meat/slab/monkey
 	knife_butcher_results = list(/obj/item/food/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1)
@@ -123,7 +123,7 @@
 
 	return to_add
 
-/obj/item/organ/internal/brain/primate //Ook Ook
+/obj/item/organ/brain/primate //Ook Ook
 	name = "Primate Brain"
 	desc = "This wad of meat is small, but has enlaged occipital lobes for spotting bananas."
 	organ_traits = list(TRAIT_CAN_STRIP, TRAIT_PRIMITIVE, TRAIT_GUN_NATURAL) // No literacy or advanced tool usage.
@@ -143,7 +143,7 @@
 	if(!.)
 		return
 
-	var/obj/item/organ/internal/brain/primate/monkey_brain = target
+	var/obj/item/organ/brain/primate/monkey_brain = target
 	if(monkey_brain.tripping)
 		monkey_brain.tripping = FALSE
 		background_icon_state = "bg_default"
@@ -154,21 +154,21 @@
 		to_chat(monkey_brain.owner, span_notice("You will now stumble while while colliding with people who are in combat mode."))
 	build_all_button_icons()
 
-/obj/item/organ/internal/brain/primate/on_mob_insert(mob/living/carbon/primate)
+/obj/item/organ/brain/primate/on_mob_insert(mob/living/carbon/primate)
 	. = ..()
 	RegisterSignal(primate, COMSIG_LIVING_MOB_BUMPED, PROC_REF(on_mob_bump))
 
-/obj/item/organ/internal/brain/primate/on_mob_remove(mob/living/carbon/primate)
+/obj/item/organ/brain/primate/on_mob_remove(mob/living/carbon/primate)
 	. = ..()
 	UnregisterSignal(primate, COMSIG_LIVING_MOB_BUMPED)
 
-/obj/item/organ/internal/brain/primate/proc/on_mob_bump(mob/source, mob/living/crossing_mob)
+/obj/item/organ/brain/primate/proc/on_mob_bump(mob/source, mob/living/crossing_mob)
 	SIGNAL_HANDLER
 	if(!tripping || !crossing_mob.combat_mode)
 		return
 	crossing_mob.knockOver(owner)
 
-/obj/item/organ/internal/brain/primate/get_attacking_limb(mob/living/carbon/human/target)
+/obj/item/organ/brain/primate/get_attacking_limb(mob/living/carbon/human/target)
 	if(!HAS_TRAIT(owner, TRAIT_ADVANCEDTOOLUSER))
 		return owner.get_bodypart(BODY_ZONE_HEAD)
 	return ..()
diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
index 5bf4d6a2426..67d9a5039dc 100644
--- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm
@@ -4,10 +4,10 @@
 	id = SPECIES_MOTH
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
 	mutant_bodyparts = list("moth_markings" = "None") // NOVA EDIT CHANGE - ORIGINAL: body_markings = list(/datum/bodypart_overlay/simple/body_marking/moth = "None")
-	//mutant_organs = list(/obj/item/organ/external/wings/moth = "Plain", /obj/item/organ/external/antennae = "Plain") // NOVA EDIT REMOVAL - Fixing moths
+	//mutant_organs = list(/obj/item/organ/wings/moth = "Plain", /obj/item/organ/antennae = "Plain") // NOVA EDIT REMOVAL - Fixing moths
 	meat = /obj/item/food/meat/slab/human/mutant/moth
-	mutanttongue = /obj/item/organ/internal/tongue/moth
-	mutanteyes = /obj/item/organ/internal/eyes/moth
+	mutanttongue = /obj/item/organ/tongue/moth
+	mutanteyes = /obj/item/organ/eyes/moth
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
 	species_cookie = /obj/item/food/muffin/moffin
 	species_language_holder = /datum/language_holder/moth
diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
index 81efd0eaadd..05406351f2f 100644
--- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
@@ -6,7 +6,7 @@
 
 	fixed_mut_color = "#DBBF92"
 
-	mutant_organs = list(/obj/item/organ/external/mushroom_cap = "Round")
+	mutant_organs = list(/obj/item/organ/mushroom_cap = "Round")
 
 	inherent_traits = list(
 		TRAIT_MUTANT_COLORS,
@@ -20,8 +20,8 @@
 
 	heatmod = 1.5
 
-	mutanttongue = /obj/item/organ/internal/tongue/mush
-	mutanteyes = /obj/item/organ/internal/eyes/night_vision/mushroom
+	mutanttongue = /obj/item/organ/tongue/mush
+	mutanteyes = /obj/item/organ/eyes/night_vision/mushroom
 	mutantlungs = null
 	species_language_holder = /datum/language_holder/mushroom
 
@@ -61,7 +61,7 @@
 	return "#FF4B19" //cap color, spot color uses eye color
 
 /// A mushpersons mushroom cap organ
-/obj/item/organ/external/mushroom_cap
+/obj/item/organ/mushroom_cap
 	name = "mushroom cap"
 	desc = "These are yummie, no cap."
 
@@ -77,10 +77,13 @@
 
 	bodypart_overlay = /datum/bodypart_overlay/mutant/mushroom_cap
 
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
 /// Bodypart overlay for the mushroom cap organ
 /datum/bodypart_overlay/mutant/mushroom_cap
 	layers = EXTERNAL_ADJACENT
 	feature_key = "caps"
+	dyable = TRUE
 
 /datum/bodypart_overlay/mutant/mushroom_cap/get_global_feature_list()
 	return SSaccessories.caps_list
@@ -90,3 +93,7 @@
 		return FALSE
 
 	return TRUE
+
+/datum/bodypart_overlay/mutant/mushroom_cap/override_color(obj/item/bodypart/bodypart_owner)
+	//The mushroom cap is red by default (can still be dyed)
+	return "#FF4B19"
diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
index dcfbc70ca6d..3215cc5d292 100644
--- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
+++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm
@@ -19,10 +19,10 @@
 
 	inherent_biotypes = MOB_HUMANOID|MOB_MINERAL
 	inherent_respiration_type = RESPIRATION_PLASMA
-	mutantlungs = /obj/item/organ/internal/lungs/plasmaman
-	mutanttongue = /obj/item/organ/internal/tongue/bone/plasmaman
-	mutantliver = /obj/item/organ/internal/liver/bone/plasmaman
-	mutantstomach = /obj/item/organ/internal/stomach/bone/plasmaman
+	mutantlungs = /obj/item/organ/lungs/plasmaman
+	mutanttongue = /obj/item/organ/tongue/bone/plasmaman
+	mutantliver = /obj/item/organ/liver/bone/plasmaman
+	mutantstomach = /obj/item/organ/stomach/bone/plasmaman
 	mutantappendix = null
 	mutantheart = null
 	heatmod = 1.5
diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
index 577e80c9124..951a00d2e66 100644
--- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
@@ -8,7 +8,7 @@
 		TRAIT_PLANT_SAFE,
 	)
 	mutant_organs = list(
-		// /obj/item/organ/external/pod_hair = "None", // NOVA EDIT REMOVAL - Customization (it messes up unit tests.)
+		// /obj/item/organ/pod_hair = "None", // NOVA EDIT REMOVAL - Customization (it messes up unit tests.)
 	)
 	inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT
 	inherent_factions = list(FACTION_PLANTS, FACTION_VINES)
@@ -19,7 +19,7 @@
 	exotic_blood = /datum/reagent/water
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
 	species_language_holder = /datum/language_holder/plant
-	mutanttongue = /obj/item/organ/internal/tongue/pod
+	mutanttongue = /obj/item/organ/tongue/pod
 	bodypart_overrides = list(
 		BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/pod,
 		BODY_ZONE_R_ARM = /obj/item/bodypart/arm/right/pod,
diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
index 1723dbaa366..f2b7ed5466c 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -16,8 +16,8 @@
 	inherent_factions = list(FACTION_FAITHLESS)
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC
 
-	mutantbrain = /obj/item/organ/internal/brain/shadow
-	mutanteyes = /obj/item/organ/internal/eyes/shadow
+	mutantbrain = /obj/item/organ/brain/shadow
+	mutanteyes = /obj/item/organ/eyes/shadow
 	mutantheart = null
 	mutantlungs = null
 
@@ -89,7 +89,7 @@
 
 	return to_add
 
-/obj/item/organ/internal/eyes/shadow
+/obj/item/organ/eyes/shadow
 	name = "burning red eyes"
 	desc = "Even without their shadowy owner, looking at these eyes gives you a sense of dread."
 	icon = 'icons/obj/medical/organs/shadow_organs.dmi'
@@ -98,14 +98,14 @@
 	flash_protect = FLASH_PROTECTION_SENSITIVE
 
 /// the key to some of their powers
-/obj/item/organ/internal/brain/shadow
+/obj/item/organ/brain/shadow
 	name = "shadowling tumor"
 	desc = "Something that was once a brain, before being remolded by a shadowling. It has adapted to the dark, irreversibly."
 	icon = 'icons/obj/medical/organs/shadow_organs.dmi'
 	/// What status effect do we gain while in darkness?
 	var/applied_status = /datum/status_effect/shadow_regeneration
 
-/obj/item/organ/internal/brain/shadow/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/brain/shadow/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	var/turf/owner_turf = owner.loc
 	if(!isturf(owner_turf))
diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm
index ca87d845a7b..d1d2345ed75 100644
--- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm
+++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm
@@ -25,11 +25,11 @@
 		TRAIT_XENO_IMMUNE,
 	)
 	inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
-	mutanttongue = /obj/item/organ/internal/tongue/bone
-	mutantstomach = /obj/item/organ/internal/stomach/bone
+	mutanttongue = /obj/item/organ/tongue/bone
+	mutantstomach = /obj/item/organ/stomach/bone
 	mutantappendix = null
 	mutantheart = null
-	mutantliver = /obj/item/organ/internal/liver/bone
+	mutantliver = /obj/item/organ/liver/bone
 	mutantlungs = null
 	//They can technically be in an ERT
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | ERT_SPAWN
diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm
index f7a5fbdb51e..d06adf1307a 100644
--- a/code/modules/mob/living/carbon/human/species_types/snail.dm
+++ b/code/modules/mob/living/carbon/human/species_types/snail.dm
@@ -14,8 +14,8 @@
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP
 	sexes = FALSE //snails are hermaphrodites
 
-	mutanteyes = /obj/item/organ/internal/eyes/snail
-	mutanttongue = /obj/item/organ/internal/tongue/snail
+	mutanteyes = /obj/item/organ/eyes/snail
+	mutanttongue = /obj/item/organ/tongue/snail
 	exotic_blood = /datum/reagent/lube
 
 	bodypart_overrides = list(
diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm
index 9333d598758..a12cd6876fc 100644
--- a/code/modules/mob/living/carbon/human/species_types/vampire.dm
+++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm
@@ -4,7 +4,7 @@
 ///maximum a vampire will drain, they will drain less if they hit their cap
 #define VAMP_DRAIN_AMOUNT 50
 
-/datum/species/vampire
+/datum/species/human/vampire
 	name = "Vampire"
 	id = SPECIES_VAMPIRE
 	examine_limb_id = SPECIES_HUMAN
@@ -18,33 +18,33 @@
 	)
 	inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
 	changesource_flags = MIRROR_BADMIN | MIRROR_PRIDE | WABBAJACK | ERT_SPAWN
-	exotic_bloodtype = "U"
+	exotic_bloodtype = "V"
 	blood_deficiency_drain_rate = BLOOD_DEFICIENCY_MODIFIER // vampires already passively lose blood, so this just makes them lose it slightly more quickly when they have blood deficiency.
-	mutantheart = /obj/item/organ/internal/heart/vampire
-	mutanttongue = /obj/item/organ/internal/tongue/vampire
-	mutantstomach = null
-	mutantlungs = null
-	skinned_type = /obj/item/stack/sheet/animalhide/human
+	mutantheart = /obj/item/organ/heart/vampire
+	mutanttongue = /obj/item/organ/tongue/vampire
 	///some starter text sent to the vampire initially, because vampires have shit to do to stay alive
 	var/info_text = "You are a <span class='danger'>Vampire</span>. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability."
 
-/datum/species/vampire/check_roundstart_eligible()
+/datum/species/human/vampire/check_roundstart_eligible()
 	if(check_holidays(HALLOWEEN))
 		return TRUE
 	return ..()
 
-/datum/species/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species)
+/datum/species/human/vampire/prepare_human_for_preview(mob/living/carbon/human/human)
+	return // Skip parent proc
+
+/datum/species/human/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species)
 	. = ..()
 	to_chat(new_vampire, "[info_text]")
 	new_vampire.skin_tone = "albino"
 	new_vampire.update_body(0)
 	RegisterSignal(new_vampire, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness))
 
-/datum/species/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
+/datum/species/human/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
 	. = ..()
 	UnregisterSignal(C, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS)
 
-/datum/species/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired)
+/datum/species/human/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired)
 	. = ..()
 	if(istype(vampire.loc, /obj/structure/closet/crate/coffin))
 		var/need_mob_update = FALSE
@@ -66,27 +66,27 @@
 		vampire.adjust_fire_stacks(3 * seconds_per_tick)
 		vampire.ignite_mob()
 
-/datum/species/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
+/datum/species/human/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
 	SIGNAL_HANDLER
 
 	if(istype(attacking_item, /obj/item/nullrod/whip))
 		damage_mods += 2
 
-/datum/species/vampire/get_physical_attributes()
+/datum/species/human/vampire/get_physical_attributes()
 	return "Vampires are afflicted with the Thirst, needing to sate it by draining the blood out of another living creature. However, they do not need to breathe or eat normally. \
 		They will instantly turn into dust if they run out of blood or enter a holy area. However, coffins stabilize and heal them, and they can transform into bats!"
 
-/datum/species/vampire/get_species_description()
+/datum/species/human/vampire/get_species_description()
 	return "A classy Vampire! They descend upon Space Station Thirteen Every year to spook the crew! \"Bleeg!!\""
 
-/datum/species/vampire/get_species_lore()
+/datum/species/human/vampire/get_species_lore()
 	return list(
 		"Vampires are unholy beings blessed and cursed with The Thirst. \
 		The Thirst requires them to feast on blood to stay alive, and in return it gives them many bonuses. \
 		Because of this, Vampires have split into two clans, one that embraces their powers as a blessing and one that rejects it.",
 	)
 
-/datum/species/vampire/create_pref_unique_perks()
+/datum/species/human/vampire/create_pref_unique_perks()
 	var/list/to_add = list()
 
 	to_add += list(
@@ -115,7 +115,7 @@
 	return to_add
 
 // Vampire blood is special, so it needs to be handled with its own entry.
-/datum/species/vampire/create_pref_blood_perks()
+/datum/species/human/vampire/create_pref_blood_perks()
 	var/list/to_add = list()
 
 	to_add += list(list(
@@ -132,7 +132,7 @@
 	return to_add
 
 // There isn't a "Minor Undead" biotype, so we have to explain it in an override (see: dullahans)
-/datum/species/vampire/create_pref_biotypes_perks()
+/datum/species/human/vampire/create_pref_biotypes_perks()
 	var/list/to_add = list()
 
 	to_add += list(list(
@@ -147,7 +147,7 @@
 
 	return to_add
 
-/obj/item/organ/internal/tongue/vampire
+/obj/item/organ/tongue/vampire
 	name = "vampire tongue"
 	actions_types = list(/datum/action/item_action/organ_action/vampire)
 	color = COLOR_CRAYON_BLACK
@@ -161,7 +161,7 @@
 	. = ..()
 	if(iscarbon(owner))
 		var/mob/living/carbon/H = owner
-		var/obj/item/organ/internal/tongue/vampire/V = target
+		var/obj/item/organ/tongue/vampire/V = target
 		if(!COOLDOWN_FINISHED(V, drain_cooldown))
 			to_chat(H, span_warning("You just drained blood, wait a few seconds!"))
 			return
@@ -197,19 +197,19 @@
 			if(!victim.blood_volume)
 				to_chat(H, span_notice("You finish off [victim]'s blood supply."))
 
-/obj/item/organ/internal/heart/vampire
+/obj/item/organ/heart/vampire
 	name = "vampire heart"
 	color = COLOR_CRAYON_BLACK
 
-/obj/item/organ/internal/heart/vampire/on_mob_insert(mob/living/carbon/receiver)
+/obj/item/organ/heart/vampire/on_mob_insert(mob/living/carbon/receiver)
 	. = ..()
 	RegisterSignal(receiver, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item))
 
-/obj/item/organ/internal/heart/vampire/on_mob_remove(mob/living/carbon/heartless)
+/obj/item/organ/heart/vampire/on_mob_remove(mob/living/carbon/heartless)
 	. = ..()
 	UnregisterSignal(heartless, COMSIG_MOB_GET_STATUS_TAB_ITEMS)
 
-/obj/item/organ/internal/heart/vampire/proc/get_status_tab_item(mob/living/carbon/source, list/items)
+/obj/item/organ/heart/vampire/proc/get_status_tab_item(mob/living/carbon/source, list/items)
 	SIGNAL_HANDLER
 	items += "Blood Level: [source.blood_volume]/[BLOOD_VOLUME_MAXIMUM]"
 
diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm
index e338d94e711..77d2765ba98 100644
--- a/code/modules/mob/living/carbon/human/species_types/zombies.dm
+++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm
@@ -4,7 +4,7 @@
 	id = SPECIES_ZOMBIE
 	sexes = FALSE
 	meat = /obj/item/food/meat/slab/human/mutant/zombie
-	mutanttongue = /obj/item/organ/internal/tongue/zombie
+	mutanttongue = /obj/item/organ/tongue/zombie
 	inherent_traits = list(
 		// SHARED WITH ALL ZOMBIES
 		TRAIT_EASILY_WOUNDED,
@@ -95,8 +95,9 @@
 	id = SPECIES_ZOMBIE_INFECTIOUS
 	examine_limb_id = SPECIES_ZOMBIE
 	damage_modifier = 20 // 120 damage to KO a zombie, which kills it
-	mutanteyes = /obj/item/organ/internal/eyes/zombie
-	mutantbrain = /obj/item/organ/internal/brain/zombie
+	mutanteyes = /obj/item/organ/eyes/zombie
+	mutantbrain = /obj/item/organ/brain/zombie
+	mutanttongue = /obj/item/organ/tongue/zombie
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN
 
 	inherent_traits = list(
@@ -138,7 +139,7 @@
 	// Deal with the source of this zombie corruption
 	// Infection organ needs to be handled separately from mutant_organs
 	// because it persists through species transitions
-	var/obj/item/organ/internal/zombie_infection/infection = new_zombie.get_organ_slot(ORGAN_SLOT_ZOMBIE)
+	var/obj/item/organ/zombie_infection/infection = new_zombie.get_organ_slot(ORGAN_SLOT_ZOMBIE)
 	if(isnull(infection))
 		infection = new()
 		infection.Insert(new_zombie)
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 28c9e987c46..2a08c8a7036 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -48,8 +48,8 @@
 // Start of a breath chain, calls [carbon/proc/breathe()]
 /mob/living/carbon/handle_breathing(seconds_per_tick, times_fired)
 	var/next_breath = 4
-	var/obj/item/organ/internal/lungs/L = get_organ_slot(ORGAN_SLOT_LUNGS)
-	var/obj/item/organ/internal/heart/H = get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/lungs/L = get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/heart/H = get_organ_slot(ORGAN_SLOT_HEART)
 	if(L)
 		if(L.damage > L.high_threshold)
 			next_breath--
@@ -70,7 +70,7 @@
 
 // Second link in a breath chain, calls [carbon/proc/check_breath()]
 /mob/living/carbon/proc/breathe(seconds_per_tick, times_fired)
-	var/obj/item/organ/internal/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
 	var/is_on_internals = FALSE
 
 	if(SEND_SIGNAL(src, COMSIG_CARBON_ATTEMPT_BREATHE, seconds_per_tick, times_fired) & COMSIG_CARBON_BLOCK_BREATH)
@@ -205,7 +205,7 @@
 	/// Indicates if there are moles of gas in the breath.
 	var/has_moles = breath.total_moles() != 0
 
-	var/obj/item/organ/internal/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
 	// Indicates if lungs can breathe without gas.
 	var/can_breathe_vacuum = FALSE
 	if(lungs)
@@ -500,7 +500,7 @@
 	if(stat == DEAD)
 		if(reagents && (reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1) || reagents.has_reagent(/datum/reagent/cryostylane))) // No organ decay if the body contains formaldehyde.
 			return
-		for(var/obj/item/organ/internal/organ in organs)
+		for(var/obj/item/organ/organ in organs)
 			// On-death is where organ decay is handled
 			if(organ?.owner) // organ + owner can be null due to reagent metabolization causing organ shuffling
 				organ.on_death(seconds_per_tick, times_fired)
@@ -513,7 +513,7 @@
 	for(var/slot in organs_slot)
 		// We don't use get_organ_slot here because we know we have the organ we want, since we're iterating the list containing em already
 		// This code is hot enough that it's just not worth the time
-		var/obj/item/organ/internal/organ = organs_slot[slot]
+		var/obj/item/organ/organ = organs_slot[slot]
 		if(organ?.owner) // This exist mostly because reagent metabolization can cause organ reshuffling
 			organ.on_life(seconds_per_tick, times_fired)
 
@@ -725,7 +725,7 @@
 /mob/living/carbon/get_fullness()
 	var/fullness = nutrition
 
-	var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(!belly) //nothing to see here if we do not have a stomach
 		return fullness
 
@@ -743,7 +743,7 @@
 	. = ..()
 	if(.)
 		return
-	var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(!belly)
 		return FALSE
 	return belly.reagents.has_reagent(reagent, amount, needs_metabolizing)
@@ -758,7 +758,7 @@
 	if(isnull(has_dna()))
 		return
 
-	var/obj/item/organ/internal/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver)
 		return
 
@@ -772,7 +772,7 @@
 	adjustOrganLoss(pick(ORGAN_SLOT_HEART, ORGAN_SLOT_LUNGS, ORGAN_SLOT_STOMACH, ORGAN_SLOT_EYES, ORGAN_SLOT_EARS), 0.5* seconds_per_tick)
 
 /mob/living/carbon/proc/undergoing_liver_failure()
-	var/obj/item/organ/internal/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver?.organ_flags & ORGAN_FAILING)
 		return TRUE
 
@@ -792,7 +792,7 @@
 /mob/living/carbon/proc/can_heartattack()
 	if(!needs_heart())
 		return FALSE
-	var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
 	if(!heart || IS_ROBOTIC_ORGAN(heart))
 		return FALSE
 	return TRUE
@@ -812,7 +812,7 @@
  * related situations (i.e not just cardiac arrest)
  */
 /mob/living/carbon/proc/undergoing_cardiac_arrest()
-	var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
 	if(istype(heart) && heart.is_beating())
 		return FALSE
 	else if(!needs_heart())
@@ -830,7 +830,7 @@
 	if(status && !can_heartattack())
 		return FALSE
 
-	var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
 	if(!istype(heart))
 		return FALSE
 
diff --git a/code/modules/mob/living/carbon/skillchip.dm b/code/modules/mob/living/carbon/skillchip.dm
index 19009f21892..062ec616a51 100644
--- a/code/modules/mob/living/carbon/skillchip.dm
+++ b/code/modules/mob/living/carbon/skillchip.dm
@@ -9,7 +9,7 @@
  */
 /mob/living/carbon/proc/implant_skillchip(obj/item/skillchip/skillchip, force = FALSE)
 	// Grab the brain.
-	var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
 
 	// Check for the brain. No brain = no implant.
 	if(QDELETED(brain))
@@ -37,7 +37,7 @@
  */
 /mob/living/carbon/proc/remove_skillchip(obj/item/skillchip/skillchip, silent = FALSE)
 	// Check the target's brain, making sure the target exists and has a brain.
-	var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(QDELETED(brain))
 		return FALSE
 
@@ -59,7 +59,7 @@
  */
 /mob/living/carbon/proc/clone_skillchip_list(not_removable = FALSE)
 	// Check the target's brain, making sure the target exists and has a brain.
-	var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(QDELETED(brain))
 		return list()
 
@@ -70,7 +70,7 @@
  */
 /mob/living/carbon/proc/destroy_all_skillchips(silent = FALSE)
 	// Check the target's brain, making sure the target exists and has a brain.
-	var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
 
 	if(QDELETED(brain))
 		return FALSE
diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm
index b1ca1733711..a7f46525334 100644
--- a/code/modules/mob/living/carbon/status_procs.dm
+++ b/code/modules/mob/living/carbon/status_procs.dm
@@ -16,17 +16,17 @@
 
 /mob/living/carbon/proc/get_traumas()
 	. = list()
-	var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(B)
 		. = B.traumas
 
 /mob/living/carbon/proc/has_trauma_type(brain_trauma_type, resilience)
-	var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(B)
 		. = B.has_trauma_type(brain_trauma_type, resilience)
 
 /mob/living/carbon/proc/gain_trauma(datum/brain_trauma/trauma, resilience, ...)
-	var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(B)
 		var/list/arguments = list()
 		if(args.len > 2)
@@ -34,16 +34,16 @@
 		. = B.brain_gain_trauma(trauma, resilience, arguments)
 
 /mob/living/carbon/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience)
-	var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(B)
 		. = B.gain_trauma_type(brain_trauma_type, resilience)
 
 /mob/living/carbon/proc/cure_trauma_type(brain_trauma_type = /datum/brain_trauma, resilience)
-	var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(B)
 		. = B.cure_trauma_type(brain_trauma_type, resilience)
 
 /mob/living/carbon/proc/cure_all_traumas(resilience)
-	var/obj/item/organ/internal/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/B = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(B)
 		. = B.cure_all_traumas(resilience)
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 24462670f07..5f3313ef37f 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -310,7 +310,7 @@
 		if(HAS_TRAIT(src, TRAIT_GODMODE))
 			return FALSE
 		if (required_respiration_type)
-			var/obj/item/organ/internal/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+			var/obj/item/organ/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
 			if(isnull(affected_lungs))
 				if(!(mob_respiration_type & required_respiration_type))  // if the mob has no lungs, use mob_respiration_type
 					return FALSE
@@ -337,7 +337,7 @@
 		if(HAS_TRAIT(src, TRAIT_GODMODE))
 			return FALSE
 
-		var/obj/item/organ/internal/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+		var/obj/item/organ/lungs/affected_lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
 		if(isnull(affected_lungs))
 			if(!(mob_respiration_type & required_respiration_type))
 				return FALSE
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index 51ef4e42e02..0e9f6f8372e 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -139,22 +139,27 @@
 
 /datum/emote/living/flap/run_emote(mob/user, params, type_override, intentional)
 	. = ..()
-	if(ishuman(user))
-		var/mob/living/carbon/human/human_user = user
-		var/open = FALSE
-		var/obj/item/organ/external/wings/functional/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
-
-		// open/close functional wings
-		if(istype(wings))
-			if(wings.wings_open)
-				open = TRUE
-				wings.close_wings()
-			else
-				wings.open_wings()
-			addtimer(CALLBACK(wings,  open ? TYPE_PROC_REF(/obj/item/organ/external/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/external/wings/functional, close_wings)), wing_time)
+	if(!ishuman(user))
+		return
+	var/mob/living/carbon/human/human_user = user
+	var/obj/item/organ/wings/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
 
-		// play a flapping noise if the wing has this implemented
-		wings.make_flap_sound(human_user)
+	// play a flapping noise if the wing has this implemented
+	if(!istype(wings))
+		return
+	wings.make_flap_sound(human_user)
+
+	// open/close functional wings
+	var/obj/item/organ/wings/functional/wings_functional = wings
+	if(!istype(wings_functional))
+		return
+	var/open = FALSE
+	if(wings_functional.wings_open)
+		open = TRUE
+		wings_functional.close_wings()
+	else
+		wings_functional.open_wings()
+	addtimer(CALLBACK(wings_functional, open ? TYPE_PROC_REF(/obj/item/organ/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/wings/functional, close_wings)), wing_time)
 
 /datum/emote/living/flap/aflap
 	key = "aflap"
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 1fa2e11ac64..f6acc4e8add 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -66,7 +66,7 @@
 	// multiplier for the damage taken from falling
 	var/damage_softening_multiplier = 1
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		damage_softening_multiplier *= potential_spine.athletics_boost_multiplier
 
@@ -78,7 +78,7 @@
 	// If you are incapped, you probably can't brace yourself
 	var/can_help_themselves = !INCAPACITATED_IGNORING(src, INCAPABLE_RESTRAINTS)
 	if(levels <= 1 && can_help_themselves)
-		var/obj/item/organ/external/wings/gliders = get_organ_by_type(/obj/item/organ/external/wings)
+		var/obj/item/organ/wings/gliders = get_organ_by_type(/obj/item/organ/wings)
 		if(HAS_TRAIT(src, TRAIT_FREERUNNING) || gliders?.can_soften_fall()) // the power of parkour or wings allows falling short distances unscathed
 			var/graceful_landing = HAS_TRAIT(src, TRAIT_CATLIKE_GRACE)
 
@@ -726,7 +726,7 @@
 
 	var/get_up_time = 1 SECONDS
 
-	var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
+	var/obj/item/organ/cyberimp/chest/spine/potential_spine = get_organ_slot(ORGAN_SLOT_SPINE)
 	if(istype(potential_spine))
 		get_up_time *= potential_spine.athletics_boost_multiplier
 
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 119825d02cd..36eeb7d3efe 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -675,7 +675,7 @@
 
 /** Handles exposing a mob to reagents.
  *
- * If the methods include INGEST the mob tastes the reagents.
+ * If the methods include INGEST or INHALE, the mob tastes the reagents.
  * If the methods include VAPOR it incorporates permiability protection.
  */
 /mob/living/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE)
@@ -683,8 +683,8 @@
 	if(. & COMPONENT_NO_EXPOSE_REAGENTS)
 		return
 
-	if(methods & INGEST)
-		taste(source)
+	if(methods & (INGEST | INHALE))
+		taste_list(reagents)
 
 	var/touch_protection = (methods & VAPOR) ? getarmor(null, BIO) * 0.01 : 0
 	SEND_SIGNAL(source, COMSIG_REAGENTS_EXPOSE_MOB, src, reagents, methods, volume_modifier, show_message, touch_protection)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 110c502ba45..323f9a688f5 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -456,7 +456,7 @@
 	if(hack_software)
 		new/obj/item/malf_upgrade(get_turf(src))
 	the_mmi = mmi_type
-	the_mmi.brain = new /obj/item/organ/internal/brain(the_mmi)
+	the_mmi.brain = new /obj/item/organ/brain(the_mmi)
 	the_mmi.brain.organ_flags |= ORGAN_FROZEN
 	the_mmi.brain.name = "[real_name]'s brain"
 	the_mmi.name = "[initial(the_mmi.name)]: [real_name]"
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index ac9ca46d9b9..d33e7e7bcc1 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -64,7 +64,7 @@
 		//MMI stuff. Held togheter by magic. ~Miauw
 		if(!mmi?.brainmob)
 			mmi = new (src)
-			mmi.brain = new /obj/item/organ/internal/brain(mmi)
+			mmi.brain = new /obj/item/organ/brain(mmi)
 			mmi.brain.organ_flags |= ORGAN_FROZEN
 			mmi.brain.name = "[real_name]'s brain"
 			mmi.name = "[initial(mmi.name)]: [real_name]"
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index c7171b3c555..f1e34612713 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -153,7 +153,7 @@ Difficulty: Hard
  */
 /mob/living/simple_animal/hostile/megafauna/bubblegum/attackby(obj/item/W, mob/user, params)
 	. = ..()
-	if(istype(W, /obj/item/organ/internal/tongue))
+	if(istype(W, /obj/item/organ/tongue))
 		user.client?.give_award(/datum/award/achievement/jobs/frenching, user)
 
 /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/try_bloodattack()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index b40a793f0fc..1cf118d5876 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -274,8 +274,8 @@ While using this makes the system rely on OnFire, it still gives options for tim
 
 /obj/structure/elite_tumor/item_interaction(mob/living/user, obj/item/attacking_item, list/modifiers)
 	. = NONE
-	if(istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core) && activity == TUMOR_INACTIVE && !boosted)
-		var/obj/item/organ/internal/monster_core/regenerative_core/core = attacking_item
+	if(istype(attacking_item, /obj/item/organ/monster_core/regenerative_core) && activity == TUMOR_INACTIVE && !boosted)
+		var/obj/item/organ/monster_core/regenerative_core/core = attacking_item
 		visible_message(span_boldwarning("As [user] drops the core into [src], [src] appears to swell."))
 		icon_state = "advanced_tumor"
 		boosted = TRUE
diff --git a/code/modules/mob/living/taste.dm b/code/modules/mob/living/taste.dm
index 2b88984bf41..5da5781b2ed 100644
--- a/code/modules/mob/living/taste.dm
+++ b/code/modules/mob/living/taste.dm
@@ -14,7 +14,7 @@
 	return DEFAULT_TASTE_SENSITIVITY
 
 /mob/living/carbon/get_taste_sensitivity()
-	var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(istype(tongue))
 		. = tongue.taste_sensitivity
 	else
@@ -22,28 +22,65 @@
 		. = DEFAULT_TASTE_SENSITIVITY
 
 /**
- * Non destructively tastes a reagent container
+ * Non-destructively tastes a reagent container
  * and gives feedback to the user.
+ * Arguments:
+ * * datum/reagents/from - Reagent holder to taste from.
  **/
-/mob/living/proc/taste(datum/reagents/from)
-	if(HAS_TRAIT(src, TRAIT_AGEUSIA))
+/mob/living/proc/taste_container(datum/reagents/from)
+	if(check_tasting_blocks())
 		return
 
-	if(last_taste_time + 50 < world.time)
-		var/taste_sensitivity = get_taste_sensitivity()
-		var/text_output = from.generate_taste_message(src, taste_sensitivity)
-		// We dont want to spam the same message over and over again at the
-		// person. Give it a bit of a buffer.
-		if(get_timed_status_effect_duration(/datum/status_effect/hallucination) > 100 SECONDS && prob(25))
-			text_output = pick("spiders","dreams","nightmares","the future","the past","victory",\
+	var/taste_sensitivity = get_taste_sensitivity()
+	var/text_output = from.generate_taste_message(src, taste_sensitivity)
+	send_taste_message(text_output)
+
+/**
+ * Non-destructively tastes a reagent list
+ * and gives feedback to the user.
+ * Arguments:
+ * * list/from - List of reagents to taste from.
+ **/
+/mob/living/proc/taste_list(list/from)
+	if(check_tasting_blocks())
+		return
+
+	var/taste_sensitivity = get_taste_sensitivity()
+	var/text_output = generate_reagents_taste_message(from, src, taste_sensitivity)
+	send_taste_message(text_output)
+
+/**
+ * Check for anything blocking/overriding our tasting.
+ * Returns TRUE on a block, FALSE if not.
+ **/
+/mob/living/proc/check_tasting_blocks()
+	if(HAS_TRAIT(src, TRAIT_AGEUSIA))
+		return TRUE
+	if(last_taste_time + 50 >= world.time)
+		return TRUE
+
+	// Sometimes, try send a replacement message if we're hallucinating
+	if(get_timed_status_effect_duration(/datum/status_effect/hallucination) > 100 SECONDS && prob(25))
+		var/text_output = pick("spiders","dreams","nightmares","the future","the past","victory",\
 			"defeat","pain","bliss","revenge","poison","time","space","death","life","truth","lies","justice","memory",\
 			"regrets","your soul","suffering","music","noise","blood","hunger","the american way")
-		if(text_output != last_taste_text || last_taste_time + 100 < world.time)
-			to_chat(src, span_notice("You can taste [text_output]."))
-			// "something indescribable" -> too many tastes, not enough flavor.
+		send_taste_message(text_output)
+		return TRUE
+
+	return FALSE
+
+/**
+ * Attempt to send a taste message using given tastes text.
+ **/
+/mob/living/proc/send_taste_message(tastes_text)
+	if(tastes_text == last_taste_text && last_taste_time + 100 >= world.time)
+		return
+
+	to_chat(src, span_notice("You can taste [tastes_text]."))
+	// "something indescribable" -> too many tastes, not enough flavor.
 
-			last_taste_time = world.time
-			last_taste_text = text_output
+	last_taste_time = world.time
+	last_taste_text = tastes_text
 
 /**
  * Gets food flags that this mob likes
@@ -57,7 +94,7 @@
 	// Handled in here since the brain trauma can't modify taste directly (/datum/brain_trauma/severe/flesh_desire)
 	if(HAS_TRAIT(src, TRAIT_FLESH_DESIRE))
 		return GORE | MEAT
-	var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
 	. = tongue.liked_foodtypes
 	if(HAS_TRAIT(src, TRAIT_VEGETARIAN))
 		. &= ~MEAT
@@ -73,7 +110,7 @@
 /mob/living/carbon/get_disliked_foodtypes()
 	if(HAS_TRAIT(src, TRAIT_AGEUSIA))
 		return NONE
-	var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
 	. = tongue.disliked_foodtypes
 	if(HAS_TRAIT(src, TRAIT_VEGETARIAN))
 		. |= MEAT
@@ -86,7 +123,7 @@
 	return TOXIC
 
 /mob/living/carbon/get_toxic_foodtypes()
-	var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		return ..()
 	if(HAS_TRAIT(src, TRAIT_FLESH_DESIRE))
@@ -140,7 +177,7 @@
 	return food_taste_reaction
 
 /mob/living/carbon/get_food_taste_reaction(obj/item/food, foodtypes)
-	var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
 	// No tongue, no tastin'
 	if(!tongue?.sense_of_taste || HAS_TRAIT(src, TRAIT_AGEUSIA))
 		// i hate that i have to do this, but we want to ensure toxic food is still BAD
diff --git a/code/modules/mob_spawn/corpses/mining_corpses.dm b/code/modules/mob_spawn/corpses/mining_corpses.dm
index 3963cefcb49..e9a4a9b0504 100644
--- a/code/modules/mob_spawn/corpses/mining_corpses.dm
+++ b/code/modules/mob_spawn/corpses/mining_corpses.dm
@@ -26,7 +26,7 @@
 
 /obj/effect/mob_spawn/corpse/human/legioninfested/special(mob/living/carbon/human/spawned_human)
 	. = ..()
-	var/obj/item/organ/internal/legion_tumour/cancer = new()
+	var/obj/item/organ/legion_tumour/cancer = new()
 	cancer.Insert(spawned_human, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 
 /// Returns the outfit worn by our corpse
diff --git a/code/modules/mob_spawn/ghost_roles/golem_roles.dm b/code/modules/mob_spawn/ghost_roles/golem_roles.dm
index 5fc643bffa6..af7cde7320d 100644
--- a/code/modules/mob_spawn/ghost_roles/golem_roles.dm
+++ b/code/modules/mob_spawn/ghost_roles/golem_roles.dm
@@ -78,7 +78,7 @@
 	if(!ishuman(new_spawn))
 		return
 	var/mob/living/carbon/human/new_golem = new_spawn
-	var/obj/item/organ/internal/vocal_cords/adamantine/free_golem_radio = new()
+	var/obj/item/organ/vocal_cords/adamantine/free_golem_radio = new()
 	free_golem_radio.Insert(new_golem)
 
 // Subtype which follows orders
diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm
index 019339584af..3081c64c82a 100644
--- a/code/modules/mod/mod_activation.dm
+++ b/code/modules/mod/mod_activation.dm
@@ -26,7 +26,7 @@
 		return
 	var/parts_to_check = parts - part
 	if(part.loc == src)
-		if(!deploy(user, part) || (active && !delayed_seal_part(part)))
+		if(!deploy(user, part))
 			return
 		SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user)
 		for(var/obj/item/checking_part as anything in parts_to_check)
@@ -35,7 +35,7 @@
 			choose_deploy(user)
 			break
 	else
-		if((active && !delayed_seal_part(part, silent = TRUE)) || !retract(user, part))
+		if(!retract(user, part))
 			return
 		SEND_SIGNAL(src, COMSIG_MOD_RETRACTED, user)
 		for(var/obj/item/checking_part as anything in parts_to_check)
@@ -64,12 +64,7 @@
 		if(deploy && part.loc == src)
 			if(!deploy(null, part))
 				continue
-			if(active && !delayed_seal_part(part))
-				retract(null, part)
-				return
 		else if(!deploy && part.loc != src)
-			if(active && !delayed_seal_part(part))
-				return
 			retract(null, part)
 	if(deploy)
 		SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user)
@@ -78,7 +73,7 @@
 	return TRUE
 
 /// Deploys a part of the suit onto the user.
-/obj/item/mod/control/proc/deploy(mob/user, obj/item/part)
+/obj/item/mod/control/proc/deploy(mob/user, obj/item/part, instant = FALSE)
 	var/datum/mod_part/part_datum = get_part_datum(part)
 	if(!wearer)
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
@@ -86,7 +81,7 @@
 	if(part.loc != src)
 		if(!user)
 			return FALSE
-		balloon_alert(user, "[part.name] already deployed!")
+		balloon_alert(user, "already deployed!")
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 	if(part_datum.can_overslot)
 		var/obj/item/overslot = wearer.get_item_by_slot(part.slot_flags)
@@ -97,14 +92,21 @@
 	if(wearer.equip_to_slot_if_possible(part, part.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE))
 		ADD_TRAIT(part, TRAIT_NODROP, MOD_TRAIT)
 		wearer.update_clothing(slot_flags)
-		if(!user)
+		SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part_datum)
+		if(user)
+			wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."),
+				span_notice("[part] deploy[part.p_s()] with a mechanical hiss."),
+				span_hear("You hear a mechanical hiss."))
+			playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+		if(!active || part_datum.sealed)
 			return TRUE
-		wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."),
-			span_notice("[part] deploy[part.p_s()] with a mechanical hiss."),
-			span_hear("You hear a mechanical hiss."))
-		playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
-		SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part)
-		return TRUE
+		if(instant)
+			seal_part(part, is_sealed = TRUE)
+			return TRUE
+		else if(delayed_seal_part(part))
+			return TRUE
+		balloon_alert(user, "can't seal, retracting!")
+		retract(user, part, instant = TRUE)
 	else
 		if(part_datum.overslotting)
 			var/obj/item/overslot = part_datum.overslotting
@@ -117,14 +119,21 @@
 	return FALSE
 
 /// Retract a part of the suit from the user.
-/obj/item/mod/control/proc/retract(mob/user, obj/item/part)
+/obj/item/mod/control/proc/retract(mob/user, obj/item/part, instant = FALSE)
 	var/datum/mod_part/part_datum = get_part_datum(part)
 	if(part.loc == src)
 		if(!user)
 			return FALSE
-		balloon_alert(user, "[part.name] already retracted!")
+		balloon_alert(user, "already retracted!")
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return FALSE
+	if(active && part_datum.sealed)
+		if(instant)
+			seal_part(part, is_sealed = FALSE)
+		else if(!delayed_seal_part(part))
+			balloon_alert(user, "can't unseal!")
+			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
+			return FALSE
 	REMOVE_TRAIT(part, TRAIT_NODROP, MOD_TRAIT)
 	wearer.transferItemToLoc(part, src, force = TRUE)
 	if(part_datum.overslotting)
@@ -132,7 +141,7 @@
 		if(!QDELING(wearer) && !wearer.equip_to_slot_if_possible(overslot, overslot.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE))
 			wearer.dropItemToGround(overslot, force = TRUE, silent = TRUE)
 	wearer.update_clothing(slot_flags)
-	SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part)
+	SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part_datum)
 	if(!user)
 		return TRUE
 	wearer.visible_message(span_notice("[wearer]'s [part.name] retract[part.p_s()] back into [src] with a mechanical hiss."),
@@ -145,7 +154,7 @@
 /obj/item/mod/control/proc/toggle_activate(mob/user, force_deactivate = FALSE)
 	if(!wearer)
 		if(!force_deactivate)
-			balloon_alert(user, "equip suit first!")
+			balloon_alert(user, "not equipped!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return FALSE
 	if(!force_deactivate && (SEND_SIGNAL(src, COMSIG_MOD_ACTIVATE, user) & MOD_CANCEL_ACTIVATE))
@@ -156,16 +165,16 @@
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return FALSE
 	if(!get_charge() && !force_deactivate)
-		balloon_alert(user, "suit not powered!")
+		balloon_alert(user, "no power source!")
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return FALSE
 	if(open && !force_deactivate)
-		balloon_alert(user, "close the suit panel!")
+		balloon_alert(user, "panel open!")
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return FALSE
 	if(activating)
 		if(!force_deactivate)
-			balloon_alert(user, "suit already [active ? "shutting down" : "starting up"]!")
+			balloon_alert(user, "already [active ? "shutting down" : "starting up"]!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return FALSE
 	for(var/obj/item/mod/module/module as anything in modules)
@@ -221,13 +230,12 @@
 	SEND_SIGNAL(src, COMSIG_MOD_TOGGLED, user)
 	return TRUE
 
-/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part, silent = FALSE)
+/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part)
 	. = FALSE
 	var/datum/mod_part/part_datum = get_part_datum(part)
 	if(do_after(wearer, activation_step_time, wearer, MOD_ACTIVATION_STEP_FLAGS, extra_checks = CALLBACK(src, PROC_REF(get_wearer)), hidden = TRUE))
-		if(!silent)
-			to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message]."))
-			playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+		to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message]."))
+		playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
 		seal_part(part, is_sealed = !part_datum.sealed)
 		return TRUE
 
@@ -262,6 +270,7 @@
 	wearer.update_obscured_slots(part.visor_flags_inv)
 	if((part.clothing_flags & (MASKINTERNALS|HEADINTERNALS)) && wearer.invalid_internals())
 		wearer.cutoff_internals()
+	SEND_SIGNAL(src, COMSIG_MOD_PART_SEALED, part_datum)
 	if(is_sealed)
 		if (!active)
 			return
@@ -308,12 +317,8 @@
 
 /// Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits.
 /obj/item/mod/control/proc/quick_activation()
-	for(var/obj/item/part as anything in get_parts())
-		deploy(null, part)
-	for(var/obj/item/part as anything in get_parts())
-		if(part.loc == src)
-			continue
-		seal_part(part, is_sealed = TRUE)
 	control_activation(is_on = TRUE)
+	for(var/obj/item/part as anything in get_parts())
+		deploy(null, part, instant = TRUE)
 
 #undef MOD_ACTIVATION_STEP_FLAGS
diff --git a/code/modules/mod/mod_ai.dm b/code/modules/mod/mod_ai.dm
index c268cc02ff3..e209b8ef10a 100644
--- a/code/modules/mod/mod_ai.dm
+++ b/code/modules/mod/mod_ai.dm
@@ -7,19 +7,19 @@
 		return
 	// NOVA EDIT END
 	if(!open) //mod must be open
-		balloon_alert(user, "suit must be open to transfer!")
+		balloon_alert(user, "panel closed!")
 		return
 	switch(interaction)
 		if(AI_TRANS_TO_CARD)
 			if(!ai_assistant)
-				balloon_alert(user, "no ai in suit!")
+				balloon_alert(user, "no ai in unit!")
 				return
 			balloon_alert(user, "transferring to card...")
 			if(!do_after(user, 5 SECONDS, target = src))
 				balloon_alert(user, "interrupted!")
 				return
 			if(!ai_assistant)
-				balloon_alert(user, "no ai in suit!")
+				balloon_alert(user, "no ai in unit!")
 				return
 			balloon_alert(user, "ai transferred to card")
 			ai_exit_mod(card)
@@ -37,13 +37,13 @@
 			if(intAI.stat || !intAI.client)
 				balloon_alert(user, "ai unresponsive!")
 				return
-			balloon_alert(user, "transferring to suit...")
+			balloon_alert(user, "transferring to unit...")
 			if(!do_after(user, 5 SECONDS, target = src))
 				balloon_alert(user, "interrupted!")
 				return
 			if(ai_assistant)
 				return
-			balloon_alert(user, "ai transferred to suit")
+			balloon_alert(user, "ai transferred to unit")
 			ai_enter_mod(intAI)
 			card.AI = null
 
@@ -78,14 +78,14 @@
 	if (isnull(card.pai?.mind))
 		balloon_alert(user, "pAI unresponsive!")
 		return FALSE
-	balloon_alert(user, "transferring to suit...")
+	balloon_alert(user, "transferring to unit...")
 	if (!do_after(user, 5 SECONDS, target = src))
 		balloon_alert(user, "interrupted!")
 		return FALSE
 	if (!user.transferItemToLoc(card, src))
 		balloon_alert(user, "transfer failed!")
 		return FALSE
-	balloon_alert(user, "pAI transferred to suit")
+	balloon_alert(user, "pAI transferred to unit")
 	var/mob/living/silicon/pai/pai_assistant = card.pai
 	pai_assistant.can_transmit = TRUE
 	pai_assistant.can_receive = TRUE
@@ -107,14 +107,14 @@
 		return FALSE
 	if (!forced)
 		if (!open)
-			balloon_alert(user, "suit panel closed!")
+			balloon_alert(user, "panel closed!")
 			return FALSE
 		balloon_alert(user, "uninstalling card...")
 		if (!do_after(user, 5 SECONDS, target = src))
 			balloon_alert(user, "interrupted!")
 			return FALSE
 
-	balloon_alert(user, "pAI removed from suit")
+	balloon_alert(user, "pAI removed")
 	var/mob/living/silicon/pai/pai_helper = ai_assistant
 	//pai_helper.can_holo = TRUE //NOVA EDIT REMOVAL - pAI in modsuits can Holoform
 	pai_helper.card.forceMove(get_turf(src))
@@ -123,7 +123,7 @@
 /// Called when a new ai assistant is inserted
 /obj/item/mod/control/proc/on_gained_assistant(mob/living/silicon/new_helper)
 	ai_assistant = new_helper
-	balloon_alert(new_helper, "transferred to a suit")
+	balloon_alert(new_helper, "transferred to a mod unit")
 	for(var/datum/action/action as anything in actions)
 		action.Grant(new_helper)
 
@@ -142,7 +142,10 @@
 #define AI_FALL_TIME (1 SECONDS)
 
 /obj/item/mod/control/relaymove(mob/user, direction)
-	if((!active && wearer) || get_charge() < CHARGE_PER_STEP  || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE))
+	if((!active && wearer) || get_charge() < CHARGE_PER_STEP || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE))
+		return FALSE
+	var/datum/mod_part/legs_to_move = get_part_datum_from_slot(ITEM_SLOT_FEET)
+	if(wearer && (!legs_to_move || !legs_to_move.sealed))
 		return FALSE
 	// NOVA EDIT START - pAIs in MODsuits with a bit more functionalities
 	if(active && !can_pai_move_suit && ispAI(ai_assistant))
@@ -159,7 +162,7 @@
 	if(ismovable(wearer?.loc))
 		return wearer.loc.relaymove(wearer, direction)
 	else if(wearer)
-		ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT)
+		ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src))
 		addtimer(CALLBACK(src, PROC_REF(ai_fall)), AI_FALL_TIME, TIMER_UNIQUE | TIMER_OVERRIDE)
 	var/atom/movable/mover = wearer || src
 	return mover.try_step_multiz(direction)
@@ -172,7 +175,7 @@
 /obj/item/mod/control/proc/ai_fall()
 	if(!wearer)
 		return
-	REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT)
+	REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src))
 
 /obj/item/mod/ai_minicard
 	name = "AI mini-card"
diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm
index 16ce70df945..3581c04e606 100644
--- a/code/modules/mod/mod_construction.dm
+++ b/code/modules/mod/mod_construction.dm
@@ -162,7 +162,7 @@
 			if(!istype(part, /obj/item/mod/core))
 				return
 			if(!user.transferItemToLoc(part, src))
-				balloon_alert(user, "core stuck to your hand!")
+				balloon_alert(user, "it's stuck!")
 				return
 			playsound(src, 'sound/machines/click.ogg', 30, TRUE)
 			balloon_alert(user, "core inserted")
@@ -181,7 +181,7 @@
 		if(SCREWED_CORE_STEP)
 			if(istype(part, /obj/item/mod/construction/helmet)) //Construct
 				if(!user.transferItemToLoc(part, src))
-					balloon_alert(user, "helmet stuck to your hand!")
+					balloon_alert(user, "it's stuck!")
 					return
 				playsound(src, 'sound/machines/click.ogg', 30, TRUE)
 				balloon_alert(user, "helmet added")
@@ -194,7 +194,7 @@
 		if(HELMET_STEP)
 			if(istype(part, /obj/item/mod/construction/chestplate)) //Construct
 				if(!user.transferItemToLoc(part, src))
-					balloon_alert(user, "chestplate stuck to your hand!")
+					balloon_alert(user, "it's stuck!")
 					return
 				playsound(src, 'sound/machines/click.ogg', 30, TRUE)
 				balloon_alert(user, "chestplate added")
@@ -209,7 +209,7 @@
 		if(CHESTPLATE_STEP)
 			if(istype(part, /obj/item/mod/construction/gauntlets)) //Construct
 				if(!user.transferItemToLoc(part, src))
-					balloon_alert(user, "gauntlets stuck to your hand!")
+					balloon_alert(user, "it's stuck!")
 					return
 				playsound(src, 'sound/machines/click.ogg', 30, TRUE)
 				balloon_alert(user, "gauntlets added")
@@ -224,10 +224,10 @@
 		if(GAUNTLETS_STEP)
 			if(istype(part, /obj/item/mod/construction/boots)) //Construct
 				if(!user.transferItemToLoc(part, src))
-					balloon_alert(user, "boots added")
+					balloon_alert(user, "it's stuck!")
 					return
 				playsound(src, 'sound/machines/click.ogg', 30, TRUE)
-				balloon_alert(user, "fit [part.name]")
+				balloon_alert(user, "boots added")
 				boots = part
 				step = BOOTS_STEP
 			else if(part.tool_behaviour == TOOL_CROWBAR) //Deconstruct
@@ -260,13 +260,14 @@
 			if(istype(part, /obj/item/mod/construction/plating)) //Construct
 				var/obj/item/mod/construction/plating/external_plating = part
 				if(!user.transferItemToLoc(part, src))
+					balloon_alert(user, "it's stuck!")
 					return
 				playsound(src, 'sound/machines/click.ogg', 30, TRUE)
 				var/obj/item/mod = new /obj/item/mod/control(drop_location(), external_plating.theme, null, core)
 				core = null
 				qdel(src)
 				user.put_in_hands(mod)
-				mod.balloon_alert(user, "suit finished")
+				mod.balloon_alert(user, "unit finished")
 			else if(part.tool_behaviour == TOOL_SCREWDRIVER) //Construct
 				if(part.use_tool(src, user, 0, volume=30))
 					balloon_alert(user, "assembly unscrewed")
diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm
index 3bf7d68c3be..132fae260ac 100644
--- a/code/modules/mod/mod_control.dm
+++ b/code/modules/mod/mod_control.dm
@@ -98,7 +98,6 @@
 	theme.set_up_parts(src, new_skin)
 	for(var/obj/item/part as anything in get_parts())
 		RegisterSignal(part, COMSIG_ATOM_DESTRUCTION, PROC_REF(on_part_destruction))
-		RegisterSignal(part, COMSIG_QDELETING, PROC_REF(on_part_deletion))
 	set_wires(new /datum/wires/mod(src))
 	if(length(req_access))
 		locked = TRUE
@@ -119,14 +118,19 @@
 		QDEL_NULL(core)
 	QDEL_NULL(mod_link)
 	for(var/datum/mod_part/part_datum as anything in get_part_datums(all = TRUE))
+		var/obj/item/part_item = part_datum.part_item
 		part_datum.part_item = null
 		part_datum.overslotting = null
+		mod_parts -= part_datum
+		if(!QDELING(part_item))
+			qdel(part_item)
 	return ..()
 
 /obj/item/mod/control/atom_destruction(damage_flag)
+	var/atom/visible_atom = wearer || src
 	if(wearer)
-		wearer.visible_message(span_danger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE)
 		clean_up()
+	visible_atom.visible_message(span_bolddanger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE)
 	for(var/obj/item/mod/module/module as anything in modules)
 		uninstall(module)
 	if(ai_assistant)
@@ -221,12 +225,12 @@
 	if(user != wearer)
 		return ..()
 	if(active)
-		balloon_alert(wearer, "deactivate the suit first!")
+		balloon_alert(wearer, "unit active!")
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
 		return
 	for(var/obj/item/part as anything in get_parts())
 		if(part.loc != src)
-			balloon_alert(user, "retract parts first!")
+			balloon_alert(user, "parts extended!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
 			return FALSE
 
@@ -234,12 +238,12 @@
 	if(user != wearer || !istype(over_object, /atom/movable/screen/inventory/hand))
 		return
 	if(active)
-		balloon_alert(wearer, "deactivate the suit first!")
+		balloon_alert(wearer, "unit active!")
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
 		return
 	for(var/obj/item/part as anything in get_parts())
 		if(part.loc != src)
-			balloon_alert(wearer, "retract parts first!")
+			balloon_alert(wearer, "parts extended!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE)
 			return
 	if(!wearer.incapacitated)
@@ -267,14 +271,15 @@
 
 /obj/item/mod/control/screwdriver_act(mob/living/user, obj/item/screwdriver)
 	if(active || activating || ai_controller)
-		balloon_alert(user, "deactivate suit first!")
+		balloon_alert(user, "unit active!")
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return ITEM_INTERACT_BLOCKING
 	balloon_alert(user, "[open ? "closing" : "opening"] cover...")
 	screwdriver.play_tool_sound(src, 100)
 	if(screwdriver.use_tool(src, user, 1 SECONDS))
 		if(active || activating)
-			balloon_alert(user, "deactivate suit first!")
+			balloon_alert(user, "unit active!")
+			return ITEM_INTERACT_SUCCESS
 		screwdriver.play_tool_sound(src, 100)
 		balloon_alert(user, "cover [open ? "closed" : "opened"]")
 		open = !open
@@ -284,7 +289,7 @@
 
 /obj/item/mod/control/crowbar_act(mob/living/user, obj/item/crowbar)
 	if(!open)
-		balloon_alert(user, "open the cover first!")
+		balloon_alert(user, "cover closed!")
 		playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return ITEM_INTERACT_BLOCKING
 	if(!allowed(user))
@@ -316,14 +321,14 @@
 /obj/item/mod/control/tool_act(mob/living/user, obj/item/tool, list/modifiers)
 	if(istype(tool, /obj/item/pai_card))
 		if(!open)
-			balloon_alert(user, "open the cover first!")
+			balloon_alert(user, "cover closed!")
 			return NONE // shoves the card in the storage anyways
 		insert_pai(user, tool)
 		return ITEM_INTERACT_SUCCESS
 	if(istype(tool, /obj/item/mod/paint))
 		var/obj/item/mod/paint/paint_kit = tool
 		if(active || activating)
-			balloon_alert(user, "suit is active!")
+			balloon_alert(user, "unit active!")
 			return ITEM_INTERACT_BLOCKING
 		if(LAZYACCESS(modifiers, RIGHT_CLICK)) // Right click
 			if(paint_kit.editing_mod == src)
@@ -342,7 +347,7 @@
 			return ITEM_INTERACT_SUCCESS
 	if(istype(tool, /obj/item/mod/module))
 		if(!open)
-			balloon_alert(user, "open the cover first!")
+			balloon_alert(user, "cover closed!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 			return ITEM_INTERACT_BLOCKING
 		install(tool, user)
@@ -350,11 +355,11 @@
 		return ITEM_INTERACT_SUCCESS
 	if(istype(tool, /obj/item/mod/core))
 		if(!open)
-			balloon_alert(user, "open the cover first!")
+			balloon_alert(user, "cover closed!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 			return ITEM_INTERACT_BLOCKING
 		if(core)
-			balloon_alert(user, "core already installed!")
+			balloon_alert(user, "already has core!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 			return ITEM_INTERACT_BLOCKING
 		var/obj/item/mod/core/attacking_core = tool
@@ -386,7 +391,7 @@
 
 /obj/item/mod/control/emag_act(mob/user, obj/item/card/emag/emag_card)
 	locked = !locked
-	balloon_alert(user, "suit access [locked ? "locked" : "unlocked"]")
+	balloon_alert(user, "access [locked ? "locked" : "unlocked"]")
 	return TRUE
 
 /obj/item/mod/control/emp_act(severity)
@@ -446,12 +451,11 @@
 	CRASH("get_part_datum called with incorrect item [part] passed.")
 
 /obj/item/mod/control/proc/get_part_from_slot(slot)
-	slot = "[slot]"
-	for(var/part_slot in mod_parts)
-		if(slot != part_slot)
-			continue
-		var/datum/mod_part/part = mod_parts[part_slot]
-		return part.part_item
+	var/datum/mod_part/part = mod_parts["[slot]"]
+	return part?.part_item
+
+/obj/item/mod/control/proc/get_part_datum_from_slot(slot)
+	return mod_parts["[slot]"]
 
 /obj/item/mod/control/proc/set_wearer(mob/living/carbon/human/user)
 	if(wearer == user)
@@ -512,7 +516,9 @@
 		for(var/obj/item/part as anything in get_parts())
 			seal_part(part, is_sealed = FALSE)
 	for(var/obj/item/part as anything in get_parts())
-		retract(null, part)
+		if(part.loc == src)
+			continue
+		INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after
 	if(active)
 		control_activation(is_on = FALSE)
 		mod_link?.end_call()
@@ -580,24 +586,24 @@
 	for(var/obj/item/mod/module/old_module as anything in modules)
 		if(is_type_in_list(new_module, old_module.incompatible_modules) || is_type_in_list(old_module, new_module.incompatible_modules))
 			if(user)
-				balloon_alert(user, "[new_module] incompatible with [old_module]!")
+				balloon_alert(user, "incompatible with [old_module]!")
 				playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 			return
 	var/complexity_with_module = complexity
 	complexity_with_module += new_module.complexity
 	if(complexity_with_module > complexity_max)
 		if(user)
-			balloon_alert(user, "[new_module] would make [src] too complex!")
+			balloon_alert(user, "above complexity max!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return
 	if(!new_module.has_required_parts(mod_parts))
 		if(user)
-			balloon_alert(user, "[new_module] incompatible with [src]'s parts!")
+			balloon_alert(user, "lacking required parts!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return
 	if(!new_module.can_install(src))
 		if(user)
-			balloon_alert(user, "[new_module] cannot be installed into [src]!")
+			balloon_alert(user, "can't install!")
 			playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return
 	new_module.forceMove(src)
@@ -662,6 +668,12 @@
 /obj/item/mod/control/proc/check_charge(amount)
 	return core?.check_charge(amount) || FALSE
 
+/obj/item/mod/control/proc/get_chargebar_color()
+	return core?.get_chargebar_color() || "transparent"
+
+/obj/item/mod/control/proc/get_chargebar_string()
+	return core?.get_chargebar_string() || "No Core Detected"
+
 /**
  * Updates the wearer's hud according to the current state of the MODsuit
  */
@@ -707,6 +719,9 @@
 		uninstall(part)
 		return
 	if(part in get_parts())
+		if(QDELING(part) && !QDELING(src))
+			qdel(src)
+			return
 		var/datum/mod_part/part_datum = get_part_datum(part)
 		if(part_datum.sealed)
 			seal_part(part, is_sealed = FALSE)
@@ -715,7 +730,7 @@
 		if(!wearer)
 			part.forceMove(src)
 			return
-		retract(wearer, part)
+		INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after
 
 /obj/item/mod/control/proc/on_part_destruction(obj/item/part, damage_flag)
 	SIGNAL_HANDLER
@@ -724,14 +739,6 @@
 		return
 	atom_destruction(damage_flag)
 
-/obj/item/mod/control/proc/on_part_deletion(obj/item/part)
-	SIGNAL_HANDLER
-
-	if(QDELING(src))
-		return
-	part.moveToNullspace()
-	qdel(src)
-
 /obj/item/mod/control/proc/on_overslot_exit(obj/item/part, atom/movable/overslot, direction)
 	SIGNAL_HANDLER
 
diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm
index 791c5347722..01e0902b6b0 100644
--- a/code/modules/mod/mod_core.dm
+++ b/code/modules/mod/mod_core.dm
@@ -25,30 +25,45 @@
 	mod.update_charge_alert()
 	mod = null
 
+/// Returns the item responsible for charging the suit, like a power cell, an ethereal's stomach, the core itself, etc.
 /obj/item/mod/core/proc/charge_source()
 	return
 
+/// Returns the amount of charge in the core.
 /obj/item/mod/core/proc/charge_amount()
 	return 0
 
+/// Returns the max amount of charge stored in the core.
 /obj/item/mod/core/proc/max_charge_amount()
 	return 1
 
+/// Adds a set amount of charge to the core.
 /obj/item/mod/core/proc/add_charge(amount)
 	return FALSE
 
+/// Subtracts a set amount of charge from the core.
 /obj/item/mod/core/proc/subtract_charge(amount)
 	return FALSE
 
+/// Checks if there's enough charge in the core to use an amount of energy.
 /obj/item/mod/core/proc/check_charge(amount)
 	return FALSE
 
-/**
- * Gets what icon state to display on the HUD for the charge level of this core
- */
+/// Returns what icon state to display on the HUD for the charge level of this core
 /obj/item/mod/core/proc/get_charge_icon_state()
 	return "0"
 
+/// Gets what the UI should use for the charge bar color.
+/obj/item/mod/core/proc/get_chargebar_color()
+	return "bad"
+
+/// Gets what the UI should use for the charge bar text.
+/obj/item/mod/core/proc/get_chargebar_string()
+	var/charge_amount = charge_amount()
+	var/max_charge_amount = max_charge_amount()
+	return "[display_energy(charge_amount)] of [display_energy(max_charge_amount())] \
+		([round((100 * charge_amount) / max_charge_amount, 1)]%)"
+
 /obj/item/mod/core/infinite
 	name = "MOD infinite core"
 	icon_state = "mod-core-infinite"
@@ -76,6 +91,12 @@
 /obj/item/mod/core/infinite/get_charge_icon_state()
 	return "high"
 
+/obj/item/mod/core/infinite/get_chargebar_color()
+	return "teal"
+
+/obj/item/mod/core/infinite/get_chargebar_string()
+	return "Infinite"
+
 /obj/item/mod/core/standard
 	name = "MOD standard core"
 	icon_state = "mod-core-standard"
@@ -163,6 +184,22 @@
 
 	return "empty"
 
+/obj/item/mod/core/standard/get_chargebar_color()
+	if(isnull(charge_source()))
+		return "transparent"
+	switch(round(charge_amount() / max_charge_amount(), 0.01))
+		if(-INFINITY to 0.33)
+			return "bad"
+		if(0.33 to 0.66)
+			return "average"
+		if(0.66 to INFINITY)
+			return "good"
+
+/obj/item/mod/core/standard/get_chargebar_string()
+	if(isnull(charge_source()))
+		return "Power Cell Missing"
+	return ..()
+
 /obj/item/mod/core/standard/proc/install_cell(new_cell)
 	cell = new_cell
 	cell.forceMove(src)
@@ -222,11 +259,11 @@
 	if(!istype(attacking_item, /obj/item/stock_parts/power_store/cell))
 		return FALSE
 	if(!mod.open)
-		mod.balloon_alert(user, "open the cover first!")
+		mod.balloon_alert(user, "cover closed!")
 		playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return FALSE
 	if(cell)
-		mod.balloon_alert(user, "cell already installed!")
+		mod.balloon_alert(user, "already has cell!")
 		playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
 		return FALSE
 	install_cell(attacking_item)
@@ -260,41 +297,62 @@
 	name = "MOD ethereal core"
 	icon_state = "mod-core-ethereal"
 	desc = "A reverse engineered core of a Modular Outerwear Device. Using natural liquid electricity from Ethereals, \
-		preventing the need to use external sources to convert electric charge."
+		preventing the need to use external sources to convert electric charge. As the suits are naturally charged by \
+		liquid electricity, this core makes it much more efficient, running all soft, hard, and wetware with several \
+		times less energy usage."
 	/// A modifier to all charge we use, ethereals don't need to spend as much energy as normal suits.
 	var/charge_modifier = 0.1
 
 /obj/item/mod/core/ethereal/charge_source()
-	var/obj/item/organ/internal/stomach/ethereal/ethereal_stomach = mod.wearer.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/ethereal/ethereal_stomach = mod.wearer.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(!istype(ethereal_stomach))
 		return
 	return ethereal_stomach
 
 /obj/item/mod/core/ethereal/charge_amount()
-	var/obj/item/organ/internal/stomach/ethereal/charge_source = charge_source()
+	var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
 	return charge_source?.cell.charge() || ETHEREAL_CHARGE_NONE
 
 /obj/item/mod/core/ethereal/max_charge_amount()
 	return ETHEREAL_CHARGE_FULL
 
 /obj/item/mod/core/ethereal/add_charge(amount)
-	var/obj/item/organ/internal/stomach/ethereal/charge_source = charge_source()
-	if(!charge_source)
+	var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
+	if(isnull(charge_source))
 		return FALSE
-	charge_source.adjust_charge(amount*charge_modifier)
+	charge_source.adjust_charge(amount * charge_modifier)
 	return TRUE
 
 /obj/item/mod/core/ethereal/subtract_charge(amount)
-	var/obj/item/organ/internal/stomach/ethereal/charge_source = charge_source()
-	if(!charge_source)
+	var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
+	if(isnull(charge_source))
 		return FALSE
-	return -charge_source.adjust_charge(-amount*charge_modifier)
+	return -charge_source.adjust_charge(-amount * charge_modifier)
 
 /obj/item/mod/core/ethereal/check_charge(amount)
-	return charge_amount() >= amount*charge_modifier
+	return charge_amount() >= amount * charge_modifier
 
 /obj/item/mod/core/ethereal/get_charge_icon_state()
-	return charge_source() ? "0" : "missing"
+	return isnull(charge_source()) ? "missing" : "0"
+
+/obj/item/mod/core/ethereal/get_chargebar_color()
+	if(isnull(charge_source()))
+		return "transparent"
+	switch(charge_amount())
+		if(-INFINITY to ETHEREAL_CHARGE_LOWPOWER)
+			return "bad"
+		if(ETHEREAL_CHARGE_LOWPOWER to ETHEREAL_CHARGE_NORMAL)
+			return "average"
+		if(ETHEREAL_CHARGE_NORMAL to ETHEREAL_CHARGE_FULL)
+			return "good"
+		if(ETHEREAL_CHARGE_FULL to INFINITY)
+			return "teal"
+
+/obj/item/mod/core/ethereal/get_chargebar_string()
+	var/obj/item/organ/stomach/ethereal/charge_source = charge_source()
+	if(isnull(charge_source()) || isnull(charge_source.cell))
+		return "Biological Battery Missing"
+	return ..()
 
 #define PLASMA_CORE_ORE_CHARGE (1.5 * STANDARD_CELL_CHARGE)
 #define PLASMA_CORE_SHEET_CHARGE (2 * STANDARD_CELL_CHARGE)
@@ -355,6 +413,13 @@
 
 	return "empty"
 
+/obj/item/mod/core/plasma/get_chargebar_color()
+	switch(round(charge_amount() / max_charge_amount(), 0.01))
+		if(-INFINITY to 0.33)
+			return "bad"
+		if(0.33 to INFINITY)
+			return "purple"
+
 /obj/item/mod/core/plasma/proc/on_mod_interaction(datum/source, mob/living/user, obj/item/thing)
 	SIGNAL_HANDLER
 
diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm
index e196580b99b..b5347ef5c64 100644
--- a/code/modules/mod/mod_link.dm
+++ b/code/modules/mod/mod_link.dm
@@ -217,7 +217,7 @@
 	if(!user.transferItemToLoc(attacked_by, src))
 		return
 	cell = attacked_by
-	balloon_alert(user, "installed [cell.name]")
+	balloon_alert(user, "cell installed")
 
 /obj/item/clothing/neck/link_scryer/update_name(updates)
 	. = ..()
@@ -231,7 +231,7 @@
 /obj/item/clothing/neck/link_scryer/attack_hand_secondary(mob/user, list/modifiers)
 	if(!cell)
 		return SECONDARY_ATTACK_CONTINUE_CHAIN
-	balloon_alert(user, "removed [cell.name]")
+	balloon_alert(user, "cell removed")
 	user.put_in_hands(cell)
 	return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
 
@@ -413,7 +413,7 @@
 	if(!link_user)
 		return
 	if(HAS_TRAIT(link_user, TRAIT_IN_CALL))
-		holder.balloon_alert(user, "user already in call!")
+		holder.balloon_alert(user, "already calling!")
 		return
 	var/mob/living/link_target = called.get_user_callback.Invoke()
 	if(!link_target)
diff --git a/code/modules/mod/mod_paint.dm b/code/modules/mod/mod_paint.dm
index e3e42e55f61..2f658e9df24 100644
--- a/code/modules/mod/mod_paint.dm
+++ b/code/modules/mod/mod_paint.dm
@@ -153,10 +153,10 @@
 		return NONE
 	var/obj/item/mod/control/mod = attacked_atom
 	if(mod.active || mod.activating)
-		balloon_alert(user, "suit is active!")
+		balloon_alert(user, "unit active!")
 		return ITEM_INTERACT_BLOCKING
 	if(!(skin in mod.theme.variants))
-		balloon_alert(user, "incompatible theme!")
+		balloon_alert(user, "wrong theme for skin!")
 		return ITEM_INTERACT_BLOCKING
 	mod.theme.set_skin(mod, skin)
 	balloon_alert(user, "skin applied")
diff --git a/code/modules/mod/mod_ui.dm b/code/modules/mod/mod_ui.dm
index 2a8ccf7b4bf..9a8e77f7e8e 100644
--- a/code/modules/mod/mod_ui.dm
+++ b/code/modules/mod/mod_ui.dm
@@ -9,8 +9,10 @@
 	// Suit information
 	var/suit_status = list(
 		"core_name" = core?.name,
-		"cell_charge_current" = get_charge(),
-		"cell_charge_max" = get_max_charge(),
+		"charge_current" = get_charge(),
+		"charge_max" = get_max_charge(),
+		"chargebar_color" = get_chargebar_color(),
+		"chargebar_string" = get_chargebar_string(),
 		"active" = active,
 		"ai_name" = ai_assistant?.name,
 		"has_pai" = ispAI(ai_assistant),
@@ -56,23 +58,25 @@
 			"configuration_data" = module.get_configuration(user),
 		))
 	data["module_custom_status"] = module_custom_status
-	data["module_info"] = module_info
-	return data
-
-/obj/item/mod/control/ui_static_data(mob/user)
-	var/data = list()
-	data["ui_theme"] = ui_theme
 	data["control"] = name
-	data["complexity_max"] = complexity_max
+	data["module_info"] = module_info
 	var/part_info = list()
 	for(var/obj/item/part as anything in get_parts())
 		part_info += list(list(
 			"slot" = english_list(parse_slot_flags(part.slot_flags)),
 			"name" = part.name,
+			"deployed" = part.loc != src,
+			"ref" = REF(part),
 		))
 	data["parts"] = part_info
 	return data
 
+/obj/item/mod/control/ui_static_data(mob/user)
+	var/data = list()
+	data["ui_theme"] = ui_theme
+	data["complexity_max"] = complexity_max
+	return data
+
 /obj/item/mod/control/ui_state(mob/user)
 	if(user == ai_assistant)
 		return GLOB.contained_state
@@ -89,7 +93,7 @@
 		if("lock")
 			if(!locked || allowed(ui.user))
 				locked = !locked
-				balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]!")
+				balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]")
 			else
 				balloon_alert(ui.user, "access insufficent!")
 				playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
@@ -115,6 +119,14 @@
 			if(!module)
 				return
 			module.pin(ui.user)
+		if("deploy")
+			var/obj/item/mod_part = locate(params["ref"]) in get_parts()
+			if(!mod_part)
+				return
+			if(mod_part.loc == src)
+				deploy(ui.user, mod_part)
+			else
+				retract(ui.user, mod_part)
 		if("eject_pai")
 			if (!ishuman(ui.user))
 				return
diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm
index 2403528236f..c840382da58 100644
--- a/code/modules/mod/modules/_module.dm
+++ b/code/modules/mod/modules/_module.dm
@@ -301,7 +301,7 @@
 /obj/item/mod/module/proc/add_ui_data()
 	return list()
 
-/// Creates a list of configuring options for this module
+/// Creates a list of configuring options for this module, possible configs include number, bool, color, list, button.
 /obj/item/mod/module/proc/get_configuration(mob/user)
 	return list()
 
@@ -496,7 +496,7 @@
 		balloon_alert(user, "no core!")
 		return
 	if(!core_removable)
-		balloon_alert(user, "can't remove core!")
+		balloon_alert(user, "already has core!")
 		return
 	balloon_alert(user, "removing core...")
 	if(!do_after(user, 3 SECONDS, target = src))
diff --git a/code/modules/mod/modules/module_pathfinder.dm b/code/modules/mod/modules/module_pathfinder.dm
index f0a92e3a051..487844bc2a0 100644
--- a/code/modules/mod/modules/module_pathfinder.dm
+++ b/code/modules/mod/modules/module_pathfinder.dm
@@ -117,19 +117,19 @@
 
 /obj/item/implant/mod/proc/recall()
 	if(!module?.mod)
-		balloon_alert(imp_in, "no connected suit!")
+		balloon_alert(imp_in, "no connected unit!")
 		return FALSE
 	if(module.mod.open)
-		balloon_alert(imp_in, "suit is open!")
+		balloon_alert(imp_in, "cover open!")
 		return FALSE
 	if(module.mod.ai_controller)
-		balloon_alert(imp_in, "already in transit!")
+		balloon_alert(imp_in, "already moving!")
 		return FALSE
 	if(ismob(get_atom_on_turf(module.mod)))
 		balloon_alert(imp_in, "already on someone!")
 		return FALSE
 	if(module.z != z || get_dist(imp_in, module.mod) > MOD_AI_RANGE)
-		balloon_alert(imp_in, "too far away!")
+		balloon_alert(imp_in, "too far!")
 		return FALSE
 	var/datum/ai_controller/mod_ai = new /datum/ai_controller/mod(module.mod)
 	module.mod.ai_controller = mod_ai
diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm
index 8b770ea0913..ec550f3cfde 100644
--- a/code/modules/mod/modules/modules_antag.dm
+++ b/code/modules/mod/modules/modules_antag.dm
@@ -52,9 +52,10 @@
 	playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
 	balloon_alert(mod.wearer, "armor boosted, EVA lost")
 	actual_speed_added = max(0, min(mod.slowdown_active, speed_added))
-	var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES)
-	if(istype(head_cover))
-		ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+	var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES)
+	if(head_cover)
+		RegisterSignal(mod, COMSIG_MOD_PART_SEALED, PROC_REF(seal_helmet))
+		seal_helmet(mod, head_cover)
 	var/list/mod_parts = mod.get_parts(all = TRUE)
 	for(var/obj/item/part as anything in mod.get_parts(all = TRUE))
 		part.set_armor(part.get_armor().add_other_armor(armor_mod))
@@ -71,9 +72,10 @@
 	if(!deleting)
 		playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
 		balloon_alert(mod.wearer, "armor retracts, EVA ready")
-	var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES)
-	if(istype(head_cover))
-		REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+	var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES)
+	if(head_cover)
+		UnregisterSignal(mod, COMSIG_MOD_PART_SEALED)
+		REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
 	var/list/mod_parts = mod.get_parts(all = TRUE)
 	for(var/obj/item/part as anything in mod.get_parts(all = TRUE))
 		part.set_armor(part.get_armor().subtract_other_armor(armor_mod))
@@ -91,6 +93,15 @@
 	overlay_state_active = "[initial(overlay_state_active)]-[mod.skin]"
 	return ..()
 
+/obj/item/mod/module/armor_booster/proc/seal_helmet(datum/source, datum/mod_part/part)
+	var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES)
+	if(part != head_cover)
+		return
+	if(part.sealed)
+		ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
+	else
+		REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
+
 ///Energy Shield - Gives you a rechargeable energy shield that nullifies attacks.
 /obj/item/mod/module/energy_shield
 	name = "MOD energy shield module"
@@ -184,10 +195,10 @@
 	required_slots = list(ITEM_SLOT_BACK)
 
 /obj/item/mod/module/anti_magic/on_part_activation()
-	mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT)
+	mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src))
 
 /obj/item/mod/module/anti_magic/on_part_deactivation(deleting = FALSE)
-	mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT)
+	mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src))
 
 /obj/item/mod/module/anti_magic/wizard
 	name = "MOD magic neutralizer module"
@@ -199,10 +210,10 @@
 	required_slots = list()
 
 /obj/item/mod/module/anti_magic/wizard/on_part_activation()
-	mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT)
+	mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src))
 
 /obj/item/mod/module/anti_magic/wizard/on_part_deactivation(deleting = FALSE)
-	mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT)
+	mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src))
 
 ///Insignia - Gives you a skin specific stripe.
 /obj/item/mod/module/insignia
@@ -262,24 +273,20 @@
 	required_slots = list(ITEM_SLOT_FEET)
 
 /obj/item/mod/module/noslip/on_part_activation()
-	ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src))
 
 /obj/item/mod/module/noslip/on_part_deactivation(deleting = FALSE)
-	REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src))
 
 //Bite of 87 Springlock - Equips faster, disguised as DNA lock.
 /obj/item/mod/module/springlock/bite_of_87
+	name = /obj/item/mod/module/dna_lock::name
+	desc = /obj/item/mod/module/dna_lock::desc
+	icon_state = /obj/item/mod/module/dna_lock::icon_state
+	complexity = /obj/item/mod/module/dna_lock::complexity
+	use_energy_cost = /obj/item/mod/module/dna_lock::use_energy_cost
 	step_change = 0.1
 
-/obj/item/mod/module/springlock/bite_of_87/Initialize(mapload)
-	. = ..()
-	var/obj/item/mod/module/dna_lock/the_dna_lock_behind_the_slaughter = /obj/item/mod/module/dna_lock
-	name = initial(the_dna_lock_behind_the_slaughter.name)
-	desc = initial(the_dna_lock_behind_the_slaughter.desc)
-	icon_state = initial(the_dna_lock_behind_the_slaughter.icon_state)
-	complexity = initial(the_dna_lock_behind_the_slaughter.complexity)
-	use_energy_cost = initial(the_dna_lock_behind_the_slaughter.use_energy_cost)
-
 /obj/item/mod/module/springlock/bite_of_87/on_part_activation()
 	..()
 	if(check_holidays(APRIL_FOOLS) || prob(1))
@@ -404,7 +411,7 @@
 
 /obj/item/mod/module/chameleon/used()
 	if(mod.active || mod.activating)
-		balloon_alert(mod.wearer, "suit active!")
+		balloon_alert(mod.wearer, "unit active!")
 		return FALSE
 	return ..()
 
@@ -514,18 +521,18 @@
 	mod.item_flags &= ~EXAMINE_SKIP
 
 /obj/item/mod/module/infiltrator/on_part_activation()
-	mod.wearer.add_traits(traits_to_add, MOD_TRAIT)
+	mod.wearer.add_traits(traits_to_add, REF(src))
 	RegisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH, PROC_REF(on_speech_modification))
-	var/obj/item/organ/internal/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
 	user_tongue.temp_say_mod = "states"
 	var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD)
 	if(istype(head_cover))
 		head_cover.flash_protect = FLASH_PROTECTION_WELDER_HYPER_SENSITIVE
 
 /obj/item/mod/module/infiltrator/on_part_deactivation(deleting = FALSE)
-	mod.wearer.remove_traits(traits_to_add, MOD_TRAIT)
+	mod.wearer.remove_traits(traits_to_add, REF(src))
 	UnregisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH)
-	var/obj/item/organ/internal/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE)
 	user_tongue.temp_say_mod = initial(user_tongue.temp_say_mod)
 	if(deleting)
 		return
@@ -573,7 +580,7 @@
 		balloon_alert(mod.wearer, "can't reach that!")
 		return
 	if(istype(target, /obj/machinery/power/apc)) //Bit too strong for a module so this is blacklisted
-		balloon_alert(mod.wearer, "cant disable apc!")
+		balloon_alert(mod.wearer, "can't disable apc!")
 		return
 
 	var/list/things_to_disrupt = list(target)
diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm
index aea9a415cf4..9c96d9edd82 100644
--- a/code/modules/mod/modules/modules_engineering.dm
+++ b/code/modules/mod/modules/modules_engineering.dm
@@ -62,12 +62,12 @@
 	var/list/active_traits = list(TRAIT_NO_SLIP_WATER, TRAIT_NO_SLIP_ICE, TRAIT_NO_SLIP_SLIDE, TRAIT_NEGATES_GRAVITY)
 
 /obj/item/mod/module/magboot/on_activation()
-	mod.wearer.add_traits(active_traits, MOD_TRAIT)
+	mod.wearer.add_traits(active_traits, REF(src))
 	mod.slowdown += slowdown_active
 	mod.wearer.update_equipment_speed_mods()
 
 /obj/item/mod/module/magboot/on_deactivation(display_message = TRUE, deleting = FALSE)
-	mod.wearer.remove_traits(active_traits, MOD_TRAIT)
+	mod.wearer.remove_traits(active_traits, REF(src))
 	mod.slowdown -= slowdown_active
 	mod.wearer.update_equipment_speed_mods()
 
@@ -104,7 +104,7 @@
 
 /obj/item/mod/module/tether/get_configuration()
 	. = ..()
-	.["cut_tethers"] = add_ui_configuration("Cut Tethers", "pin", TRUE)
+	.["cut_tethers"] = add_ui_configuration("Cut Tethers", "button", "scissors")
 
 /obj/item/mod/module/tether/configure_edit(key, value)
 	if (key != "cut_tethers")
@@ -267,14 +267,14 @@
 
 /obj/item/mod/module/rad_protection/on_part_activation()
 	AddComponent(/datum/component/geiger_sound)
-	ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src))
 	RegisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation))
 	for(var/obj/item/part in mod.get_parts(all = TRUE))
 		ADD_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT)
 
 /obj/item/mod/module/rad_protection/on_part_deactivation(deleting = FALSE)
 	qdel(GetComponent(/datum/component/geiger_sound))
-	REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src))
 	UnregisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION)
 	for(var/obj/item/part in mod.get_parts(all = TRUE))
 		REMOVE_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT)
@@ -309,10 +309,10 @@
 	required_slots = list(ITEM_SLOT_GLOVES)
 
 /obj/item/mod/module/constructor/on_part_activation()
-	ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src))
 
 /obj/item/mod/module/constructor/on_part_deactivation(deleting = FALSE)
-	REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src))
 
 /obj/item/mod/module/constructor/on_use()
 	rcd_scan(src, fade_time = 10 SECONDS)
@@ -332,10 +332,10 @@
 	required_slots = list(ITEM_SLOT_HEAD)
 
 /obj/item/mod/module/headprotector/on_part_activation()
-	ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
 
 /obj/item/mod/module/headprotector/on_part_deactivation(deleting = FALSE)
-	REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
 
 ///Mister - Sprays water over an area.
 /obj/item/mod/module/mister
diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm
index 42e4c56f55e..dc273965e81 100644
--- a/code/modules/mod/modules/modules_general.dm
+++ b/code/modules/mod/modules/modules_general.dm
@@ -148,9 +148,9 @@
 
 	if (!isnull(mod) && !isnull(mod.wearer) && mod.wearer.get_item_by_slot(slot_flags) == src)
 		if (!stabilize)
-			ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+			ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
 		else
-			REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+			REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
 
 /obj/item/mod/module/jetpack/get_configuration()
 	. = ..()
@@ -171,11 +171,11 @@
 /obj/item/mod/module/jetpack/on_activation()
 	mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
 	if (!stabilize)
-		ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+		ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
 
 /obj/item/mod/module/jetpack/on_deactivation(display_message = TRUE, deleting = FALSE)
 	mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed)
-	REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src))
 
 /obj/item/mod/module/jetpack/advanced
 	name = "MOD advanced ion jetpack module"
@@ -672,10 +672,10 @@
 	return ..()
 
 /obj/item/mod/module/plasma_stabilizer/on_equip()
-	ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src))
 
 /obj/item/mod/module/plasma_stabilizer/on_unequip()
-	REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src))
 
 
 //Finally, https://pipe.miroware.io/5b52ba1d94357d5d623f74aa/mspfa/Nuke%20Ops/Panels/0648.gif can be real:
@@ -731,10 +731,10 @@
 	required_slots = list(ITEM_SLOT_GLOVES)
 
 /obj/item/mod/module/signlang_radio/on_part_activation()
-	ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src))
 
 /obj/item/mod/module/signlang_radio/on_part_deactivation(deleting = FALSE)
-	REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src))
 
 ///A module that recharges the suit by an itsy tiny bit whenever the user takes a step. Originally called "magneto module" but the videogame reference sounds cooler.
 /obj/item/mod/module/joint_torsion
@@ -952,7 +952,7 @@
 	if(!istype(tool, /obj/item/fishing_rod))
 		return ..()
 	if(equipped)
-		balloon_alert(user, "remove current rod first!")
+		balloon_alert(user, "already has rod!")
 	if(!user.transferItemToLoc(tool, src))
 		user.balloon_alert(user, "it's stuck!")
 	equipped = tool
diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm
index 83656aaf22f..96ba42ca332 100644
--- a/code/modules/mod/modules/modules_maint.dm
+++ b/code/modules/mod/modules/modules_maint.dm
@@ -297,8 +297,8 @@
 	mod.wearer.AddElement(/datum/element/forced_gravity, NEGATIVE_GRAVITY)
 	RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(check_upstairs))
 	RegisterSignal(mod.wearer, COMSIG_MOB_SAY, PROC_REF(on_talk))
-	ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
-	passtable_on(mod.wearer, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
+	passtable_on(mod.wearer, REF(src))
 	check_upstairs() //todo at some point flip your screen around
 
 /obj/item/mod/module/atrocinator/deactivate(display_message = TRUE, deleting = FALSE)
@@ -314,8 +314,8 @@
 	UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED)
 	UnregisterSignal(mod.wearer, COMSIG_MOB_SAY)
 	step_count = 0
-	REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
-	passtable_off(mod.wearer, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
+	passtable_off(mod.wearer, REF(src))
 	var/turf/open/openspace/current_turf = get_turf(mod.wearer)
 	if(istype(current_turf))
 		current_turf.zFall(mod.wearer, falling_from_move = TRUE)
diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm
index 154717cbcc1..7c0e1c85b05 100644
--- a/code/modules/mod/modules/modules_medical.dm
+++ b/code/modules/mod/modules/modules_medical.dm
@@ -77,13 +77,13 @@
 
 /obj/item/mod/module/quick_carry/on_part_activation()
 	. = ..()
-	ADD_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT)
-	ADD_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src))
+	ADD_TRAIT(mod.wearer, quick_carry_trait, REF(src))
 
 /obj/item/mod/module/quick_carry/on_part_deactivation(deleting = FALSE)
 	. = ..()
-	REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT)
-	REMOVE_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src))
+	REMOVE_TRAIT(mod.wearer, quick_carry_trait, REF(src))
 
 /obj/item/mod/module/quick_carry/advanced
 	name = "MOD advanced quick carry module"
diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm
index c4e8962c447..a6ade06a909 100644
--- a/code/modules/mod/modules/modules_ninja.dm
+++ b/code/modules/mod/modules/modules_ninja.dm
@@ -73,11 +73,11 @@
 
 /obj/item/mod/module/stealth/ninja/on_activation()
 	. = ..()
-	ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
 
 /obj/item/mod/module/stealth/ninja/on_deactivation(display_message = TRUE, deleting = FALSE)
 	. = ..()
-	REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src))
 
 ///Camera Vision - Prevents flashes, blocks tracking.
 /obj/item/mod/module/welding/camera_vision
@@ -173,16 +173,16 @@
 	var/accepted_type = /obj/item/energy_katana
 
 /obj/item/mod/module/weapon_recall/on_part_activation()
-	mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT)
+	mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src))
 
 /obj/item/mod/module/weapon_recall/on_part_deactivation(deleting = FALSE)
-	mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT)
+	mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src))
 
 /obj/item/mod/module/weapon_recall/on_use()
 	if(!linked_weapon)
 		var/obj/item/weapon_to_link = mod.wearer.is_holding_item_of_type(accepted_type)
 		if(!weapon_to_link)
-			balloon_alert(mod.wearer, "can't locate weapon!")
+			balloon_alert(mod.wearer, "no linked weapon!")
 			return
 		set_weapon(weapon_to_link)
 		balloon_alert(mod.wearer, "[linked_weapon.name] linked")
@@ -191,7 +191,7 @@
 		balloon_alert(mod.wearer, "already on self!")
 		return
 	var/distance = get_dist(mod.wearer, linked_weapon)
-	var/in_view = (linked_weapon in view(mod.wearer))
+	var/in_view = (linked_weapon in view(mod.wearer)) && !(linked_weapon in get_turf(mod.wearer))
 	if(!in_view && !drain_power(use_energy_cost * distance))
 		balloon_alert(mod.wearer, "not enough charge!")
 		return
diff --git a/code/modules/mod/modules/modules_science.dm b/code/modules/mod/modules/modules_science.dm
index ea9f1d01e43..8cb15d35370 100644
--- a/code/modules/mod/modules/modules_science.dm
+++ b/code/modules/mod/modules/modules_science.dm
@@ -14,10 +14,10 @@
 	required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK)
 
 /obj/item/mod/module/reagent_scanner/on_activation()
-	ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src))
 
 /obj/item/mod/module/reagent_scanner/on_deactivation(display_message = TRUE, deleting = FALSE)
-	REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src))
 
 /obj/item/mod/module/reagent_scanner/advanced
 	name = "MOD advanced reagent scanner module"
@@ -31,12 +31,12 @@
 
 /obj/item/mod/module/reagent_scanner/advanced/on_activation()
 	. = ..()
-	ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src))
 	RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, PROC_REF(sense_explosion))
 
 /obj/item/mod/module/reagent_scanner/advanced/on_deactivation(display_message = TRUE, deleting = FALSE)
 	. = ..()
-	REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src))
 	UnregisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION)
 
 /obj/item/mod/module/reagent_scanner/advanced/proc/sense_explosion(datum/source, turf/epicenter,
diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm
index c25dd752755..09032318304 100644
--- a/code/modules/mod/modules/modules_security.dm
+++ b/code/modules/mod/modules/modules_security.dm
@@ -123,7 +123,7 @@
 			balloon_alert(mod.wearer, "nothing to holster!")
 			return
 		if(!istype(holding) || holding.w_class > WEIGHT_CLASS_BULKY)
-			balloon_alert(mod.wearer, "it doesn't fit!")
+			balloon_alert(mod.wearer, "doesn't fit!")
 			return
 		if(mod.wearer.transferItemToLoc(holding, src, force = FALSE, silent = TRUE))
 			holstered = holding
@@ -522,11 +522,11 @@
 			idle_power_cost = 0
 		if(STORMTROOPER_MODE)
 			idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.4
-			mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT)
+			mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src))
 			RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(stormtrooper_fired_gun))
 		if(SHARPSHOOTER_MODE)
 			idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.6
-			mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT)
+			mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src))
 			RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(sharpshooter_fired_gun))
 			RegisterSignal(mod.wearer, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE, PROC_REF(apply_ricochet))
 			mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant)
@@ -535,10 +535,10 @@
 	switch(selected_mode)
 		if(STORMTROOPER_MODE)
 			UnregisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN)
-			mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT)
+			mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src))
 		if(SHARPSHOOTER_MODE)
 			UnregisterSignal(mod.wearer, list(COMSIG_MOB_FIRED_GUN, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE))
-			mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT)
+			mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src))
 			mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant)
 
 /obj/item/mod/module/shooting_assistant/drain_power(amount)
@@ -582,10 +582,10 @@
 	required_slots = list(ITEM_SLOT_OCLOTHING)
 
 /obj/item/mod/module/shove_blocker/on_part_activation()
-	mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT)
+	mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src))
 
 /obj/item/mod/module/shove_blocker/on_part_deactivation(deleting = FALSE)
-	mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT)
+	mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src))
 
 /obj/item/mod/module/shove_blocker/locked
 	name = "superglued MOD bulwark module"
@@ -602,8 +602,8 @@
 
 /obj/item/mod/module/quick_cuff/on_part_activation()
 	. = ..()
-	ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT)
+	ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src))
 
 /obj/item/mod/module/quick_cuff/on_part_deactivation(deleting = FALSE)
 	. = ..()
-	REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src))
diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm
index 79d2d3779e0..70c11f069f0 100644
--- a/code/modules/mod/modules/modules_service.dm
+++ b/code/modules/mod/modules/modules_service.dm
@@ -46,7 +46,7 @@
 	if(!isitem(target))
 		return
 	if(!isturf(target.loc))
-		balloon_alert(mod.wearer, "must be on the floor!")
+		balloon_alert(mod.wearer, "not in storage!")
 		return
 	var/obj/item/microwave_target = target
 	var/datum/effect_system/spark_spread/spark_effect = new()
@@ -80,7 +80,7 @@
 	var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET)
 	if(shoes)
 		shoes.AddComponent(/datum/component/squeak, list('sound/effects/footstep/clownstep1.ogg'=1,'sound/effects/footstep/clownstep2.ogg'=1), 50, falloff_exponent = 20) //die off quick please
-	mod.wearer.AddElementTrait(TRAIT_WADDLING, MOD_TRAIT, /datum/element/waddling)
+	mod.wearer.AddElementTrait(TRAIT_WADDLING, REF(src), /datum/element/waddling)
 	if(is_clown_job(mod.wearer.mind?.assigned_role))
 		mod.wearer.add_mood_event("clownshoes", /datum/mood_event/clownshoes)
 
@@ -88,6 +88,6 @@
 	var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET)
 	if(shoes && !deleting)
 		qdel(shoes.GetComponent(/datum/component/squeak))
-	REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, MOD_TRAIT)
+	REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, REF(src))
 	if(is_clown_job(mod.wearer.mind?.assigned_role))
 		mod.wearer.clear_mood_event("clownshoes")
diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm
index 8be66e0b3e3..bc34cf8781e 100644
--- a/code/modules/mod/modules/modules_supply.dm
+++ b/code/modules/mod/modules/modules_supply.dm
@@ -61,7 +61,7 @@
 			return
 		stored_crates += picked_crate
 		picked_crate.forceMove(src)
-		balloon_alert(mod.wearer, "picked up [picked_crate]")
+		balloon_alert(mod.wearer, "picked up crate")
 		drain_power(use_energy_cost)
 	else if(length(stored_crates))
 		var/turf/target_turf = get_turf(target)
@@ -407,11 +407,11 @@
 		))
 
 /obj/item/mod/module/ash_accretion/on_part_activation()
-	mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT)
+	mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src))
 	RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
 
 /obj/item/mod/module/ash_accretion/on_part_deactivation(deleting = FALSE)
-	mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT)
+	mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src))
 	UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED)
 	if(!traveled_tiles)
 		return
@@ -496,10 +496,10 @@
 	mod.wearer.base_pixel_y -= 4
 	animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y, flags = ANIMATION_PARALLEL)
 	mod.wearer.SpinAnimation(1.5)
-	mod.wearer.add_traits(user_traits, MOD_TRAIT)
+	mod.wearer.add_traits(user_traits, REF(src))
 	mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6)
 	mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE)
-	mod.wearer.add_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown)
+	mod.wearer.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
 	mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/sphere)
 	RegisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE, PROC_REF(on_statchange))
 
@@ -509,8 +509,8 @@
 	mod.wearer.base_pixel_y += 4
 	animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y)
 	addtimer(CALLBACK(mod.wearer, TYPE_PROC_REF(/datum, remove_filter), list("mod_ball", "mod_blur", "mod_outline")), animate_time)
-	mod.wearer.remove_traits(user_traits, MOD_TRAIT)
-	mod.wearer.remove_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown)
+	mod.wearer.remove_traits(user_traits, REF(src))
+	mod.wearer.remove_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
 	mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE)
 	mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6)
 	mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/sphere)
diff --git a/code/modules/mod/modules/modules_timeline.dm b/code/modules/mod/modules/modules_timeline.dm
index c14825bf3c7..bfb22da0c20 100644
--- a/code/modules/mod/modules/modules_timeline.dm
+++ b/code/modules/mod/modules/modules_timeline.dm
@@ -133,13 +133,13 @@
 ///Signal fired when wearer attempts to trigger modules, if attempting while time is stopped
 /obj/item/mod/module/timestopper/proc/on_module_triggered(datum/source)
 	SIGNAL_HANDLER
-	balloon_alert(mod.wearer, "not while channelling timestop!")
+	balloon_alert(mod.wearer, "not while stopping time!")
 	return MOD_ABORT_USE
 
 ///Signal fired when wearer attempts to activate/deactivate suits, if attempting while time is stopped
 /obj/item/mod/module/timestopper/proc/on_activate_block(datum/source, user)
 	SIGNAL_HANDLER
-	balloon_alert(user, "not while channelling timestop!")
+	balloon_alert(user, "not while stopping time!")
 	return MOD_CANCEL_ACTIVATE
 
 ///Timeline Jumper - Infinite phasing. needs some special effects
diff --git a/code/modules/mod/modules/modules_visor.dm b/code/modules/mod/modules/modules_visor.dm
index d4b6154f886..64ddc69d2ed 100644
--- a/code/modules/mod/modules/modules_visor.dm
+++ b/code/modules/mod/modules/modules_visor.dm
@@ -14,12 +14,12 @@
 
 /obj/item/mod/module/visor/on_activation()
 	if(length(visor_traits))
-		mod.wearer.add_traits(visor_traits, MOD_TRAIT)
+		mod.wearer.add_traits(visor_traits, REF(src))
 	mod.wearer.update_sight()
 
 /obj/item/mod/module/visor/on_deactivation(display_message = TRUE, deleting = FALSE)
 	if(length(visor_traits))
-		mod.wearer.remove_traits(visor_traits, MOD_TRAIT)
+		mod.wearer.remove_traits(visor_traits, REF(src))
 	mod.wearer.update_sight()
 
 //Medical Visor - Gives you a medical HUD.
diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm
index 78b85910d9a..4c4649afb53 100644
--- a/code/modules/paperwork/paperplane.dm
+++ b/code/modules/paperwork/paperplane.dm
@@ -60,7 +60,7 @@
 	return ..()
 
 /obj/item/paperplane/suicide_act(mob/living/user)
-	var/obj/item/organ/internal/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
 	user.Stun(20 SECONDS)
 	user.visible_message(span_suicide("[user] jams [src] in [user.p_their()] nose. It looks like [user.p_theyre()] trying to commit suicide!"))
 	user.adjust_eye_blur(12 SECONDS)
@@ -109,7 +109,7 @@
 	if(. || !ishuman(hit_atom)) //if the plane is caught or it hits a nonhuman
 		return
 	var/mob/living/carbon/human/hit_human = hit_atom
-	var/obj/item/organ/internal/eyes/eyes = hit_human.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = hit_human.get_organ_slot(ORGAN_SLOT_EYES)
 	if(!prob(hit_probability))
 		return
 	if(hit_human.is_eyes_covered())
diff --git a/code/modules/power/apc/apc_attack.dm b/code/modules/power/apc/apc_attack.dm
index 0929066a7d3..2c5ec520a9f 100644
--- a/code/modules/power/apc/apc_attack.dm
+++ b/code/modules/power/apc/apc_attack.dm
@@ -13,7 +13,7 @@
 	if(!ishuman(user))
 		return
 	var/mob/living/carbon/human/apc_interactor = user
-	var/obj/item/organ/internal/stomach/ethereal/maybe_ethereal_stomach = apc_interactor.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/ethereal/maybe_ethereal_stomach = apc_interactor.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(!istype(maybe_ethereal_stomach))
 		togglelock(user)
 	else
@@ -27,14 +27,14 @@
 	if(!ishuman(user))
 		return
 	var/mob/living/carbon/human/ethereal = user
-	var/obj/item/organ/internal/stomach/maybe_stomach = ethereal.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/maybe_stomach = ethereal.get_organ_slot(ORGAN_SLOT_STOMACH)
 	// how long we wanna wait before we show the balloon alert. don't want it to be very long in case the ethereal wants to opt-out of doing that action, just long enough to where it doesn't collide with previously queued balloon alerts.
 	var/alert_timer_duration = 0.75 SECONDS
 
-	if(!istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal))
+	if(!istype(maybe_stomach, /obj/item/organ/stomach/ethereal))
 		return
 	var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - ETHEREAL_APC_POWER_GAIN
-	var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach
+	var/obj/item/organ/stomach/ethereal/stomach = maybe_stomach
 	var/obj/item/stock_parts/power_store/stomach_cell = stomach.cell
 	if(!((stomach?.drain_time < world.time) && LAZYACCESS(modifiers, RIGHT_CLICK)))
 		return
diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm
index fd4bf689c90..6a704ad6b2e 100644
--- a/code/modules/power/lighting/light.dm
+++ b/code/modules/power/lighting/light.dm
@@ -598,9 +598,9 @@
 	var/protected = FALSE
 
 	if(istype(user))
-		var/obj/item/organ/internal/stomach/maybe_stomach = user.get_organ_slot(ORGAN_SLOT_STOMACH)
-		if(istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal))
-			var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach
+		var/obj/item/organ/stomach/maybe_stomach = user.get_organ_slot(ORGAN_SLOT_STOMACH)
+		if(istype(maybe_stomach, /obj/item/organ/stomach/ethereal))
+			var/obj/item/organ/stomach/ethereal/stomach = maybe_stomach
 			if(stomach.drain_time > world.time)
 				return
 			user.visible_message(span_notice("[user] clamps their hand around the [fitting], electricity jumping around inside!")) //NOVA EDIT CHANGE - Ethereal Rework 2024 - ORIGINALl: to_chat(user, span_notice("You start channeling some power through the [fitting] into your body."))
diff --git a/code/modules/power/power_store.dm b/code/modules/power/power_store.dm
index 5890260be0f..0ca9ba226f4 100644
--- a/code/modules/power/power_store.dm
+++ b/code/modules/power/power_store.dm
@@ -290,12 +290,12 @@
 /obj/item/stock_parts/power_store/attack_self(mob/user)
 	if(ishuman(user))
 		var/mob/living/carbon/human/H = user
-		var/obj/item/organ/internal/stomach/maybe_stomach = H.get_organ_slot(ORGAN_SLOT_STOMACH)
+		var/obj/item/organ/stomach/maybe_stomach = H.get_organ_slot(ORGAN_SLOT_STOMACH)
 
-		if(istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal))
+		if(istype(maybe_stomach, /obj/item/organ/stomach/ethereal))
 
 			var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - CELL_POWER_GAIN
-			var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach
+			var/obj/item/organ/stomach/ethereal/stomach = maybe_stomach
 			var/obj/item/stock_parts/power_store/stomach_cell = stomach.cell
 			if((stomach.drain_time > world.time) || !stomach)
 				return
diff --git a/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm b/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm
index c07ec7bbe89..3cb6c8fd82c 100644
--- a/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm
+++ b/code/modules/power/supermatter/supermatter_delamination/cascade_delam_objects.dm
@@ -95,7 +95,7 @@
 	var/mob/living/carbon/jedi = user
 	to_chat(jedi, span_userdanger("That was a really dense idea."))
 	jedi.ghostize()
-	var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.organs
+	var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.organs
 	if(rip_u)
 		rip_u.Remove(jedi)
 		qdel(rip_u)
diff --git a/code/modules/power/supermatter/supermatter_hit_procs.dm b/code/modules/power/supermatter/supermatter_hit_procs.dm
index 11b42d71446..167ee7988b1 100644
--- a/code/modules/power/supermatter/supermatter_hit_procs.dm
+++ b/code/modules/power/supermatter/supermatter_hit_procs.dm
@@ -59,7 +59,7 @@
 	to_chat(jedi, span_userdanger("That was a really dense idea."))
 	jedi.investigate_log("had [jedi.p_their()] brain dusted by touching [src] with telekinesis.", INVESTIGATE_DEATHS)
 	jedi.ghostize()
-	var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.organs
+	var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.organs
 	if(rip_u)
 		rip_u.Remove(jedi)
 		qdel(rip_u)
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index eb5ad47a88c..15e262edc54 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -163,7 +163,7 @@
 		return
 	var/mob/living/carbon/jedi = user
 	to_chat(jedi, span_userdanger("That was a shockingly dumb idea."))
-	var/obj/item/organ/internal/brain/rip_u = locate(/obj/item/organ/internal/brain) in jedi.organs
+	var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in jedi.organs
 	jedi.ghostize(jedi)
 	if(rip_u)
 		qdel(rip_u)
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 4024420b698..de641df6dbf 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -615,7 +615,7 @@
 #define BRAINS_BLOWN_THROW_SPEED 1
 
 /obj/item/gun/ballistic/suicide_act(mob/living/user)
-	var/obj/item/organ/internal/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/B = user.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if (B && chambered && chambered.loaded_projectile && can_trigger_gun(user) && chambered.loaded_projectile.damage > 0)
 		user.visible_message(span_suicide("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!"))
 		sleep(2.5 SECONDS)
diff --git a/code/modules/reagents/chemistry/holder/holder.dm b/code/modules/reagents/chemistry/holder/holder.dm
index 1112ad052d8..4315ea63bd9 100644
--- a/code/modules/reagents/chemistry/holder/holder.dm
+++ b/code/modules/reagents/chemistry/holder/holder.dm
@@ -430,7 +430,7 @@
 	else
 		if(!ignore_stomach && (methods & INGEST) && iscarbon(target))
 			var/mob/living/carbon/eater = target
-			var/obj/item/organ/internal/stomach/belly = eater.get_organ_slot(ORGAN_SLOT_STOMACH)
+			var/obj/item/organ/stomach/belly = eater.get_organ_slot(ORGAN_SLOT_STOMACH)
 			if(!belly)
 				var/expel_amount = round(amount, CHEMICAL_QUANTISATION_LEVEL)
 				if(expel_amount > 0 )
@@ -779,7 +779,7 @@
  *
  * Arguments
  * - Atom/target: What mob/turf/object is being exposed to reagents? This is your reaction target.
- * - Methods: What reaction type is the reagent itself going to call on the reaction target? Types are TOUCH, INGEST, VAPOR, PATCH, and INJECT.
+ * - Methods: What reaction type is the reagent itself going to call on the reaction target? Types are TOUCH, INGEST, VAPOR, PATCH, INJECT and INHALE.
  * - Volume_modifier: What is the reagent volume multiplied by when exposed? Note that this is called on the volume of EVERY reagent in the base body, so factor in your Maximum_Volume if necessary!
  * - Show_message: Whether to display anything to mobs when they are exposed.
  * - list/datum/reagent/r_to_expose: list of reagents to expose. if null will expose the reagents present in this holder instead
diff --git a/code/modules/reagents/chemistry/holder/mob_life.dm b/code/modules/reagents/chemistry/holder/mob_life.dm
index 96869bc63eb..0bd0c38cc6a 100644
--- a/code/modules/reagents/chemistry/holder/mob_life.dm
+++ b/code/modules/reagents/chemistry/holder/mob_life.dm
@@ -19,8 +19,8 @@
 		expose_temperature(owner.bodytemperature, 0.25)
 
 	var/need_mob_update = FALSE
-	var/obj/item/organ/internal/stomach/belly = owner.get_organ_slot(ORGAN_SLOT_STOMACH)
-	var/obj/item/organ/internal/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/stomach/belly = owner.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/liver/liver = owner.get_organ_slot(ORGAN_SLOT_LIVER)
 	var/liver_tolerance = 0
 	var/liver_damage = 0
 	var/provide_pain_message
diff --git a/code/modules/reagents/chemistry/holder/properties.dm b/code/modules/reagents/chemistry/holder/properties.dm
index b949866a6d4..a68404c9fc7 100644
--- a/code/modules/reagents/chemistry/holder/properties.dm
+++ b/code/modules/reagents/chemistry/holder/properties.dm
@@ -161,35 +161,4 @@
  * * minimum_percent - the lower the minimum percent, the more sensitive the message is.
  */
 /datum/reagents/proc/generate_taste_message(mob/living/taster, minimum_percent)
-	var/list/out = list()
-	var/list/tastes = list() //descriptor = strength
-	if(minimum_percent <= 100)
-		for(var/datum/reagent/reagent as anything in reagent_list)
-			if(!reagent.taste_mult)
-				continue
-
-			var/list/taste_data = reagent.get_taste_description(taster)
-			for(var/taste in taste_data)
-				if(taste in tastes)
-					tastes[taste] += taste_data[taste] * reagent.volume * reagent.taste_mult
-				else
-					tastes[taste] = taste_data[taste] * reagent.volume * reagent.taste_mult
-		//deal with percentages
-		// TODO it would be great if we could sort these from strong to weak
-		var/total_taste = counterlist_sum(tastes)
-		if(total_taste > 0)
-			for(var/taste_desc in tastes)
-				var/percent = tastes[taste_desc]/total_taste * 100
-				if(percent < minimum_percent)
-					continue
-				var/intensity_desc = "a hint of"
-				if(percent > minimum_percent * 2 || percent == 100)
-					intensity_desc = ""
-				else if(percent > minimum_percent * 3)
-					intensity_desc = "the strong flavor of"
-				if(intensity_desc != "")
-					out += "[intensity_desc] [taste_desc]"
-				else
-					out += "[taste_desc]"
-
-	return english_list(out, "something indescribable")
+	return generate_reagents_taste_message(reagent_list, taster, minimum_percent)
diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
index 30e766fd369..e1a83156421 100644
--- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
@@ -158,7 +158,7 @@
 		return UPDATE_MOB_HEALTH
 
 /datum/reagent/medicine/c2/probital/on_transfer(atom/A, methods=INGEST, trans_volume)
-	if(!(methods & INGEST) || (!iscarbon(A) && !istype(A, /obj/item/organ/internal/stomach)) )
+	if(!(methods & INGEST) || (!iscarbon(A) && !istype(A, /obj/item/organ/stomach)) )
 		return
 
 	A.reagents.remove_reagent(/datum/reagent/medicine/c2/probital, trans_volume * 0.05)
@@ -426,7 +426,7 @@
 	var/mob/living/carbon/C = A
 	if(trans_volume >= 0.4) //prevents cheesing with ultralow doses.
 		C.adjustToxLoss((-3 * min(2, trans_volume) * REM) * normalise_creation_purity(), required_biotype = affected_biotype) //This is to promote iv pole use for that chemotherapy feel.
-	var/obj/item/organ/internal/liver/L = C.organs_slot[ORGAN_SLOT_LIVER]
+	var/obj/item/organ/liver/L = C.organs_slot[ORGAN_SLOT_LIVER]
 	if(!L || L.organ_flags & ORGAN_FAILING)
 		return
 	conversion_amount = (trans_volume * (min(100 -C.get_organ_loss(ORGAN_SLOT_LIVER), 80) / 100)*normalise_creation_purity()) //the more damaged the liver the worse we metabolize.
diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
index 138df76c5b6..5483a728b13 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
@@ -75,7 +75,7 @@
 		// Volume, power, and server alcohol rate effect how quickly one gets drunk
 		drinker.adjust_drunk_effect(booze_power * ALCOHOL_RATE * REM * seconds_per_tick) // NOVA EDIT CHANGE - ALCOHOL_PROCESSING - Original: (sqrt(volume) * booze_power * ALCOHOL_RATE * REM * seconds_per_tick)
 		if(boozepwr > 0)
-			var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+			var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
 			var/heavy_drinker_multiplier = (HAS_TRAIT(drinker, TRAIT_HEAVY_DRINKER) ? 0.5 : 1)
 			if (istype(liver))
 				if(liver.apply_organ_damage(((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * liver.alcohol_tolerance * heavy_drinker_multiplier * seconds_per_tick, 0))/300))) // NOVA EDIT CHANGE - ALCOHOL_PROCESSING - Original: if((((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * liver.alcohol_tolerance * heavy_drinker_multiplier * seconds_per_tick, 0))/150)))
@@ -255,7 +255,7 @@
 		to_chat(drinker, span_notice("[pick("You have a really bad headache.", "Your eyes hurt.", "You find it hard to stay still.", "You feel your heart practically beating out of your chest.")]"))
 
 	if(SPT_PROB(2.5, seconds_per_tick) && iscarbon(drinker))
-		var/obj/item/organ/internal/eyes/eyes = drinker.get_organ_slot(ORGAN_SLOT_EYES)
+		var/obj/item/organ/eyes/eyes = drinker.get_organ_slot(ORGAN_SLOT_EYES)
 		if(eyes && IS_ORGANIC_ORGAN(eyes)) // doesn't affect robotic eyes
 			if(drinker.is_blind())
 				eyes.Remove(drinker)
@@ -662,7 +662,7 @@
 
 /datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(HAS_TRAIT(liver, TRAIT_ENGINEER_METABOLISM))
 		ADD_TRAIT(drinker, TRAIT_HALT_RADIATION_EFFECTS, "[type]")
 		if (HAS_TRAIT(drinker, TRAIT_IRRADIATED))
@@ -780,7 +780,7 @@
 	if(HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
 		metabolization_rate = 0.8
 	// if you don't have a liver, or your liver isn't an officer's liver
-	var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(!liver || !HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
 		beepsky_hallucination = new()
 		drinker.gain_trauma(beepsky_hallucination, TRAUMA_RESILIENCE_ABSOLUTE)
@@ -788,7 +788,7 @@
 /datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
 	. = ..()
 	drinker.set_jitter_if_lower(4 SECONDS)
-	var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
 	// if you have a liver and that liver is an officer's liver
 	if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
 		if(drinker.adjustStaminaLoss(-10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype))
@@ -805,7 +805,7 @@
 
 /datum/reagent/consumable/ethanol/beepsky_smash/overdose_start(mob/living/carbon/drinker)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
 	// if you don't have a liver, or your liver isn't an officer's liver
 	if(!liver || !HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
 		drinker.gain_trauma(/datum/brain_trauma/mild/phobia/security, TRAUMA_RESILIENCE_BASIC)
@@ -1296,7 +1296,7 @@
 
 /datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
 	if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || is_simian(drinker))
 		if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
 			return UPDATE_MOB_HEALTH
@@ -1606,7 +1606,7 @@
 /datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
 	. = ..()
 	//Securidrink in line with the Screwdriver for engineers or Nothing for mimes
-	var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
 		if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
 			return UPDATE_MOB_HEALTH
@@ -1623,7 +1623,7 @@
 /datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
 	. = ..()
 	//Securidrink in line with the Screwdriver for engineers or Nothing for mimes but STRONG..
-	var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
 		var/need_mob_update
 		need_mob_update = drinker.heal_bodypart_damage(2 * REM * seconds_per_tick, 2 * REM *  seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
@@ -2653,7 +2653,7 @@
 		return
 
 	var/mob/living/carbon/exposed_carbon = exposed_mob
-	var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(istype(stomach))
 		stomach.adjust_charge(reac_volume * 0.02 * ETHEREAL_CHARGE_NORMAL)
 
@@ -2673,7 +2673,7 @@
 		return
 
 	var/mob/living/carbon/exposed_carbon = exposed_mob
-	var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(istype(stomach))
 		stomach.adjust_charge(reac_volume * 0.05 * ETHEREAL_CHARGE_NORMAL)
 
@@ -2700,7 +2700,7 @@
 		return
 
 	var/mob/living/carbon/exposed_carbon = exposed_mob
-	var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(istype(stomach))
 		stomach.adjust_charge(reac_volume * 0.1 * ETHEREAL_CHARGE_NORMAL)
 
diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
index 81af315a119..05a2c984287 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
@@ -113,7 +113,7 @@
 
 /datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || is_simian(affected_mob))
 		if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
 			return UPDATE_MOB_HEALTH
@@ -181,7 +181,7 @@
 
 /datum/reagent/consumable/pickle/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	if((liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM)))
 		if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
 			return UPDATE_MOB_HEALTH
@@ -519,7 +519,7 @@
 
 /datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/carbon/affected_atom)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = affected_atom.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = affected_atom.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM))
 		affected_atom.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high)
 		metabolization_rate *= 0.8
@@ -781,7 +781,7 @@
 	need_mob_update += affected_mob.adjustToxLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
 	need_mob_update += affected_mob.adjustOxyLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
 	if(affected_mob.nutrition && (affected_mob.nutrition - 2 > 0))
-		var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+		var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 		if(!(HAS_TRAIT(liver, TRAIT_MEDICAL_METABOLISM)))
 			// Drains the nutrition of the holder. Not medical doctors though, since it's the Doctor's Delight!
 			affected_mob.adjust_nutrition(-2 * REM * seconds_per_tick)
@@ -1295,6 +1295,6 @@
 		return
 
 	var/mob/living/carbon/exposed_carbon = exposed_mob
-	var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(istype(stomach))
 		stomach.adjust_charge(reac_volume * 0.02 * ETHEREAL_CHARGE_NORMAL)
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index b96020f496c..6f5389e9021 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -333,7 +333,7 @@
 
 /datum/reagent/drug/pumpup/on_mob_metabolize(mob/living/carbon/affected_mob)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM))
 		affected_mob.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high)
 		metabolization_rate *= 0.8
@@ -380,7 +380,7 @@
 		return
 
 	var/mob/living/carbon/carbon_mob = affected_mob
-	var/obj/item/organ/internal/liver/liver = carbon_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = carbon_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM))
 		carbon_mob.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high)
 		metabolization_rate *= 0.8
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index f268d53490d..b3436b99e9f 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -70,6 +70,9 @@
 	color = "#664330" // rgb: 102, 67, 48
 	chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
 
+	/// Whether this reagent should get the tastes of food it's in applied onto it
+	var/carry_food_tastes = TRUE
+
 	var/brute_heal = 1
 	var/burn_heal = 0
 
@@ -121,11 +124,14 @@
 	data = taste_amounts
 
 /datum/reagent/consumable/nutriment/get_taste_description(mob/living/taster)
-	return data
+	if(length(data))
+		return data
+	return ..()
 
 /datum/reagent/consumable/nutriment/vitamin
 	name = "Vitamin"
 	description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form."
+	taste_description = "bitterness"
 	chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
 
 	brute_heal = 1
@@ -140,6 +146,7 @@
 /datum/reagent/consumable/nutriment/protein
 	name = "Protein"
 	description = "A natural polyamide made up of amino acids. An essential constituent of mosts known forms of life."
+	taste_description = "chalk"
 	brute_heal = 0.8 //Rewards the player for eating a balanced diet.
 	nutriment_factor = 9 //45% as calorie dense as oil.
 	chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -212,6 +219,7 @@
 	color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil)
 	taste_mult = 0.8
 	taste_description = "oil"
+	carry_food_tastes = FALSE
 	nutriment_factor = 7 //Not very healthy on its own
 	metabolization_rate = 10 * REAGENTS_METABOLISM
 	penetrates_skin = NONE
@@ -239,9 +247,15 @@
 	taste_description = "rich earthy pungent"
 	chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
 
+/datum/reagent/consumable/nutriment/organ_tissue/stomach_lining
+	name = "Stomach Lining"
+	description = "Natural tissue that keeps your stomach safe."
+	carry_food_tastes = FALSE // Don't want stomachs to leech the flavours of what they eat
+
 /datum/reagent/consumable/nutriment/cloth_fibers
 	name = "Cloth Fibers"
 	description = "It's not actually a form of nutriment but it does keep Mothpeople going for a short while..."
+	taste_description = "cloth"
 	nutriment_factor = 30
 	chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
 	brute_heal = 0
@@ -266,6 +280,7 @@
 /datum/reagent/consumable/nutriment/mineral
 	name = "Mineral Slurry"
 	description = "Minerals pounded into a paste, nutritious only if you too are made of rocks."
+	taste_description = "minerals"
 	color = COLOR_WEBSAFE_DARK_GRAY
 	chemical_flags = NONE
 	brute_heal = 0
@@ -426,7 +441,7 @@
 		return
 
 	var/mob/living/carbon/victim = exposed_mob
-	if(methods & (TOUCH|VAPOR))
+	if(methods & (TOUCH|VAPOR|INHALE))
 		//check for protection
 		//actually handle the pepperspray effects
 		if (!victim.is_pepper_proof()) // you need both eye and mouth protection
@@ -547,7 +562,7 @@
 			affected_mob.Paralyze(10)
 			affected_mob.set_jitter_if_lower(20 SECONDS)
 	else
-		var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+		var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 		if(liver && HAS_TRAIT(liver, TRAIT_CULINARY_METABOLISM))
 			if(SPT_PROB(10, seconds_per_tick)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate
 				if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
@@ -566,7 +581,7 @@
 		return
 
 	var/mob/living/carbon/victim = exposed_mob
-	if(methods & (TOUCH | VAPOR))
+	if(methods & (TOUCH | VAPOR | INHALE))
 		var/tear_proof = victim.is_eyes_covered()
 		if (!tear_proof)
 			to_chat(exposed_mob, span_warning("Your eyes sting!"))
@@ -582,7 +597,7 @@
 
 /datum/reagent/consumable/sprinkles/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
 		if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
 			return UPDATE_MOB_HEALTH
@@ -952,11 +967,11 @@
 
 /datum/reagent/consumable/liquidelectricity/enriched/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume) //can't be on life because of the way blood works.
 	. = ..()
-	if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(exposed_mob))
+	if(!(methods & (INGEST|INJECT|PATCH|INHALE)) || !iscarbon(exposed_mob))
 		return
 
 	var/mob/living/carbon/exposed_carbon = exposed_mob
-	var/obj/item/organ/internal/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(istype(stomach))
 		stomach.adjust_charge(reac_volume * 0.03 * ETHEREAL_CHARGE_NORMAL)
 
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents.dm
index 20cd80d9c5b..b9c0ee0522d 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents.dm
@@ -16,7 +16,7 @@
 
 /datum/reagent/impurity/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	var/need_mob_update
 
 	if(liver)//Though, lets be safe
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
index 1bf91cc898d..eb81359ce58 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm
@@ -141,21 +141,21 @@ Basically, we fill the time between now and 2s from now with hands based off the
 		return
 	RegisterSignal(consumer, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_gained_organ))
 	RegisterSignal(consumer, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_removed_organ))
-	var/obj/item/organ/internal/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
 	this_liver.alcohol_tolerance *= 2
 
 /datum/reagent/inverse/libitoil/proc/on_gained_organ(mob/prev_owner, obj/item/organ/organ)
 	SIGNAL_HANDLER
-	if(!istype(organ, /obj/item/organ/internal/liver))
+	if(!istype(organ, /obj/item/organ/liver))
 		return
-	var/obj/item/organ/internal/liver/this_liver = organ
+	var/obj/item/organ/liver/this_liver = organ
 	this_liver.alcohol_tolerance *= 2
 
 /datum/reagent/inverse/libitoil/proc/on_removed_organ(mob/prev_owner, obj/item/organ/organ)
 	SIGNAL_HANDLER
-	if(!istype(organ, /obj/item/organ/internal/liver))
+	if(!istype(organ, /obj/item/organ/liver))
 		return
-	var/obj/item/organ/internal/liver/this_liver = organ
+	var/obj/item/organ/liver/this_liver = organ
 	this_liver.alcohol_tolerance /= 2
 
 /datum/reagent/inverse/libitoil/on_mob_delete(mob/living/affected_mob)
@@ -163,7 +163,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
 	var/mob/living/carbon/consumer = affected_mob
 	UnregisterSignal(consumer, COMSIG_CARBON_LOSE_ORGAN)
 	UnregisterSignal(consumer, COMSIG_CARBON_GAIN_ORGAN)
-	var/obj/item/organ/internal/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/this_liver = consumer.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(!this_liver)
 		return
 	this_liver.alcohol_tolerance /= 2
@@ -337,19 +337,19 @@ Basically, we fill the time between now and 2s from now with hands based off the
 	. = ..()
 	RegisterSignal(affected_mob, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_gained_organ))
 	RegisterSignal(affected_mob, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_removed_organ))
-	var/obj/item/organ/internal/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(!lungs)
 		return
 	apply_lung_levels(lungs)
 
 /datum/reagent/inverse/healing/convermol/proc/on_gained_organ(mob/prev_owner, obj/item/organ/organ)
 	SIGNAL_HANDLER
-	if(!istype(organ, /obj/item/organ/internal/lungs))
+	if(!istype(organ, /obj/item/organ/lungs))
 		return
-	var/obj/item/organ/internal/lungs/lungs = organ
+	var/obj/item/organ/lungs/lungs = organ
 	apply_lung_levels(lungs)
 
-/datum/reagent/inverse/healing/convermol/proc/apply_lung_levels(obj/item/organ/internal/lungs/lungs)
+/datum/reagent/inverse/healing/convermol/proc/apply_lung_levels(obj/item/organ/lungs/lungs)
 	cached_heat_level_1 = lungs.heat_level_1_threshold
 	cached_heat_level_2 = lungs.heat_level_2_threshold
 	cached_heat_level_3 = lungs.heat_level_3_threshold
@@ -367,12 +367,12 @@ Basically, we fill the time between now and 2s from now with hands based off the
 
 /datum/reagent/inverse/healing/convermol/proc/on_removed_organ(mob/prev_owner, obj/item/organ/organ)
 	SIGNAL_HANDLER
-	if(!istype(organ, /obj/item/organ/internal/lungs))
+	if(!istype(organ, /obj/item/organ/lungs))
 		return
-	var/obj/item/organ/internal/lungs/lungs = organ
+	var/obj/item/organ/lungs/lungs = organ
 	restore_lung_levels(lungs)
 
-/datum/reagent/inverse/healing/convermol/proc/restore_lung_levels(obj/item/organ/internal/lungs/lungs)
+/datum/reagent/inverse/healing/convermol/proc/restore_lung_levels(obj/item/organ/lungs/lungs)
 	lungs.heat_level_1_threshold = cached_heat_level_1
 	lungs.heat_level_2_threshold = cached_heat_level_2
 	lungs.heat_level_3_threshold = cached_heat_level_3
@@ -384,7 +384,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
 	. = ..()
 	UnregisterSignal(affected_mob, COMSIG_CARBON_LOSE_ORGAN)
 	UnregisterSignal(affected_mob, COMSIG_CARBON_GAIN_ORGAN)
-	var/obj/item/organ/internal/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(!lungs)
 		return
 	restore_lung_levels(lungs)
@@ -495,7 +495,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
 
 /datum/reagent/inverse/penthrite/on_mob_dead(mob/living/carbon/affected_mob, seconds_per_tick)
 	. = ..()
-	var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
 	if(!heart || heart.organ_flags & ORGAN_FAILING)
 		return
 	metabolization_rate = 0.2 * REM
@@ -529,7 +529,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
 		affected_mob.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nooartrium)
 	if(affected_mob.health < HEALTH_THRESHOLD_FULLCRIT)
 		affected_mob.add_actionspeed_modifier(/datum/actionspeed_modifier/nooartrium)
-	var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
 	if(!heart || heart.organ_flags & ORGAN_FAILING)
 		remove_buffs(affected_mob)
 	if(need_mob_update)
@@ -538,7 +538,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
 /datum/reagent/inverse/penthrite/on_mob_delete(mob/living/carbon/affected_mob)
 	. = ..()
 	remove_buffs(affected_mob)
-	var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
 	if(affected_mob.health < -500 || heart.organ_flags & ORGAN_FAILING)//Honestly commendable if you get -500
 		explosion(affected_mob, light_impact_range = 1, explosion_cause = src)
 		qdel(heart)
@@ -548,7 +548,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
 	. = ..()
 	if(!back_from_the_dead)
 		return ..()
-	var/obj/item/organ/internal/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
 	if(!heart) //No heart? No life!
 		REMOVE_TRAIT(affected_mob, TRAIT_NODEATH, type)
 		affected_mob.stat = DEAD
@@ -634,7 +634,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
 	)
 	forbiddentraumas += typesof(/datum/brain_trauma/very_special) // NOVA EDIT ADDITION - No very special (lewd) quirks gained by inverse neurine
 	traumalist -= forbiddentraumas
-	var/obj/item/organ/internal/brain/brain = affected_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = affected_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
 	traumalist = shuffle(traumalist)
 	for(var/trauma in traumalist)
 		if(brain.brain_gain_trauma(trauma, TRAUMA_RESILIENCE_MAGIC))
@@ -666,7 +666,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
 	if(!iscarbon(affected_mob))
 		return
 	var/mob/living/carbon/carbon_mob = affected_mob
-	var/obj/item/organ/internal/heart/affected_heart = carbon_mob.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/affected_heart = carbon_mob.get_organ_slot(ORGAN_SLOT_HEART)
 	if(isnull(affected_heart))
 		return
 	carbon_mob.AddComponent(/datum/component/manual_heart)
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm
index 0872fa66588..4e904dcf684 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_toxin_reagents.dm
@@ -29,7 +29,7 @@
 
 /datum/reagent/impurity/methanol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
 	if(eyes?.apply_organ_damage(0.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
 		return UPDATE_MOB_HEALTH
 
@@ -59,7 +59,7 @@
 
 /datum/reagent/impurity/rosenol/on_mob_life(mob/living/carbon/owner, seconds_per_tick)
 	. = ..()
-	var/obj/item/organ/internal/tongue/tongue = owner.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = owner.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		return
 	if(SPT_PROB(4.0, seconds_per_tick))
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 8a9095f94d7..d33a73eecd5 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -355,7 +355,7 @@
 	if(!iscarbon(exposed_mob) || (exposed_mob.stat == DEAD))
 		return
 
-	if(methods & (INGEST|VAPOR|INJECT))
+	if(methods & (INGEST|VAPOR|INJECT|INHALE))
 		exposed_mob.adjust_nutrition(-5)
 		if(show_message)
 			to_chat(exposed_mob, span_warning("Your stomach feels empty and cramps!"))
@@ -559,7 +559,7 @@
 	var/need_mob_update
 	need_mob_update = affected_mob.adjustOxyLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
 	if(affected_mob.losebreath >= 4)
-		var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+		var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
 		var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type // use lungs' respiration type or mob_respiration_type if no lungs
 		if(our_respiration_type & affected_respiration_type)
 			affected_mob.losebreath -= 2 * REM * seconds_per_tick
@@ -698,33 +698,33 @@
 		return
 	RegisterSignal(affected_mob, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_gained_organ))
 	RegisterSignal(affected_mob, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_removed_organ))
-	var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
 	if(!eyes)
 		return
 	improve_eyesight(affected_mob, eyes)
 
 
-/datum/reagent/medicine/oculine/proc/improve_eyesight(mob/living/carbon/affected_mob, obj/item/organ/internal/eyes/eyes)
+/datum/reagent/medicine/oculine/proc/improve_eyesight(mob/living/carbon/affected_mob, obj/item/organ/eyes/eyes)
 	delta_light = creation_purity*10
 	eyes.lighting_cutoff += delta_light
 	affected_mob.update_sight()
 
-/datum/reagent/medicine/oculine/proc/restore_eyesight(mob/living/carbon/affected_mob, obj/item/organ/internal/eyes/eyes)
+/datum/reagent/medicine/oculine/proc/restore_eyesight(mob/living/carbon/affected_mob, obj/item/organ/eyes/eyes)
 	eyes.lighting_cutoff -= delta_light
 	affected_mob.update_sight()
 
 /datum/reagent/medicine/oculine/proc/on_gained_organ(mob/affected_mob, obj/item/organ/organ)
 	SIGNAL_HANDLER
-	if(!istype(organ, /obj/item/organ/internal/eyes))
+	if(!istype(organ, /obj/item/organ/eyes))
 		return
-	var/obj/item/organ/internal/eyes/affected_eyes = organ
+	var/obj/item/organ/eyes/affected_eyes = organ
 	improve_eyesight(affected_mob, affected_eyes)
 
 /datum/reagent/medicine/oculine/proc/on_removed_organ(mob/prev_affected_mob, obj/item/organ/organ)
 	SIGNAL_HANDLER
-	if(!istype(organ, /obj/item/organ/internal/eyes))
+	if(!istype(organ, /obj/item/organ/eyes))
 		return
-	var/obj/item/organ/internal/eyes/eyes = organ
+	var/obj/item/organ/eyes/eyes = organ
 	restore_eyesight(prev_affected_mob, eyes)
 
 /datum/reagent/medicine/oculine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
@@ -732,7 +732,7 @@
 	var/normalized_purity = normalise_creation_purity()
 	affected_mob.adjust_temp_blindness(-4 SECONDS * REM * seconds_per_tick * normalized_purity)
 	affected_mob.adjust_eye_blur(-4 SECONDS * REM * seconds_per_tick * normalized_purity)
-	var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
 	if(eyes)
 		// Healing eye damage will cure nearsightedness and blindness from ... eye damage
 		if(eyes.apply_organ_damage(-2 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags))
@@ -749,7 +749,7 @@
 
 /datum/reagent/medicine/oculine/on_mob_delete(mob/living/affected_mob)
 	. = ..()
-	var/obj/item/organ/internal/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
 	if(!eyes)
 		return
 	restore_eyesight(affected_mob, eyes)
@@ -778,7 +778,7 @@
 
 /datum/reagent/medicine/inacusiate/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/ears/ears = affected_mob.get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = affected_mob.get_organ_slot(ORGAN_SLOT_EARS)
 	if(!ears)
 		return
 	ears.adjustEarDamage(-4 * REM * seconds_per_tick * normalise_creation_purity(), -4 * REM * seconds_per_tick * normalise_creation_purity())
@@ -813,7 +813,7 @@
 		need_mob_update += affected_mob.adjustOxyLoss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
 		if(need_mob_update)
 			. = UPDATE_MOB_HEALTH
-	var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
 	var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type
 	if(our_respiration_type & affected_respiration_type)
 		affected_mob.losebreath = 0
@@ -853,7 +853,7 @@
 		need_mob_update += affected_mob.adjustFireLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
 		need_mob_update += affected_mob.adjustOxyLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
 	if(affected_mob.losebreath >= 4)
-		var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+		var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
 		var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type
 		if(our_respiration_type & affected_respiration_type)
 			affected_mob.losebreath -= 2 * REM * seconds_per_tick
@@ -880,7 +880,7 @@
 		var/need_mob_update
 		need_mob_update = affected_mob.adjustStaminaLoss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE)
 		need_mob_update += affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
-		var/obj/item/organ/internal/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+		var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
 		var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type
 		if(our_respiration_type & affected_respiration_type)
 			affected_mob.losebreath++
@@ -948,7 +948,7 @@
 		exposed_mob.visible_message(span_warning("[exposed_mob]'s body does not react..."))
 		return
 
-	if(iscarbon(exposed_mob) && !(methods & INGEST)) //simplemobs can still be splashed
+	if(iscarbon(exposed_mob) && !(methods & (INGEST|INHALE))) //simplemobs can still be splashed
 		return ..()
 
 	if(HAS_TRAIT(exposed_mob, TRAIT_HUSK))
@@ -1708,10 +1708,10 @@
 			affected_mob.adjustOxyLoss(rand(3, 4) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
 
 		if(prob(50))
-			var/obj/item/organ/internal/lungs/our_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
+			var/obj/item/organ/lungs/our_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
 			our_lungs.apply_organ_damage(1 * REM * seconds_per_tick)
 		else
-			var/obj/item/organ/internal/heart/our_heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
+			var/obj/item/organ/heart/our_heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
 			our_heart.apply_organ_damage(1 * REM * seconds_per_tick)
 
 		return UPDATE_MOB_HEALTH
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 8347c62629c..b18e3fe69eb 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -41,7 +41,7 @@
 					continue
 
 				exposed_mob.ForceContractDisease(strain)
-			else if((methods & VAPOR) && (strain.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS))
+			else if((methods & (VAPOR|INHALE)) && (strain.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS))
 				if(!strain.has_required_infectious_organ(exposed_mob, ORGAN_SLOT_LUNGS))
 					continue
 
@@ -50,7 +50,7 @@
 				exposed_mob.ContactContractDisease(strain)
 
 	if(data && data["resistances"])
-		if(methods & (INGEST|INJECT)) //have to inject or ingest it. no curefoam/cheap curesprays
+		if(methods & (INGEST|INJECT|INHALE)) //have to inject, inhale or ingest it. no curefoam/cheap curesprays
 			for(var/stuff in exposed_mob.diseases)
 				var/datum/disease/infection = stuff
 				if(infection.GetDiseaseID() in data["resistances"])
@@ -1333,7 +1333,7 @@
 
 /datum/reagent/fuel/on_mob_life(mob/living/carbon/victim, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = victim.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = victim.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM))
 		return
 	if(victim.adjustToxLoss(0.5 * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
@@ -1469,10 +1469,10 @@
 
 /datum/reagent/cyborg_mutation_nanomachines/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = exposed_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = exposed_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM))
 		return
-	if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+	if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
 		exposed_mob.ForceContractDisease(new /datum/disease/transformation/robot(), FALSE, TRUE)
 
 /datum/reagent/xenomicrobes
@@ -1484,7 +1484,7 @@
 
 /datum/reagent/xenomicrobes/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
 	. = ..()
-	if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+	if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
 		exposed_mob.ForceContractDisease(new /datum/disease/transformation/xeno(), FALSE, TRUE)
 
 /datum/reagent/fungalspores
@@ -1497,7 +1497,7 @@
 
 /datum/reagent/fungalspores/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
 	. = ..()
-	if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+	if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
 		exposed_mob.ForceContractDisease(new /datum/disease/tuberculosis(), FALSE, TRUE)
 
 /datum/reagent/snail
@@ -1510,7 +1510,7 @@
 
 /datum/reagent/snail/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
 	. = ..()
-	if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+	if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
 		exposed_mob.ForceContractDisease(new /datum/disease/gastrolosis(), FALSE, TRUE)
 
 /datum/reagent/fluorosurfactant//foam precursor
@@ -1606,10 +1606,13 @@
 
 /datum/reagent/nitrous_oxide/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)
 	. = ..()
-	if(methods & VAPOR)
+	if(methods & (VAPOR|INHALE))
 		// apply 2 seconds of drowsiness per unit applied, with a min duration of 4 seconds
 		var/drowsiness_to_apply = max(round(reac_volume, 1) * 2 SECONDS, 4 SECONDS)
 		exposed_mob.adjust_drowsiness(drowsiness_to_apply)
+	if(methods & INHALE)
+		exposed_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25 * reac_volume, required_organ_flag = affected_organ_flags)
+		exposed_mob.adjust_hallucinations(10 SECONDS * reac_volume)
 
 /datum/reagent/nitrous_oxide/on_mob_metabolize(mob/living/affected_mob)
 	. = ..()
@@ -1965,7 +1968,7 @@
 
 /datum/reagent/carpet/royal/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver)
 		// Heads of staff and the captain have a "royal metabolism"
 		if(HAS_TRAIT(liver, TRAIT_ROYAL_METABOLISM))
@@ -2459,7 +2462,7 @@
 	. = ..()
 	// Silently add the zombie infection organ to be activated upon death
 	if(!exposed_mob.get_organ_slot(ORGAN_SLOT_ZOMBIE))
-		var/obj/item/organ/internal/zombie_infection/nodamage/ZI = new()
+		var/obj/item/organ/zombie_infection/nodamage/ZI = new()
 		ZI.Insert(exposed_mob)
 
 /datum/reagent/magillitis
@@ -2635,7 +2638,7 @@
 
 /datum/reagent/gondola_mutation_toxin/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
 	. = ..()
-	if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
+	if((methods & (PATCH|INGEST|INJECT|INHALE)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
 		exposed_mob.ForceContractDisease(new gondola_disease, FALSE, TRUE)
 
 
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index d00185f4f69..a5d8fdaae18 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -54,7 +54,7 @@
 	. = ..()
 	if(!exposed_mob.can_mutate())
 		return  //No robots, AIs, aliens, Ians or other mobs should be affected by this.
-	if(((methods & VAPOR) && prob(min(33, reac_volume))) || (methods & (INGEST|PATCH|INJECT)))
+	if(((methods & VAPOR) && prob(min(33, reac_volume))) || (methods & (INGEST|PATCH|INJECT|INHALE)))
 		exposed_mob.random_mutate_unique_identity()
 		exposed_mob.random_mutate_unique_features()
 		if(prob(98))
@@ -258,7 +258,7 @@
 /datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/holder_mob)
 	. = ..()
 	holder_mob.adjustOxyLoss(0.5*REM, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
-	if((data?["method"] & INGEST) && holder_mob.stat != DEAD)
+	if((data?["method"] & (INGEST|INHALE)) && holder_mob.stat != DEAD)
 		holder_mob.fakedeath(type)
 
 /datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/affected_mob)
@@ -268,10 +268,10 @@
 /datum/reagent/toxin/zombiepowder/on_transfer(atom/target_atom, methods, trans_volume)
 	. = ..()
 	var/datum/reagent/zombiepowder = target_atom.reagents.has_reagent(/datum/reagent/toxin/zombiepowder)
-	if(!zombiepowder || !(methods & INGEST))
+	if(!zombiepowder || !(methods & (INGEST|INHALE)))
 		return
 	LAZYINITLIST(zombiepowder.data)
-	zombiepowder.data["method"] |= INGEST
+	zombiepowder.data["method"] |= (INGEST|INHALE)
 
 /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/affected_mob, seconds_per_tick, times_fired)
 	. = ..()
@@ -655,7 +655,7 @@
 	chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
 
 /datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
-	var/obj/item/organ/internal/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM)) //mmmm, the forbidden pickle juice
 		if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) //it counteracts its own toxin damage.
 			return UPDATE_MOB_HEALTH
@@ -1085,11 +1085,11 @@
 	. = ..()
 	if(!istype(exposed_carbon))
 		return
-	var/obj/item/organ/internal/liver/liver = exposed_carbon.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = exposed_carbon.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM))
 		return
 	reac_volume = round(reac_volume,0.1)
-	if(methods & INGEST)
+	if(methods & (INGEST|INHALE))
 		exposed_carbon.adjustBruteLoss(min(6*toxpwr, reac_volume * toxpwr), required_bodytype = affected_bodytype)
 		return
 	if(methods & INJECT)
@@ -1341,7 +1341,7 @@
 			if(SPT_PROB(20, seconds_per_tick))
 				affected_mob.set_jitter_if_lower(rand(2 SECONDS, 3 SECONDS) * REM * seconds_per_tick)
 			if(SPT_PROB(5, seconds_per_tick))
-				var/obj/item/organ/internal/tongue/tongue = affected_mob.get_organ_slot(ORGAN_SLOT_TONGUE)
+				var/obj/item/organ/tongue/tongue = affected_mob.get_organ_slot(ORGAN_SLOT_TONGUE)
 				if(tongue)
 					to_chat(affected_mob, span_warning("Your [tongue.name] feels numb..."))
 				affected_mob.set_slurring_if_lower(5 SECONDS * REM * seconds_per_tick)
diff --git a/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm b/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm
index 8c093888028..b34461f99b4 100644
--- a/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm
+++ b/code/modules/reagents/chemistry/reagents/unique/eigenstasium.dm
@@ -43,7 +43,7 @@
 	//This looks rediculous, but expose is usually called from the donor reagents datum - we want to edit the post exposure version present in the mob.
 	var/mob/living/carbon/carby = living_mob
 	//But because carbon mobs have stomachs we have to search in there because we're ingested
-	var/obj/item/organ/internal/stomach/stomach = carby.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/stomach = carby.get_organ_slot(ORGAN_SLOT_STOMACH)
 	var/datum/reagent/eigenstate/eigen
 	if(stomach)
 		eigen = stomach.reagents.has_reagent(/datum/reagent/eigenstate)
diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm
index 9e6c9da53a0..acde1703668 100644
--- a/code/modules/reagents/chemistry/recipes.dm
+++ b/code/modules/reagents/chemistry/recipes.dm
@@ -314,8 +314,8 @@
 		// Not quite the same if the reaction is in their stomach; they'll throw up
 		// from any explosion, but it'll only make them puke up everything in their
 		// stomach
-	else if (istype(holder.my_atom, /obj/item/organ/internal/stomach))
-		var/obj/item/organ/internal/stomach/indigestion = holder.my_atom
+	else if (istype(holder.my_atom, /obj/item/organ/stomach))
+		var/obj/item/organ/stomach/indigestion = holder.my_atom
 		if(power < 1)
 			return
 		indigestion.owner?.vomit(MOB_VOMIT_MESSAGE | MOB_VOMIT_FORCE, lost_nutrition = 150, distance = 5, purge_ratio = 1)
diff --git a/code/modules/reagents/chemistry/taste.dm b/code/modules/reagents/chemistry/taste.dm
new file mode 100644
index 00000000000..06cee0bba2d
--- /dev/null
+++ b/code/modules/reagents/chemistry/taste.dm
@@ -0,0 +1,77 @@
+
+#define TEXT_NO_TASTE "something indescribable"
+
+//================================TASTE===================================================
+/**
+ * Returns what this reagents in our given list taste like
+ *
+ * Arguments:
+ * * list/reagent_list - List of reagents to taste.
+ * * mob/living/taster - Who is doing the tasting. Some mobs can pick up specific flavours.
+ * * minimum_percent - The lower the minimum percent, the more sensitive the message is.
+ * * weight_modifier - Value to multiply each reagent's taste weight with.
+ */
+/proc/generate_reagents_taste_message(list/reagent_list, mob/living/taster, minimum_percent)
+	// We can't taste anything
+	if(minimum_percent > 100)
+		return TEXT_NO_TASTE
+
+	// Associative list of our tastes, descriptor - strength
+	var/list/tastes = list()
+	// Total of our taste strengths so far
+	var/total_taste = 0
+
+	for(var/datum/reagent/reagent as anything in reagent_list)
+		if(!reagent.taste_mult)
+			continue
+
+		var/list/taste_data = reagent.get_taste_description(taster)
+		for(var/taste in taste_data)
+			var/taste_strength = taste_data[taste] * reagent.volume * reagent.taste_mult
+			if(taste in tastes)
+				tastes[taste] += taste_strength
+			else
+				tastes[taste] = taste_strength
+			total_taste += taste_strength
+
+	// None of our reagents had any flavour
+	if(total_taste <= 0)
+		return TEXT_NO_TASTE
+
+	// If we have exactly one taste, don't bother with relative strengths
+	if(length(tastes) == 1)
+		return tastes[1]
+
+	// Sort tastes descending by strength, so strong flavours come first
+	sortTim(tastes, cmp = GLOBAL_PROC_REF(cmp_numeric_dsc), associative = TRUE)
+
+	// Lazylists for different taste strength categories, no need to initialize if we don't have such flavors
+	var/list/strong
+	var/list/mild
+	var/list/hint
+
+	for(var/taste_desc in tastes)
+		var/percent = tastes[taste_desc]/total_taste * 100
+		if(percent < minimum_percent)
+			continue
+
+		if(percent <= minimum_percent * 2)
+			LAZYADD(hint, taste_desc)
+		else if(percent > minimum_percent * 4)
+			LAZYADD(strong, taste_desc)
+		else
+			LAZYADD(mild, taste_desc)
+
+	var/list/out = list()
+
+	if(LAZYLEN(strong))
+		out += "the strong flavor of [english_list(strong, TEXT_NO_TASTE)]"
+	if(LAZYLEN(mild))
+		// Prefix "some " if there are strong flavors to avoid seeming like a strong flavor
+		out += "[LAZYLEN(strong) ? "some " : ""][english_list(mild, TEXT_NO_TASTE)]"
+	if(LAZYLEN(hint))
+		out += "a hint of [english_list(hint, TEXT_NO_TASTE)]"
+
+	return english_list(out, TEXT_NO_TASTE)
+
+#undef TEXT_NO_TASTE
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 9e7e0845166..4a61c12a500 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -72,7 +72,7 @@
 			. += span_notice("Left-click or right-click in-hand to view its transfer amount.")
 	if(isliving(user) && HAS_TRAIT(user, TRAIT_REMOTE_TASTING))
 		var/mob/living/living_user = user
-		living_user.taste(reagents)
+		living_user.taste_container(reagents)
 
 /obj/item/reagent_containers/create_reagents(max_vol, flags)
 	. = ..()
diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm
index 4c61f7af269..6c3c9c1b118 100644
--- a/code/modules/reagents/reagent_containers/cups/_cup.dm
+++ b/code/modules/reagents/reagent_containers/cups/_cup.dm
@@ -19,6 +19,10 @@
 	var/gulp_size = 5
 	///Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it.
 	var/isGlass = FALSE
+	///What kind of chem transfer method does this cup use. Defaults to INGEST
+	var/reagent_consumption_method = INGEST
+	///What sound does our consumption play on consuming from the container?
+	var/consumption_sound = 'sound/items/drink.ogg'
 
 /obj/item/reagent_containers/cup/examine(mob/user)
 	. = ..()
@@ -87,9 +91,9 @@
 	SEND_SIGNAL(src, COMSIG_GLASS_DRANK, target_mob, user)
 	SEND_SIGNAL(target_mob, COMSIG_GLASS_DRANK, src, user) // NOVA EDIT ADDITION - Hemophages can't casually drink what's not going to regenerate their blood
 	var/fraction = min(gulp_size/reagents.total_volume, 1)
-	reagents.trans_to(target_mob, gulp_size, transferred_by = user, methods = INGEST)
+	reagents.trans_to(target_mob, gulp_size, transferred_by = user, methods = reagent_consumption_method)
 	checkLiked(fraction, target_mob)
-	playsound(target_mob.loc,'sound/items/drink.ogg', rand(10,50), TRUE)
+	playsound(target_mob.loc, consumption_sound, rand(10,50), TRUE)
 	if(!iscarbon(target_mob))
 		return
 	var/mob/living/carbon/carbon_drinker = target_mob
diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
index dcf56faec4c..5712d383f0b 100644
--- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
@@ -693,7 +693,7 @@
 		return
 
 	//The bonus to success chance that the user gets for being a command role
-	var/obj/item/organ/internal/liver/liver = user.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = user.get_organ_slot(ORGAN_SLOT_LIVER)
 	var/command_bonus = (!isnull(liver) && HAS_TRAIT(liver, TRAIT_ROYAL_METABOLISM)) ? 20 : 0
 
 	//The bonus to success chance that the user gets for having a sabrage skillchip installed/otherwise having the trait through other means
diff --git a/code/modules/reagents/withdrawal/generic_addictions.dm b/code/modules/reagents/withdrawal/generic_addictions.dm
index 8dc10cf0a50..d385078086f 100644
--- a/code/modules/reagents/withdrawal/generic_addictions.dm
+++ b/code/modules/reagents/withdrawal/generic_addictions.dm
@@ -111,7 +111,7 @@
 		to_chat(affected_human, span_warning("Your chin itches."))
 		affected_human.set_facial_hairstyle("Beard (Full)", update = TRUE)
 	//Only like gross food
-	var/obj/item/organ/internal/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		return
 	tongue.liked_foodtypes = GROSS
@@ -124,7 +124,7 @@
 		return
 	to_chat(affected_carbon, span_warning("You feel yourself adapt to the darkness."))
 	var/mob/living/carbon/human/affected_human = affected_carbon
-	var/obj/item/organ/internal/eyes/empowered_eyes = affected_human.get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/empowered_eyes = affected_human.get_organ_by_type(/obj/item/organ/eyes)
 	if(empowered_eyes)
 		ADD_TRAIT(affected_human, TRAIT_NIGHT_VISION, "maint_drug_addiction")
 		empowered_eyes?.refresh()
@@ -146,7 +146,7 @@
 	. = ..()
 	affected_carbon.remove_status_effect(/datum/status_effect/grouped/screwy_hud/fake_healthy, type)
 	//restore tongue's tastes
-	var/obj/item/organ/internal/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = affected_carbon.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(tongue)
 		tongue.liked_foodtypes = initial(tongue.liked_foodtypes)
 		tongue.disliked_foodtypes = initial(tongue.disliked_foodtypes)
@@ -155,7 +155,7 @@
 		return
 	var/mob/living/carbon/human/affected_human = affected_carbon
 	REMOVE_TRAIT(affected_human, TRAIT_NIGHT_VISION, "maint_drug_addiction")
-	var/obj/item/organ/internal/eyes/eyes = affected_human.get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/eyes = affected_human.get_organ_by_type(/obj/item/organ/eyes)
 	eyes?.refresh()
 
 ///Makes you a hypochondriac - I'd like to call it hypochondria, but "I could use some hypochondria" doesn't work
@@ -195,7 +195,7 @@
 	if(!HAS_TRAIT(affected_carbon, TRAIT_RESISTCOLD))
 		possibilities += /datum/hallucination/fake_alert/cold
 
-	var/obj/item/organ/internal/lungs/lungs = affected_carbon.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/lungs = affected_carbon.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(lungs)
 		if(lungs.safe_oxygen_min)
 			possibilities += /datum/hallucination/fake_alert/need_oxygen
diff --git a/code/modules/religion/burdened/burdened_trauma.dm b/code/modules/religion/burdened/burdened_trauma.dm
index 51e763dbcb5..ebdfcda6565 100644
--- a/code/modules/religion/burdened/burdened_trauma.dm
+++ b/code/modules/religion/burdened/burdened_trauma.dm
@@ -153,8 +153,8 @@
 
 	if(!(organ.slot in critical_slots))
 		return FALSE
-	else if(istype(organ, /obj/item/organ/internal/eyes))
-		var/obj/item/organ/internal/eyes/eyes = organ
+	else if(istype(organ, /obj/item/organ/eyes))
+		var/obj/item/organ/eyes/eyes = organ
 		if(eyes.tint < TINT_BLIND) //unless you were already blinded by them (flashlight eyes), this is adding burden!
 			return TRUE
 		return FALSE
diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm
index 8352e2c10ab..0fc67738913 100644
--- a/code/modules/religion/burdened/psyker.dm
+++ b/code/modules/religion/burdened/psyker.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/brain/psyker
+/obj/item/organ/brain/psyker
 	name = "psyker brain"
 	desc = "This brain is blue, split into two hemispheres, and has immense psychic powers. What kind of monstrosity would use that?"
 	icon_state = "brain-psyker"
@@ -10,17 +10,17 @@
 	organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP, TRAIT_ANTIMAGIC_NO_SELFBLOCK)
 	w_class = WEIGHT_CLASS_NORMAL
 
-/obj/item/organ/internal/brain/psyker/on_mob_insert(mob/living/carbon/inserted_into)
+/obj/item/organ/brain/psyker/on_mob_insert(mob/living/carbon/inserted_into)
 	. = ..()
 	inserted_into.AddComponent(/datum/component/echolocation, blocking_trait = TRAIT_DUMB, echo_group = "psyker", echo_icon = "psyker", color_path = /datum/client_colour/psyker)
 	inserted_into.AddComponent(/datum/component/anti_magic, antimagic_flags = MAGIC_RESISTANCE_MIND)
 
-/obj/item/organ/internal/brain/psyker/on_mob_remove(mob/living/carbon/removed_from)
+/obj/item/organ/brain/psyker/on_mob_remove(mob/living/carbon/removed_from)
 	. = ..()
 	qdel(removed_from.GetComponent(/datum/component/echolocation))
 	qdel(removed_from.GetComponent(/datum/component/anti_magic))
 
-/obj/item/organ/internal/brain/psyker/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/brain/psyker/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	var/obj/item/bodypart/head/psyker/psyker_head = owner.get_bodypart(zone)
 	if(istype(psyker_head))
@@ -72,15 +72,15 @@
 /// Proc with no side effects that turns someone into a psyker. returns FALSE if it could not psykerize.
 /mob/living/carbon/human/proc/psykerize()
 	var/obj/item/bodypart/head/old_head = get_bodypart(BODY_ZONE_HEAD)
-	var/obj/item/organ/internal/brain/old_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
-	var/obj/item/organ/internal/old_eyes = get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/brain/old_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/old_eyes = get_organ_slot(ORGAN_SLOT_EYES)
 	if(stat == DEAD || !old_head || !old_brain)
 		return FALSE
 	var/obj/item/bodypart/head/psyker/psyker_head = new()
 	if(!psyker_head.replace_limb(src, special = TRUE))
 		return FALSE
 	qdel(old_head)
-	var/obj/item/organ/internal/brain/psyker/psyker_brain = new()
+	var/obj/item/organ/brain/psyker/psyker_brain = new()
 	old_brain.before_organ_replacement(psyker_brain)
 	old_brain.Remove(src, special = TRUE, movement_flags = NO_ID_TRANSFER)
 	qdel(old_brain)
diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm
index b1c055ec9bd..58209cac74a 100644
--- a/code/modules/religion/religion_sects.dm
+++ b/code/modules/religion/religion_sects.dm
@@ -169,7 +169,7 @@
 
 	//first we determine if we can charge them
 	var/did_we_charge = FALSE
-	var/obj/item/organ/internal/stomach/ethereal/eth_stomach = blessed.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/ethereal/eth_stomach = blessed.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(istype(eth_stomach))
 		eth_stomach.adjust_charge(0.06 * STANDARD_CELL_CHARGE)
 		did_we_charge = TRUE
diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm
index b54c4e09b29..cd0fabba849 100644
--- a/code/modules/religion/rites.dm
+++ b/code/modules/religion/rites.dm
@@ -132,31 +132,31 @@
 		list(
 			// Arms
 			list(
-				/obj/item/organ/internal/cyberimp/arm/combat = 1,
-				/obj/item/organ/internal/cyberimp/arm/surgery = 1000000,
-				/obj/item/organ/internal/cyberimp/arm/toolset = 1500000,
+				/obj/item/organ/cyberimp/arm/combat = 1,
+				/obj/item/organ/cyberimp/arm/surgery = 1000000,
+				/obj/item/organ/cyberimp/arm/toolset = 1500000,
 			) = 15,
 			// Eyes
 			list(
-				/obj/item/organ/internal/cyberimp/eyes/hud/diagnostic = 1,
-				/obj/item/organ/internal/cyberimp/eyes/hud/medical = 1,
-				/obj/item/organ/internal/eyes/robotic/glow = 1,
-				/obj/item/organ/internal/eyes/robotic/shield = 2,
+				/obj/item/organ/cyberimp/eyes/hud/diagnostic = 1,
+				/obj/item/organ/cyberimp/eyes/hud/medical = 1,
+				/obj/item/organ/eyes/robotic/glow = 1,
+				/obj/item/organ/eyes/robotic/shield = 2,
 			) = 15,
 			// Chest
 			list(
-				/obj/item/organ/internal/cyberimp/chest/reviver = 1,
-				/obj/item/organ/internal/cyberimp/chest/thrusters = 2,
+				/obj/item/organ/cyberimp/chest/reviver = 1,
+				/obj/item/organ/cyberimp/chest/thrusters = 2,
 			) = 9,
 			// Brain / Head
 			list(
-				/obj/item/organ/internal/cyberimp/brain/anti_drop = 50,
-				/obj/item/organ/internal/cyberimp/brain/connector = 50,
-				/obj/item/organ/internal/cyberimp/brain/anti_stun = 10,
+				/obj/item/organ/cyberimp/brain/anti_drop = 50,
+				/obj/item/organ/cyberimp/brain/connector = 50,
+				/obj/item/organ/cyberimp/brain/anti_stun = 10,
 			) = 10,
 			// Misc
 			list(
-				/obj/item/organ/internal/cyberimp/mouth/breathing_tube = 1,
+				/obj/item/organ/cyberimp/mouth/breathing_tube = 1,
 			) = 5,
 		)
 	)
@@ -264,7 +264,7 @@
 	if(!HAS_TRAIT_FROM(user, TRAIT_HOPELESSLY_ADDICTED, "maint_adaptation"))
 		to_chat(user, span_warning("You need to adapt to maintenance first."))
 		return FALSE
-	var/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/adapted = user.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/night_vision/maintenance_adapted/adapted = user.get_organ_slot(ORGAN_SLOT_EYES)
 	if(adapted && istype(adapted))
 		to_chat(user, span_warning("Your eyes are already adapted!"))
 		return FALSE
@@ -272,12 +272,12 @@
 
 /datum/religion_rites/adapted_eyes/invoke_effect(mob/living/carbon/human/user, atom/movable/religious_tool)
 	..()
-	var/obj/item/organ/internal/eyes/oldeyes = user.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/oldeyes = user.get_organ_slot(ORGAN_SLOT_EYES)
 	to_chat(user, span_warning("You feel your eyes adapt to the darkness!"))
 	if(oldeyes)
 		oldeyes.Remove(user, special = TRUE)
 		qdel(oldeyes)//eh
-	var/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/neweyes = new
+	var/obj/item/organ/eyes/night_vision/maintenance_adapted/neweyes = new
 	neweyes.Insert(user, special = TRUE)
 
 /datum/religion_rites/adapted_food
diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm
index ef8c762acd7..53309d39c7d 100644
--- a/code/modules/research/designs/limbgrower_designs.dm
+++ b/code/modules/research/designs/limbgrower_designs.dm
@@ -41,7 +41,7 @@
 	id = "heart"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 30)
-	build_path = /obj/item/organ/internal/heart
+	build_path = /obj/item/organ/heart
 	category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
 
 /datum/design/lungs
@@ -49,7 +49,7 @@
 	id = "lungs"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
-	build_path = /obj/item/organ/internal/lungs
+	build_path = /obj/item/organ/lungs
 	category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
 
 /datum/design/liver
@@ -57,7 +57,7 @@
 	id = "liver"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
-	build_path = /obj/item/organ/internal/liver
+	build_path = /obj/item/organ/liver
 	category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
 
 /datum/design/stomach
@@ -65,7 +65,7 @@
 	id = "stomach"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 15)
-	build_path = /obj/item/organ/internal/stomach
+	build_path = /obj/item/organ/stomach
 	category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
 
 /datum/design/appendix
@@ -73,7 +73,7 @@
 	id = "appendix"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 5) //why would you need this
-	build_path = /obj/item/organ/internal/appendix
+	build_path = /obj/item/organ/appendix
 	category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
 
 /datum/design/eyes
@@ -81,7 +81,7 @@
 	id = "eyes"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10)
-	build_path = /obj/item/organ/internal/eyes
+	build_path = /obj/item/organ/eyes
 	category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
 
 /datum/design/ears
@@ -89,7 +89,7 @@
 	id = "ears"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10)
-	build_path = /obj/item/organ/internal/ears
+	build_path = /obj/item/organ/ears
 	category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
 
 /datum/design/tongue
@@ -97,7 +97,7 @@
 	id = "tongue"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10)
-	build_path = /obj/item/organ/internal/tongue
+	build_path = /obj/item/organ/tongue
 	category = list(SPECIES_HUMAN, RND_CATEGORY_INITIAL)
 
 // Grows a fake lizard tail - not usable in lizard wine and other similar recipes.
@@ -106,7 +106,7 @@
 	id = "liztail"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
-	build_path = /obj/item/organ/external/tail/lizard/fake
+	build_path = /obj/item/organ/tail/lizard/fake
 	category = list(SPECIES_LIZARD)
 
 /datum/design/lizard_tongue
@@ -114,7 +114,7 @@
 	id = "liztongue"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
-	build_path = /obj/item/organ/internal/tongue/lizard
+	build_path = /obj/item/organ/tongue/lizard
 	category = list(SPECIES_LIZARD)
 
 /datum/design/monkey_tail
@@ -122,7 +122,7 @@
 	id = "monkeytail"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
-	build_path = /obj/item/organ/external/tail/monkey
+	build_path = /obj/item/organ/tail/monkey
 	category = list(RND_CATEGORY_LIMBS_OTHER, RND_CATEGORY_INITIAL)
 
 /datum/design/cat_tail
@@ -130,7 +130,7 @@
 	id = "cattail"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 20)
-	build_path = /obj/item/organ/external/tail/cat
+	build_path = /obj/item/organ/tail/cat
 	category = list(SPECIES_HUMAN)
 
 /datum/design/cat_ears
@@ -138,7 +138,7 @@
 	id = "catears"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10)
-	build_path = /obj/item/organ/internal/ears/cat
+	build_path = /obj/item/organ/ears/cat
 	category = list(SPECIES_HUMAN)
 
 /datum/design/plasmaman_lungs
@@ -146,7 +146,7 @@
 	id = "plasmamanlungs"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20)
-	build_path = /obj/item/organ/internal/lungs/plasmaman
+	build_path = /obj/item/organ/lungs/plasmaman
 	category = list(SPECIES_PLASMAMAN)
 
 /datum/design/plasmaman_tongue
@@ -154,7 +154,7 @@
 	id = "plasmamantongue"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20)
-	build_path = /obj/item/organ/internal/tongue/bone/plasmaman
+	build_path = /obj/item/organ/tongue/bone/plasmaman
 	category = list(SPECIES_PLASMAMAN)
 
 /datum/design/plasmaman_liver
@@ -162,7 +162,7 @@
 	id = "plasmamanliver"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20)
-	build_path = /obj/item/organ/internal/liver/bone/plasmaman
+	build_path = /obj/item/organ/liver/bone/plasmaman
 	category = list(SPECIES_PLASMAMAN)
 
 /datum/design/plasmaman_stomach
@@ -170,7 +170,7 @@
 	id = "plasmamanstomach"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/toxin/plasma = 20)
-	build_path = /obj/item/organ/internal/stomach/bone/plasmaman
+	build_path = /obj/item/organ/stomach/bone/plasmaman
 	category = list(SPECIES_PLASMAMAN)
 
 /datum/design/ethereal_stomach
@@ -178,7 +178,7 @@
 	id = "etherealstomach"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20)
-	build_path = /obj/item/organ/internal/stomach/ethereal
+	build_path = /obj/item/organ/stomach/ethereal
 	category = list(SPECIES_ETHEREAL)
 
 /datum/design/ethereal_tongue
@@ -186,7 +186,7 @@
 	id = "etherealtongue"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20)
-	build_path = /obj/item/organ/internal/tongue/ethereal
+	build_path = /obj/item/organ/tongue/ethereal
 	category = list(SPECIES_ETHEREAL)
 
 /datum/design/ethereal_lungs
@@ -194,7 +194,7 @@
 	id = "ethereallungs"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20)
-	build_path = /obj/item/organ/internal/lungs/ethereal
+	build_path = /obj/item/organ/lungs/ethereal
 	category = list(SPECIES_ETHEREAL)
 
 // Intentionally not growable by normal means - for balance conerns.
@@ -203,7 +203,7 @@
 	id = "etherealheart"
 	build_type = LIMBGROWER
 	reagents_list = list(/datum/reagent/medicine/c2/synthflesh = 10, /datum/reagent/consumable/liquidelectricity/enriched = 20)
-	build_path = /obj/item/organ/internal/heart/ethereal
+	build_path = /obj/item/organ/heart/ethereal
 	category = list(SPECIES_ETHEREAL)
 
 /datum/design/armblade
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index c34411fff61..d55c1a6f243 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -392,7 +392,7 @@
 	build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
 	construction_time = 3.5 SECONDS
 	materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*6, /datum/material/glass = SMALL_MATERIAL_AMOUNT*2.5)
-	build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube
+	build_path = /obj/item/organ/cyberimp/mouth/breathing_tube
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
 	)
@@ -409,7 +409,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 1.5,
 	)
 	construction_time = 2 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/surgery
+	build_path = /obj/item/organ/cyberimp/arm/surgery
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
 	)
@@ -426,7 +426,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 1.5,
 	)
 	construction_time = 2 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/toolset
+	build_path = /obj/item/organ/cyberimp/arm/toolset
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
 	)
@@ -444,7 +444,7 @@
 		/datum/material/silver =SMALL_MATERIAL_AMOUNT*5,
 		/datum/material/gold =SMALL_MATERIAL_AMOUNT*5,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/eyes/hud/medical
+	build_path = /obj/item/organ/cyberimp/eyes/hud/medical
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
 	)
@@ -462,7 +462,7 @@
 		/datum/material/silver = SMALL_MATERIAL_AMOUNT*7.5,
 		/datum/material/gold = SMALL_MATERIAL_AMOUNT*7.5,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/eyes/hud/security
+	build_path = /obj/item/organ/cyberimp/eyes/hud/security
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
 	)
@@ -480,7 +480,7 @@
 		/datum/material/silver = SMALL_MATERIAL_AMOUNT*6,
 		/datum/material/gold = SMALL_MATERIAL_AMOUNT*6,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic
+	build_path = /obj/item/organ/cyberimp/eyes/hud/diagnostic
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
 	)
@@ -502,7 +502,7 @@
 		/datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/eyes/robotic/xray
+	build_path = /obj/item/organ/eyes/robotic/xray
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_COMBAT
 	)
@@ -511,7 +511,7 @@
 /datum/design/cyberimp_xray/moth
 	name = "Moth X-ray Eyes"
 	id = "ci-xray-moth"
-	build_path = /obj/item/organ/internal/eyes/robotic/xray/moth
+	build_path = /obj/item/organ/eyes/robotic/xray/moth
 
 /datum/design/cyberimp_thermals
 	name = "Thermal Eyes"
@@ -527,7 +527,7 @@
 		/datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/diamond =SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/eyes/robotic/thermals
+	build_path = /obj/item/organ/eyes/robotic/thermals
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_COMBAT
 	)
@@ -536,7 +536,7 @@
 /datum/design/cyberimp_thermals/moth
 	name = "Moth Thermal Eyes"
 	id = "ci-thermals-moth"
-	build_path = /obj/item/organ/internal/eyes/robotic/thermals/moth
+	build_path = /obj/item/organ/eyes/robotic/thermals/moth
 
 /datum/design/cyberimp_antidrop
 	name = "Anti-Drop Implant"
@@ -550,7 +550,7 @@
 		/datum/material/silver = SMALL_MATERIAL_AMOUNT*4,
 		/datum/material/gold = SMALL_MATERIAL_AMOUNT*4,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/brain/anti_drop
+	build_path = /obj/item/organ/cyberimp/brain/anti_drop
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
 	)
@@ -568,7 +568,7 @@
 		/datum/material/silver =SMALL_MATERIAL_AMOUNT*5,
 		/datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/brain/anti_stun
+	build_path = /obj/item/organ/cyberimp/brain/anti_stun
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
 	)
@@ -586,7 +586,7 @@
 		/datum/material/gold=SMALL_MATERIAL_AMOUNT*3,
 		/datum/material/diamond =SMALL_MATERIAL_AMOUNT*5,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/chest/spine
+	build_path = /obj/item/organ/cyberimp/chest/spine
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
 	)
@@ -603,7 +603,7 @@
 		/datum/material/glass = SMALL_MATERIAL_AMOUNT*6,
 		/datum/material/titanium = SMALL_MATERIAL_AMOUNT*3,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/brain/connector
+	build_path = /obj/item/organ/cyberimp/brain/connector
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_MISC
 	)
@@ -620,7 +620,7 @@
 		/datum/material/glass =SMALL_MATERIAL_AMOUNT*5,
 		/datum/material/gold =SMALL_MATERIAL_AMOUNT*5,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/chest/nutriment
+	build_path = /obj/item/organ/cyberimp/chest/nutriment
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
 	)
@@ -638,7 +638,7 @@
 		/datum/material/gold =SMALL_MATERIAL_AMOUNT*5,
 		/datum/material/uranium = SMALL_MATERIAL_AMOUNT*7.5,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/chest/nutriment/plus
+	build_path = /obj/item/organ/cyberimp/chest/nutriment/plus
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
 	)
@@ -656,7 +656,7 @@
 		/datum/material/gold =SMALL_MATERIAL_AMOUNT * 3,
 		/datum/material/uranium =SMALL_MATERIAL_AMOUNT*5,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/chest/reviver
+	build_path = /obj/item/organ/cyberimp/chest/reviver
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
 	)
@@ -674,7 +674,7 @@
 		/datum/material/silver =HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/diamond =HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/chest/thrusters
+	build_path = /obj/item/organ/cyberimp/chest/thrusters
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
 	)
@@ -789,7 +789,7 @@
 	build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
 	construction_time = 4 SECONDS
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/liver/cybernetic
+	build_path = /obj/item/organ/liver/cybernetic
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
 	)
@@ -800,7 +800,7 @@
 	desc = "A cybernetic liver."
 	id = "cybernetic_liver_tier2"
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/liver/cybernetic/tier2
+	build_path = /obj/item/organ/liver/cybernetic/tier2
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
 	)
@@ -812,7 +812,7 @@
 	id = "cybernetic_liver_tier3"
 	construction_time = 5 SECONDS
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver=SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/liver/cybernetic/tier3
+	build_path = /obj/item/organ/liver/cybernetic/tier3
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
 	)
@@ -825,7 +825,7 @@
 	build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
 	construction_time = 4 SECONDS
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/heart/cybernetic
+	build_path = /obj/item/organ/heart/cybernetic
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
 	)
@@ -836,7 +836,7 @@
 	desc = "A cybernetic heart."
 	id = "cybernetic_heart_tier2"
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/heart/cybernetic/tier2
+	build_path = /obj/item/organ/heart/cybernetic/tier2
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
 	)
@@ -848,7 +848,7 @@
 	id = "cybernetic_heart_tier3"
 	construction_time = 5 SECONDS
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver=SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/heart/cybernetic/tier3
+	build_path = /obj/item/organ/heart/cybernetic/tier3
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
 	)
@@ -865,7 +865,7 @@
 		/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
 		/datum/material/diamond = SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/heart/cybernetic/anomalock
+	build_path = /obj/item/organ/heart/cybernetic/anomalock
 	category = list(
 		RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE
 	)
@@ -878,7 +878,7 @@
 	build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
 	construction_time = 4 SECONDS
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/lungs/cybernetic
+	build_path = /obj/item/organ/lungs/cybernetic
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
 	)
@@ -889,7 +889,7 @@
 	desc = "A pair of cybernetic lungs."
 	id = "cybernetic_lungs_tier2"
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/lungs/cybernetic/tier2
+	build_path = /obj/item/organ/lungs/cybernetic/tier2
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
 	)
@@ -901,7 +901,7 @@
 	id = "cybernetic_lungs_tier3"
 	construction_time = 5 SECONDS
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/lungs/cybernetic/tier3
+	build_path = /obj/item/organ/lungs/cybernetic/tier3
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
 	)
@@ -914,7 +914,7 @@
 	build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
 	construction_time = 4 SECONDS
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/stomach/cybernetic
+	build_path = /obj/item/organ/stomach/cybernetic
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
 	)
@@ -925,7 +925,7 @@
 	desc = "A cybernetic stomach."
 	id = "cybernetic_stomach_tier2"
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/stomach/cybernetic/tier2
+	build_path = /obj/item/organ/stomach/cybernetic/tier2
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
 	)
@@ -937,7 +937,7 @@
 	id = "cybernetic_stomach_tier3"
 	construction_time = 5 SECONDS
 	materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5)
-	build_path = /obj/item/organ/internal/stomach/cybernetic/tier3
+	build_path = /obj/item/organ/stomach/cybernetic/tier3
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
 	)
@@ -950,7 +950,7 @@
 	build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
 	construction_time = 3 SECONDS
 	materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*4)
-	build_path = /obj/item/organ/internal/ears/cybernetic
+	build_path = /obj/item/organ/ears/cybernetic
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
 	)
@@ -967,7 +967,7 @@
 		/datum/material/glass = SMALL_MATERIAL_AMOUNT*5,
 		/datum/material/silver = SMALL_MATERIAL_AMOUNT*5,
 	)
-	build_path = /obj/item/organ/internal/ears/cybernetic/upgraded
+	build_path = /obj/item/organ/ears/cybernetic/upgraded
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
 	)
@@ -984,7 +984,7 @@
 		/datum/material/glass = SMALL_MATERIAL_AMOUNT*5,
 		/datum/material/silver = SMALL_MATERIAL_AMOUNT*5,
 	)
-	build_path = /obj/item/organ/internal/ears/cybernetic/whisper
+	build_path = /obj/item/organ/ears/cybernetic/whisper
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
 	)
@@ -1001,7 +1001,7 @@
 		/datum/material/glass = SMALL_MATERIAL_AMOUNT*5,
 		/datum/material/silver = SMALL_MATERIAL_AMOUNT*5,
 	)
-	build_path = /obj/item/organ/internal/ears/cybernetic/xray
+	build_path = /obj/item/organ/ears/cybernetic/xray
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
 	)
@@ -1014,7 +1014,7 @@
 	build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
 	construction_time = 3 SECONDS
 	materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*4)
-	build_path = /obj/item/organ/internal/eyes/robotic/basic
+	build_path = /obj/item/organ/eyes/robotic/basic
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1
 	)
@@ -1023,13 +1023,13 @@
 /datum/design/cybernetic_eyes/moth
 	name = "Basic Cybernetic Moth Eyes"
 	id = "cybernetic_eyes_moth"
-	build_path = /obj/item/organ/internal/eyes/robotic/basic/moth
+	build_path = /obj/item/organ/eyes/robotic/basic/moth
 
 /datum/design/cybernetic_eyes/improved
 	name = "Cybernetic Eyes"
 	desc = "A pair of cybernetic eyes."
 	id = "cybernetic_eyes_improved"
-	build_path = /obj/item/organ/internal/eyes/robotic
+	build_path = /obj/item/organ/eyes/robotic
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_2
 	)
@@ -1038,7 +1038,7 @@
 /datum/design/cybernetic_eyes/improved/moth
 	name = "Cybernetic Moth Eyes"
 	id = "cybernetic_eyes_improved_moth"
-	build_path = /obj/item/organ/internal/eyes/robotic/moth
+	build_path = /obj/item/organ/eyes/robotic/moth
 
 /datum/design/cyberimp_welding
 	name = "Welding Shield Eyes"
@@ -1047,7 +1047,7 @@
 	build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
 	construction_time = 4 SECONDS
 	materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*6, /datum/material/glass = SMALL_MATERIAL_AMOUNT*4)
-	build_path = /obj/item/organ/internal/eyes/robotic/shield
+	build_path = /obj/item/organ/eyes/robotic/shield
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
 	)
@@ -1056,7 +1056,7 @@
 /datum/design/cyberimp_welding/moth
 	name = "Welding Shield Moth Eyes"
 	id = "ci-welding-moth"
-	build_path = /obj/item/organ/internal/eyes/robotic/shield/moth
+	build_path = /obj/item/organ/eyes/robotic/shield/moth
 
 /datum/design/cyberimp_gloweyes
 	name = "Luminescent Eyes"
@@ -1065,7 +1065,7 @@
 	build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
 	construction_time = 4 SECONDS
 	materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*6, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT)
-	build_path = /obj/item/organ/internal/eyes/robotic/glow
+	build_path = /obj/item/organ/eyes/robotic/glow
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_3
 	)
@@ -1074,7 +1074,7 @@
 /datum/design/cyberimp_gloweyes/moth
 	name = "Luminescent Moth Eyes"
 	id = "ci-gloweyes-moth"
-	build_path = /obj/item/organ/internal/eyes/robotic/glow/moth
+	build_path = /obj/item/organ/eyes/robotic/glow/moth
 
 /////////////////////
 ///Surgery Designs///
diff --git a/code/modules/spells/spell_types/self/lichdom.dm b/code/modules/spells/spell_types/self/lichdom.dm
index 19ad55d9eee..8aa86d63a1b 100644
--- a/code/modules/spells/spell_types/self/lichdom.dm
+++ b/code/modules/spells/spell_types/self/lichdom.dm
@@ -62,7 +62,7 @@
 
 	if(iscarbon(cast_on))
 		var/mob/living/carbon/carbon_cast_on = cast_on
-		var/obj/item/organ/internal/brain/lich_brain = carbon_cast_on.get_organ_slot(ORGAN_SLOT_BRAIN)
+		var/obj/item/organ/brain/lich_brain = carbon_cast_on.get_organ_slot(ORGAN_SLOT_BRAIN)
 		if(lich_brain) // This prevents MMIs being used to stop lich revives
 			lich_brain.organ_flags &= ~ORGAN_VITAL
 			lich_brain.decoy_override = TRUE
diff --git a/code/modules/spells/spell_types/self/splattercasting_spell.dm b/code/modules/spells/spell_types/self/splattercasting_spell.dm
index 184a2afab7c..e76f8e3c1b9 100644
--- a/code/modules/spells/spell_types/self/splattercasting_spell.dm
+++ b/code/modules/spells/spell_types/self/splattercasting_spell.dm
@@ -28,7 +28,7 @@
 		brings unimaginable momentary torment as your heart stops, and your skin grows cold. You are now \
 		merely a vessel for the arcane flow. Soon, all that is left is not pain, but hunger."))
 
-	cast_on.set_species(/datum/species/vampire)
+	cast_on.set_species(/datum/species/human/vampire)
 	cast_on.blood_volume = BLOOD_VOLUME_NORMAL ///for predictable blood total amounts when the spell is first cast.
 
 	cast_on.AddComponent(/datum/component/splattercasting)
diff --git a/code/modules/station_goals/vault_mutation.dm b/code/modules/station_goals/vault_mutation.dm
index b05bda05db7..33c46054158 100644
--- a/code/modules/station_goals/vault_mutation.dm
+++ b/code/modules/station_goals/vault_mutation.dm
@@ -109,7 +109,7 @@
 
 /datum/mutation/human/plasmocile/on_acquiring(mob/living/carbon/human/acquirer)
 	. = ..()
-	var/obj/item/organ/internal/lungs/improved_lungs = acquirer.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/improved_lungs = acquirer.get_organ_slot(ORGAN_SLOT_LUNGS)
 	ADD_TRAIT(owner, TRAIT_VIRUSIMMUNE, GENETIC_MUTATION)
 	if(improved_lungs)
 		apply_buff(improved_lungs)
@@ -118,7 +118,7 @@
 
 /datum/mutation/human/plasmocile/on_losing(mob/living/carbon/human/owner)
 	. = ..()
-	var/obj/item/organ/internal/lungs/improved_lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/improved_lungs = owner.get_organ_slot(ORGAN_SLOT_LUNGS)
 	REMOVE_TRAIT(owner, TRAIT_VIRUSIMMUNE, GENETIC_MUTATION)
 	UnregisterSignal(owner, COMSIG_CARBON_LOSE_ORGAN)
 	UnregisterSignal(owner, COMSIG_CARBON_GAIN_ORGAN)
@@ -128,19 +128,19 @@
 /datum/mutation/human/plasmocile/proc/remove_modification(mob/source, obj/item/organ/old_organ)
 	SIGNAL_HANDLER
 
-	if(istype(old_organ, /obj/item/organ/internal/lungs))
+	if(istype(old_organ, /obj/item/organ/lungs))
 		remove_buff(old_organ)
 
 /datum/mutation/human/plasmocile/proc/reapply_modification(mob/source, obj/item/organ/new_organ)
 	SIGNAL_HANDLER
 
-	if(istype(new_organ, /obj/item/organ/internal/lungs))
+	if(istype(new_organ, /obj/item/organ/lungs))
 		apply_buff(new_organ)
 
-/datum/mutation/human/plasmocile/proc/apply_buff(obj/item/organ/internal/lungs/our_lungs)
+/datum/mutation/human/plasmocile/proc/apply_buff(obj/item/organ/lungs/our_lungs)
 	our_lungs.plas_breath_dam_min *= 0
 	our_lungs.plas_breath_dam_max *= 0
 
-/datum/mutation/human/plasmocile/proc/remove_buff(obj/item/organ/internal/lungs/our_lungs)
+/datum/mutation/human/plasmocile/proc/remove_buff(obj/item/organ/lungs/our_lungs)
 	our_lungs.plas_breath_dam_min = initial(our_lungs.plas_breath_dam_min)
 	our_lungs.plas_breath_dam_max = initial(our_lungs.plas_breath_dam_max)
diff --git a/code/modules/surgery/advanced/bioware/cortex_folding.dm b/code/modules/surgery/advanced/bioware/cortex_folding.dm
index 2e20f0906ac..cd7d55f664c 100644
--- a/code/modules/surgery/advanced/bioware/cortex_folding.dm
+++ b/code/modules/surgery/advanced/bioware/cortex_folding.dm
@@ -30,7 +30,7 @@
 	)
 
 /datum/surgery/advanced/bioware/cortex_folding/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!target_brain)
 		return FALSE
 	return ..()
diff --git a/code/modules/surgery/advanced/bioware/cortex_imprint.dm b/code/modules/surgery/advanced/bioware/cortex_imprint.dm
index 27a75a26167..4f65f305df3 100644
--- a/code/modules/surgery/advanced/bioware/cortex_imprint.dm
+++ b/code/modules/surgery/advanced/bioware/cortex_imprint.dm
@@ -31,7 +31,7 @@
 	)
 
 /datum/surgery/advanced/bioware/cortex_imprint/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!target_brain)
 		return FALSE
 	return ..()
diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm
index 61a39618d5e..461234fb952 100644
--- a/code/modules/surgery/advanced/brainwashing.dm
+++ b/code/modules/surgery/advanced/brainwashing.dm
@@ -40,7 +40,7 @@
 /datum/surgery/advanced/brainwashing/can_start(mob/user, mob/living/carbon/target)
 	if(!..())
 		return FALSE
-	var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!target_brain)
 		return FALSE
 	return TRUE
diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm
index 5c528acae52..cd433d55981 100644
--- a/code/modules/surgery/advanced/lobotomy.dm
+++ b/code/modules/surgery/advanced/lobotomy.dm
@@ -28,7 +28,7 @@
 	. = ..()
 	if(!.)
 		return FALSE
-	var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!target_brain)
 		return FALSE
 	return TRUE
@@ -102,7 +102,7 @@
 	return ..()
 
 /datum/surgery_step/lobotomize/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
-	var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(target_brain)
 		display_results(
 			user,
diff --git a/code/modules/surgery/advanced/necrotic_revival.dm b/code/modules/surgery/advanced/necrotic_revival.dm
index 63350139e07..a4512e9378e 100644
--- a/code/modules/surgery/advanced/necrotic_revival.dm
+++ b/code/modules/surgery/advanced/necrotic_revival.dm
@@ -13,7 +13,7 @@
 
 /datum/surgery/advanced/necrotic_revival/can_start(mob/user, mob/living/carbon/target)
 	. = ..()
-	var/obj/item/organ/internal/zombie_infection/z_infection = target.get_organ_slot(ORGAN_SLOT_ZOMBIE)
+	var/obj/item/organ/zombie_infection/z_infection = target.get_organ_slot(ORGAN_SLOT_ZOMBIE)
 	if(z_infection)
 		return FALSE
 
@@ -46,6 +46,6 @@
 	)
 	display_pain(target, "Your head goes totally numb for a moment, the pain is overwhelming!")
 	if(!target.get_organ_slot(ORGAN_SLOT_ZOMBIE))
-		var/obj/item/organ/internal/zombie_infection/z_infection = new()
+		var/obj/item/organ/zombie_infection/z_infection = new()
 		z_infection.Insert(target)
 	return ..()
diff --git a/code/modules/surgery/advanced/pacification.dm b/code/modules/surgery/advanced/pacification.dm
index 6c2d990cb96..899bd6a436c 100644
--- a/code/modules/surgery/advanced/pacification.dm
+++ b/code/modules/surgery/advanced/pacification.dm
@@ -26,7 +26,7 @@
 
 /datum/surgery/advanced/pacify/can_start(mob/user, mob/living/carbon/target)
 	. = ..()
-	var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!target_brain)
 		return FALSE
 
diff --git a/code/modules/surgery/advanced/wingreconstruction.dm b/code/modules/surgery/advanced/wingreconstruction.dm
index 3234b61e1e0..a3931dd4e5e 100644
--- a/code/modules/surgery/advanced/wingreconstruction.dm
+++ b/code/modules/surgery/advanced/wingreconstruction.dm
@@ -12,8 +12,8 @@
 /datum/surgery/advanced/wing_reconstruction/can_start(mob/user, mob/living/carbon/target)
 	if(!istype(target))
 		return FALSE
-	var/obj/item/organ/external/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
-	if(!istype(wings, /obj/item/organ/external/wings/moth))
+	var/obj/item/organ/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+	if(!istype(wings, /obj/item/organ/wings/moth))
 		return FALSE
 	return ..() && wings?.burnt
 
@@ -48,12 +48,12 @@
 			span_notice("[user] completes the surgery on [target]'s wings."),
 		)
 		display_pain(target, "You can feel your wings again!")
-		var/obj/item/organ/external/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
-		if(istype(wings, /obj/item/organ/external/wings/moth)) //make sure we only heal moth wings.
+		var/obj/item/organ/wings/moth/wings = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+		if(istype(wings, /obj/item/organ/wings/moth)) //make sure we only heal moth wings.
 			wings.heal_wings(user, ALL)
 
-		var/obj/item/organ/external/antennae/antennae = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_ANTENNAE) //i mean we might aswell heal their antennae too
-		antennae?.heal_antennae()
+		var/obj/item/organ/antennae/antennae = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_ANTENNAE) //i mean we might aswell heal their antennae too
+		antennae?.heal_antennae(user, ALL)
 
 		human_target.update_body_parts()
 	return ..()
diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm
index 7492ad8173f..12a19ae8f22 100644
--- a/code/modules/surgery/bodyparts/head.dm
+++ b/code/modules/surgery/bodyparts/head.dm
@@ -113,7 +113,7 @@
 /obj/item/bodypart/head/examine(mob/user)
 	. = ..()
 	if(show_organs_on_examine && IS_ORGANIC_LIMB(src))
-		var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in src
+		var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in src
 		if(!brain)
 			. += span_info("The brain has been removed from [src].")
 		else if(brain.suicided || (brain.brainmob && HAS_TRAIT(brain.brainmob, TRAIT_SUICIDED)))
@@ -130,13 +130,13 @@
 		else
 			. += span_info("It's completely lifeless.")
 
-		if(!(locate(/obj/item/organ/internal/eyes) in src))
+		if(!(locate(/obj/item/organ/eyes) in src))
 			. += span_info("[real_name]'s eyes have been removed.")
 
-		if(!(locate(/obj/item/organ/internal/ears) in src))
+		if(!(locate(/obj/item/organ/ears) in src))
 			. += span_info("[real_name]'s ears have been removed.")
 
-		if(!(locate(/obj/item/organ/internal/tongue) in src))
+		if(!(locate(/obj/item/organ/tongue) in src))
 			. += span_info("[real_name]'s tongue has been removed.")
 
 /obj/item/bodypart/head/can_dismember(obj/item/item)
@@ -151,7 +151,7 @@
 /obj/item/bodypart/head/drop_organs(mob/user, violent_removal)
 	if(user)
 		user.visible_message(span_warning("[user] saws [src] open and pulls out a brain!"), span_notice("You saw [src] open and pull out a brain."))
-	var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in src
+	var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in src
 	if(brain && violent_removal && prob(90)) //ghetto surgery can damage the brain.
 		to_chat(user, span_warning("[brain] was damaged in the process!"))
 		brain.set_organ_damage(brain.maxHealth)
@@ -176,7 +176,7 @@
 	. += get_hair_and_lips_icon(dropped)
 	// We need to get the eyes if we are dropped (ugh)
 	if(dropped)
-		var/obj/item/organ/internal/eyes/eyes = locate(/obj/item/organ/internal/eyes) in src
+		var/obj/item/organ/eyes/eyes = locate(/obj/item/organ/eyes) in src
 		// This is a bit of copy/paste code from eyes.dm:generate_body_overlay
 		if(eyes?.eye_icon_state && (head_flags & HEAD_EYESPRITES))
 			var/image/eye_left = image('icons/mob/human/human_face.dmi', "[eyes.eye_icon_state]_l", -BODY_LAYER, SOUTH)
diff --git a/code/modules/surgery/bodyparts/head_hair_and_lips.dm b/code/modules/surgery/bodyparts/head_hair_and_lips.dm
index d6eaa3ec731..d553f94076f 100644
--- a/code/modules/surgery/bodyparts/head_hair_and_lips.dm
+++ b/code/modules/surgery/bodyparts/head_hair_and_lips.dm
@@ -37,12 +37,12 @@
 		else
 			show_eyeless = FALSE
 	else
-		if(!hair_hidden && !(locate(/obj/item/organ/internal/brain) in src) && !istype(src, /obj/item/bodypart/head/synth)) // NOVA EDIT CHANGE - ORIGINAL: if(!hair_hidden && !(locate(/obj/item/organ/internal/brain) in src))
+		if(!hair_hidden && !(locate(/obj/item/organ/brain) in src) && !istype(src, /obj/item/bodypart/head/synth)) // NOVA EDIT CHANGE - ORIGINAL: if(!hair_hidden && !(locate(/obj/item/organ/brain) in src))
 			show_debrained = TRUE
 		else
 			show_debrained = FALSE
 
-		if(!(locate(/obj/item/organ/internal/eyes) in src))
+		if(!(locate(/obj/item/organ/eyes) in src))
 			show_eyeless = TRUE
 		else
 			show_eyeless = FALSE
diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm
index c94bd0db701..25f66f40af9 100644
--- a/code/modules/surgery/bodyparts/parts.dm
+++ b/code/modules/surgery/bodyparts/parts.dm
@@ -35,7 +35,7 @@
 	/// Offset to apply to equipment worn on the neck
 	var/datum/worn_feature_offset/worn_neck_offset
 	/// Which functional (i.e. flightpotion) wing types (if any) does this bodypart support? If count is >1 a radial menu is used to choose between all icons in list
-	var/list/wing_types = list(/obj/item/organ/external/wings/functional/angel)
+	var/list/wing_types = list(/obj/item/organ/wings/functional/angel)
 
 /obj/item/bodypart/chest/forced_removal(dismembered, special, move_to_floor)
 	var/mob/living/carbon/old_owner = owner
@@ -74,7 +74,7 @@
 	if(!ishuman(owner))
 		return null
 	var/mob/living/carbon/human/human_owner = owner
-	var/obj/item/organ/external/tail/tail = human_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+	var/obj/item/organ/tail/tail = human_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 	if(tail)
 		return tail.get_butt_sprite()
 
diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm
index 7bdb2e7e613..c61a3a26169 100644
--- a/code/modules/surgery/bodyparts/robot_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm
@@ -212,7 +212,7 @@
 
 	robotic_emp_paralyze_damage_percent_threshold = 0.6
 
-	wing_types = list(/obj/item/organ/external/wings/functional/robotic)
+	wing_types = list(/obj/item/organ/wings/functional/robotic)
 
 	var/wired = FALSE
 	var/obj/item/stock_parts/power_store/cell = null
diff --git a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm
index d5fa9d1cfcb..e4477c4c1e5 100644
--- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm
@@ -10,7 +10,7 @@
 	icon_greyscale = 'icons/mob/human/species/lizard/bodyparts.dmi'
 	limb_id = SPECIES_LIZARD
 	is_dimorphic = TRUE
-	wing_types = list(/obj/item/organ/external/wings/functional/dragon)
+	wing_types = list(/obj/item/organ/wings/functional/dragon)
 
 /obj/item/bodypart/chest/lizard/get_butt_sprite()
 	return icon('icons/mob/butts.dmi', BUTT_SPRITE_LIZARD)
diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
index 68aac78cb68..a8746c1cdab 100644
--- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm
@@ -96,7 +96,7 @@
 	is_dimorphic = TRUE
 	dmg_overlay_type = null
 	burn_modifier = 0.5 // = 1/2x generic burn damage
-	wing_types = list(/obj/item/organ/external/wings/functional/slime)
+	wing_types = list(/obj/item/organ/wings/functional/slime)
 
 /obj/item/bodypart/chest/jelly/get_butt_sprite()
 	return icon('icons/mob/butts.dmi', BUTT_SPRITE_SLIME)
@@ -260,7 +260,7 @@
 	limb_id = SPECIES_FLYPERSON
 	is_dimorphic = TRUE
 	should_draw_greyscale = FALSE
-	wing_types = list(/obj/item/organ/external/wings/functional/fly)
+	wing_types = list(/obj/item/organ/wings/functional/fly)
 	bodypart_traits = list(TRAIT_TACKLING_FRAIL_ATTACKER)
 
 /obj/item/bodypart/arm/left/fly
@@ -337,7 +337,7 @@
 	should_draw_greyscale = FALSE
 	dmg_overlay_type = null
 	bodypart_flags = BODYPART_UNHUSKABLE
-	wing_types = list(/obj/item/organ/external/wings/functional/skeleton)
+	wing_types = list(/obj/item/organ/wings/functional/skeleton)
 
 /obj/item/bodypart/arm/left/skeleton
 	biological_state = (BIO_BONE|BIO_JOINTED)
diff --git a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm
index 72e2d478c4a..cf6452a0d01 100644
--- a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm
@@ -17,7 +17,7 @@
 	limb_id = SPECIES_MOTH
 	is_dimorphic = TRUE
 	should_draw_greyscale = FALSE
-	wing_types = list(/obj/item/organ/external/wings/functional/moth/megamoth, /obj/item/organ/external/wings/functional/moth/mothra)
+	wing_types = list(/obj/item/organ/wings/functional/moth/megamoth, /obj/item/organ/wings/functional/moth/mothra)
 	bodypart_traits = list(TRAIT_TACKLING_WINGED_ATTACKER)
 
 /obj/item/bodypart/chest/moth/get_butt_sprite()
diff --git a/code/modules/surgery/coronary_bypass.dm b/code/modules/surgery/coronary_bypass.dm
index 52b0e6099ea..36f70ac931e 100644
--- a/code/modules/surgery/coronary_bypass.dm
+++ b/code/modules/surgery/coronary_bypass.dm
@@ -26,7 +26,7 @@
 	)
 
 /datum/surgery/coronary_bypass/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART)
 	if(isnull(target_heart) || target_heart.damage < 60 || target_heart.operated)
 		return FALSE
 	return ..()
@@ -134,7 +134,7 @@
 
 /datum/surgery_step/coronary_bypass/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
 	target.setOrganLoss(ORGAN_SLOT_HEART, 60)
-	var/obj/item/organ/internal/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/target_heart = target.get_organ_slot(ORGAN_SLOT_HEART)
 	if(target_heart) //slightly worrying if we lost our heart mid-operation, but that's life
 		target_heart.operated = TRUE
 		if(target_heart.organ_flags & ORGAN_EMP) //If our organ is failing due to an EMP, fix that
diff --git a/code/modules/surgery/ear_surgery.dm b/code/modules/surgery/ear_surgery.dm
index 4333b00913b..9e363e2ae9b 100644
--- a/code/modules/surgery/ear_surgery.dm
+++ b/code/modules/surgery/ear_surgery.dm
@@ -36,7 +36,7 @@
 	display_pain(target, "You feel a dizzying pain in your head!")
 
 /datum/surgery_step/fix_ears/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
-	var/obj/item/organ/internal/ears/target_ears = target.get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/target_ears = target.get_organ_slot(ORGAN_SLOT_EARS)
 	display_results(
 		user,
 		target,
@@ -50,7 +50,7 @@
 	return ..()
 
 /datum/surgery_step/fix_ears/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
-	if(target.get_organ_by_type(/obj/item/organ/internal/brain))
+	if(target.get_organ_by_type(/obj/item/organ/brain))
 		display_results(
 			user,
 			target,
diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm
index fb759baca87..3a0f7140091 100644
--- a/code/modules/surgery/eye_surgery.dm
+++ b/code/modules/surgery/eye_surgery.dm
@@ -34,7 +34,7 @@
 	display_pain(target, "You feel a stabbing pain in your eyes!")
 
 /datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
-	var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
 	user.visible_message(span_notice("[user] successfully fixes [target]'s eyes!"), span_notice("You succeed in fixing [target]'s eyes."))
 	display_results(
 		user,
@@ -50,7 +50,7 @@
 	return ..()
 
 /datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
-	if(target.get_organ_by_type(/obj/item/organ/internal/brain))
+	if(target.get_organ_by_type(/obj/item/organ/brain))
 		display_results(
 			user,
 			target,
diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm
index bdcbfc60ac8..41c1141c412 100644
--- a/code/modules/surgery/gastrectomy.dm
+++ b/code/modules/surgery/gastrectomy.dm
@@ -27,7 +27,7 @@
 	)
 
 /datum/surgery/gastrectomy/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(isnull(target_stomach) || target_stomach.damage < 50 || target_stomach.operated)
 		return FALSE
 	return ..()
@@ -70,11 +70,11 @@
 
 /datum/surgery_step/gastrectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
 	var/mob/living/carbon/human/target_human = target
-	var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
 	target_human.setOrganLoss(ORGAN_SLOT_STOMACH, 20) // Stomachs have a threshold for being able to even digest food, so I might tweak this number
 	if(target_stomach)
 		//NOVA EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople.
-		if(istype(target_stomach, /obj/item/organ/internal/stomach/slime))
+		if(istype(target_stomach, /obj/item/organ/stomach/slime))
 			addtimer(VARSET_CALLBACK(target_stomach, operated, FALSE), 30 SECONDS)
 		//NOVA EDIT ADDITION END
 		target_stomach.operated = TRUE
diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm
index 82b1eb6328f..c7aa986ace7 100644
--- a/code/modules/surgery/hepatectomy.dm
+++ b/code/modules/surgery/hepatectomy.dm
@@ -26,7 +26,7 @@
 	)
 
 /datum/surgery/hepatectomy/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(isnull(target_liver) || target_liver.damage < 50 || target_liver.operated)
 		return FALSE
 	return ..()
@@ -69,11 +69,11 @@
 
 /datum/surgery_step/hepatectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
 	var/mob/living/carbon/human/human_target = target
-	var/obj/item/organ/internal/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/target_liver = target.get_organ_slot(ORGAN_SLOT_LIVER)
 	human_target.setOrganLoss(ORGAN_SLOT_LIVER, 10) //not bad, not great
 	if(target_liver)
 		//NOVA EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople.
-		if(istype(target_liver, /obj/item/organ/internal/liver/slime))
+		if(istype(target_liver, /obj/item/organ/liver/slime))
 			addtimer(VARSET_CALLBACK(target_liver, operated, FALSE), 30 SECONDS)
 		//NOVA EDIT ADDITION END
 		target_liver.operated = TRUE
diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm
index 2876d9763b6..f49491e5d0b 100644
--- a/code/modules/surgery/lobectomy.dm
+++ b/code/modules/surgery/lobectomy.dm
@@ -24,7 +24,7 @@
 	)
 
 /datum/surgery/lobectomy/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(isnull(target_lungs) || target_lungs.damage < 60 || target_lungs.operated)
 		return FALSE
 	return ..()
@@ -67,11 +67,11 @@
 /datum/surgery_step/lobectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
 	if(ishuman(target))
 		var/mob/living/carbon/human/human_target = target
-		var/obj/item/organ/internal/lungs/target_lungs = human_target.get_organ_slot(ORGAN_SLOT_LUNGS)
+		var/obj/item/organ/lungs/target_lungs = human_target.get_organ_slot(ORGAN_SLOT_LUNGS)
 		human_target.setOrganLoss(ORGAN_SLOT_LUNGS, 60)
 		if(target_lungs)
 			//NOVA EDIT ADDITION BEGIN - This is so that you can do organ surgeries multiple times on slimepeople.
-			if(istype(target_lungs, /obj/item/organ/internal/lungs/slime))
+			if(istype(target_lungs, /obj/item/organ/lungs/slime))
 				addtimer(VARSET_CALLBACK(target_lungs, operated, FALSE), 30 SECONDS)
 			//NOVA EDIT ADDITION END
 			target_lungs.operated = TRUE
diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm
index 74f47a948de..9937398872f 100644
--- a/code/modules/surgery/organ_manipulation.dm
+++ b/code/modules/surgery/organ_manipulation.dm
@@ -309,7 +309,7 @@
 
 ///only operate on internal organs
 /datum/surgery_step/manipulate_organs/internal/can_use_organ(mob/user, obj/item/organ/organ)
-	return isinternalorgan(organ) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return isinternalorgan(organ)
+	return !(organ.organ_flags & ORGAN_EXTERNAL) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return !(organ.organ_flags & ORGAN_EXTERNAL)
 
 ///prosthetic surgery gives full effectiveness to crowbars (and hemostats)
 /datum/surgery_step/manipulate_organs/internal/mechanic
@@ -323,7 +323,7 @@
 
 ///Only operate on external organs
 /datum/surgery_step/manipulate_organs/external/can_use_organ(mob/user, obj/item/organ/organ)
-	return isexternalorgan(organ) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return isexternalorgan(organ)
+	return (organ.organ_flags & ORGAN_EXTERNAL) && !(organ.organ_flags & ORGAN_UNREMOVABLE) // NOVA EDIT - Don't show unremovable organs - ORIGINAL: return (organ.organ_flags & ORGAN_EXTERNAL)
 
 ///prosthetic surgery gives full effectiveness to crowbars (and hemostats)
 /datum/surgery_step/manipulate_organs/external/mechanic
diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm
index 4d5114ad88a..e2f05a9ed56 100644
--- a/code/modules/surgery/organs/_organ.dm
+++ b/code/modules/surgery/organs/_organ.dm
@@ -249,20 +249,20 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
 		set_heartattack(FALSE)
 
 		// Ears have aditional vаr "deaf", need to update it too
-		var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+		var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
 		ears?.adjustEarDamage(0, -INFINITY) // full heal ears deafness
 
 		return
 
 	// Default organ fixing handling
 	// May result in kinda cursed stuff for mobs which don't need these organs
-	var/obj/item/organ/internal/lungs/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/lungs = get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(!lungs)
 		lungs = new()
 		lungs.Insert(src)
 	lungs.set_organ_damage(0)
 
-	var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
 	if(heart)
 		set_heartattack(FALSE)
 	else
@@ -270,19 +270,19 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
 		heart.Insert(src)
 	heart.set_organ_damage(0)
 
-	var/obj/item/organ/internal/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!tongue)
 		tongue = new()
 		tongue.Insert(src)
 	tongue.set_organ_damage(0)
 
-	var/obj/item/organ/internal/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = get_organ_slot(ORGAN_SLOT_EYES)
 	if(!eyes)
 		eyes = new()
 		eyes.Insert(src)
 	eyes.set_organ_damage(0)
 
-	var/obj/item/organ/internal/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = get_organ_slot(ORGAN_SLOT_EARS)
 	if(!ears)
 		ears = new()
 		ears.Insert(src)
diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm
index b4a939e9a95..83fb98e4844 100644
--- a/code/modules/surgery/organs/autosurgeon.dm
+++ b/code/modules/surgery/organs/autosurgeon.dm
@@ -138,7 +138,7 @@
 	name = "autosurgeon"
 	desc = "A single use autosurgeon that contains a medical heads-up display augment. A screwdriver can be used to remove it, but implants can't be placed back in."
 	uses = 1
-	starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/medical
+	starting_organ = /obj/item/organ/cyberimp/eyes/hud/medical
 
 
 /obj/item/autosurgeon/syndicate
@@ -154,28 +154,28 @@
 /obj/item/autosurgeon/syndicate/laser_arm
 	desc = "A single use autosurgeon that contains a combat arms-up laser augment. A screwdriver can be used to remove it, but implants can't be placed back in."
 	uses = 1
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/gun/laser
+	starting_organ = /obj/item/organ/cyberimp/arm/gun/laser
 
 /obj/item/autosurgeon/syndicate/thermal_eyes
-	starting_organ = /obj/item/organ/internal/eyes/robotic/thermals
+	starting_organ = /obj/item/organ/eyes/robotic/thermals
 
 /obj/item/autosurgeon/syndicate/thermal_eyes/single_use
 	uses = 1
 
 /obj/item/autosurgeon/syndicate/xray_eyes
-	starting_organ = /obj/item/organ/internal/eyes/robotic/xray
+	starting_organ = /obj/item/organ/eyes/robotic/xray
 
 /obj/item/autosurgeon/syndicate/xray_eyes/single_use
 	uses = 1
 
 /obj/item/autosurgeon/syndicate/anti_stun
-	starting_organ = /obj/item/organ/internal/cyberimp/brain/anti_stun
+	starting_organ = /obj/item/organ/cyberimp/brain/anti_stun
 
 /obj/item/autosurgeon/syndicate/anti_stun/single_use
 	uses = 1
 
 /obj/item/autosurgeon/syndicate/reviver
-	starting_organ = /obj/item/organ/internal/cyberimp/chest/reviver
+	starting_organ = /obj/item/organ/cyberimp/chest/reviver
 
 /obj/item/autosurgeon/syndicate/reviver/single_use
 	uses = 1
@@ -183,14 +183,14 @@
 /obj/item/autosurgeon/syndicate/commsagent
 	desc = "A device that automatically - painfully - inserts an implant. It seems someone's specially \
 	modified this one to only insert... tongues. Horrifying."
-	starting_organ = /obj/item/organ/internal/tongue
+	starting_organ = /obj/item/organ/tongue
 
 /obj/item/autosurgeon/syndicate/commsagent/Initialize(mapload)
 	. = ..()
-	organ_whitelist += /obj/item/organ/internal/tongue
+	organ_whitelist += /obj/item/organ/tongue
 
 /obj/item/autosurgeon/syndicate/emaggedsurgerytoolset
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/surgery/emagged
+	starting_organ = /obj/item/organ/cyberimp/arm/surgery/emagged
 
 /obj/item/autosurgeon/syndicate/emaggedsurgerytoolset/single_use
 	uses = 1
@@ -198,4 +198,4 @@
 /obj/item/autosurgeon/syndicate/contraband_sechud
 	desc = "Contains a contraband SecHUD implant, undetectable by health scanners."
 	uses = 1
-	starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate
+	starting_organ = /obj/item/organ/cyberimp/eyes/hud/security/syndicate
diff --git a/code/modules/surgery/organs/external/_visual_organs.dm b/code/modules/surgery/organs/external/_visual_organs.dm
index e5f2a40521e..dc143e4b4dc 100644
--- a/code/modules/surgery/organs/external/_visual_organs.dm
+++ b/code/modules/surgery/organs/external/_visual_organs.dm
@@ -105,7 +105,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 			. += bodypart_overlay.get_overlay(external_layer, bodypart_owner)
 
 ///The horns of a lizard!
-/obj/item/organ/external/horns
+/obj/item/organ/horns
 	name = "horns"
 	desc = "Why do lizards even have horns? Well, this one obviously doesn't."
 	icon_state = "horns"
@@ -119,9 +119,12 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 
 	bodypart_overlay = /datum/bodypart_overlay/mutant/horns
 
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
 /datum/bodypart_overlay/mutant/horns
 	layers = EXTERNAL_ADJACENT
 	feature_key = "horns"
+	dyable = TRUE
 
 /datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(mob/living/carbon/human/human)
 	if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR))
@@ -133,7 +136,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 	return SSaccessories.sprite_accessories["horns"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.horns_list
 
 ///The frills of a lizard (like weird fin ears)
-/obj/item/organ/external/frills
+/obj/item/organ/frills
 	name = "frills"
 	desc = "Ear-like external organs often seen on aquatic reptillians."
 	icon_state = "frills"
@@ -147,6 +150,8 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 
 	bodypart_overlay = /datum/bodypart_overlay/mutant/frills
 
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
 /datum/bodypart_overlay/mutant/frills
 	layers = EXTERNAL_ADJACENT
 	feature_key = "frills"
@@ -160,7 +165,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 	return SSaccessories.sprite_accessories["frills"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.frills_list
 
 ///Guess what part of the lizard this is?
-/obj/item/organ/external/snout
+/obj/item/organ/snout
 	name = "snout" // NOVA EDIT - ORIGINAL: name = "lizard snout"
 	desc = "Take a closer look at that snout!"
 	icon_state = "snout"
@@ -176,6 +181,8 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 
 	bodypart_overlay = /datum/bodypart_overlay/mutant/snout
 
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
 /datum/bodypart_overlay/mutant/snout
 	layers = EXTERNAL_ADJACENT
 	feature_key = "snout"
@@ -189,7 +196,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 	return SSaccessories.sprite_accessories["snout"] // NOVA EDIT - Customization - ORIGINAL : return SSaccessories.snouts_list
 
 ///A moth's antennae
-/obj/item/organ/external/antennae
+/obj/item/organ/antennae
 	name = "moth antennae"
 	desc = "A moths antennae. What is it telling them? What are they sensing?"
 	icon_state = "antennae"
@@ -203,24 +210,26 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 
 	bodypart_overlay = /datum/bodypart_overlay/mutant/antennae
 
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
 	///Are we burned?
 	var/burnt = FALSE
 	///Store our old datum here for if our antennae are healed
 	var/original_sprite_datum
 
-/obj/item/organ/external/antennae/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/antennae/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	. = ..()
 
 	RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_antennae))
 	RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_antennae))
 
-/obj/item/organ/external/antennae/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/antennae/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 
 	UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL))
 
 ///check if our antennae can burn off ;_;
-/obj/item/organ/external/antennae/proc/try_burn_antennae(mob/living/carbon/human/human)
+/obj/item/organ/antennae/proc/try_burn_antennae(mob/living/carbon/human/human)
 	SIGNAL_HANDLER
 
 	if(!burnt && human.bodytemperature >= 800 && human.fire_stacks > 0) //do not go into the extremely hot light. you will not survive
@@ -230,13 +239,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 		human.update_body_parts()
 
 ///Burn our antennae off ;_;
-/obj/item/organ/external/antennae/proc/burn_antennae()
+/obj/item/organ/antennae/proc/burn_antennae()
 	var/datum/bodypart_overlay/mutant/antennae/antennae = bodypart_overlay
 	antennae.burnt = TRUE
 	burnt = TRUE
 
 ///heal our antennae back up!!
-/obj/item/organ/external/antennae/proc/heal_antennae(datum/source, heal_flags)
+/obj/item/organ/antennae/proc/heal_antennae(datum/source, heal_flags)
 	SIGNAL_HANDLER
 
 	if(!burnt)
@@ -251,6 +260,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 /datum/bodypart_overlay/mutant/antennae
 	layers = EXTERNAL_FRONT | EXTERNAL_BEHIND
 	feature_key = "moth_antennae"
+	dyable = TRUE
 	///Accessory datum of the burn sprite
 	var/datum/sprite_accessory/burn_datum = /datum/sprite_accessory/moth_antennae/burnt_off
 	///Are we burned? If so we draw differently
@@ -273,7 +283,7 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 	return FALSE
 
 ///The leafy hair of a podperson
-/obj/item/organ/external/pod_hair
+/obj/item/organ/pod_hair
 	name = "podperson hair"
 	desc = "Base for many-o-salads."
 
@@ -288,10 +298,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 
 	bodypart_overlay = /datum/bodypart_overlay/mutant/pod_hair
 
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
 ///Podperson bodypart overlay, with special coloring functionality to render the flowers in the inverse color
 /datum/bodypart_overlay/mutant/pod_hair
 	layers = EXTERNAL_FRONT|EXTERNAL_ADJACENT
 	feature_key = "pod_hair"
+	dyable = TRUE
 
 	///This layer will be colored differently than the rest of the organ. So we can get differently colored flowers or something
 	var/color_swapped_layer = EXTERNAL_FRONT
@@ -305,8 +318,9 @@ Unlike normal organs, we're actually inside a persons limbs at all times
 	if(draw_layer != bitflag_to_layer(color_swapped_layer))
 		return ..()
 
-	if(draw_color) // can someone explain to me why draw_color is allowed to EVER BE AN EMPTY STRING
-		var/list/rgb_list = rgb2num(draw_color)
+	var/color_to_use = dye_color || draw_color
+	if(color_to_use) // can someone explain to me why draw_color is allowed to EVER BE AN EMPTY STRING
+		var/list/rgb_list = rgb2num(color_to_use)
 		overlay.color = rgb(color_inverse_base - rgb_list[1], color_inverse_base - rgb_list[2], color_inverse_base - rgb_list[3]) //inversa da color
 	else
 		overlay.color = null
diff --git a/code/modules/surgery/organs/external/spines.dm b/code/modules/surgery/organs/external/spines.dm
index a6653925e5e..2dae21acc12 100644
--- a/code/modules/surgery/organs/external/spines.dm
+++ b/code/modules/surgery/organs/external/spines.dm
@@ -1,5 +1,5 @@
 ///A lizards spines (those things on their back), but also including tail spines (gasp)
-/obj/item/organ/external/spines
+/obj/item/organ/spines
 	name = "lizard spines"
 	desc = "Not an actual spine, obviously."
 	icon_state = "spines"
@@ -14,15 +14,17 @@
 
 	bodypart_overlay = /datum/bodypart_overlay/mutant/spines
 
-/obj/item/organ/external/spines/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
+/obj/item/organ/spines/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	// If we have a tail, attempt to add a tail spines overlay
-	var/obj/item/organ/external/tail/our_tail = receiver.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+	var/obj/item/organ/tail/our_tail = receiver.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 	our_tail?.try_insert_tail_spines(our_tail.bodypart_owner)
 	return ..()
 
-/obj/item/organ/external/spines/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/spines/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
 	// If we have a tail, remove any tail spines overlay
-	var/obj/item/organ/external/tail/our_tail = organ_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+	var/obj/item/organ/tail/our_tail = organ_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 	our_tail?.remove_tail_spines(our_tail.bodypart_owner)
 	return ..()
 
@@ -30,6 +32,7 @@
 /datum/bodypart_overlay/mutant/spines
 	layers = EXTERNAL_ADJACENT|EXTERNAL_BEHIND
 	feature_key = "spines"
+	dyable = TRUE
 
 /datum/bodypart_overlay/mutant/spines/get_global_feature_list()
 	return SSaccessories.sprite_accessories["spines"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.spines_list
@@ -38,3 +41,8 @@
 	. = ..()
 	if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT))
 		return FALSE
+
+/datum/bodypart_overlay/mutant/spines/set_dye_color(new_color, obj/item/organ/tail/organ)
+	var/obj/item/organ/tail/tail = organ?.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+	tail?.tail_spines_overlay?.set_dye_color(new_color, organ)
+	return ..()
diff --git a/code/modules/surgery/organs/external/tails.dm b/code/modules/surgery/organs/external/tails.dm
index 4149acc8eba..99856a0b3d8 100644
--- a/code/modules/surgery/organs/external/tails.dm
+++ b/code/modules/surgery/organs/external/tails.dm
@@ -1,5 +1,5 @@
 ///Tail parent, it doesn't do very much.
-/obj/item/organ/external/tail
+/obj/item/organ/tail
 	name = "tail"
 	desc = "A severed tail. What did you cut this off of?"
 	icon_state = "severedtail"
@@ -13,6 +13,8 @@
 	// defaults to cat, but the parent type shouldn't be created regardless
 	bodypart_overlay = /datum/bodypart_overlay/mutant/tail/cat
 
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
 	///Does this tail have a wagging sprite, and is it currently wagging?
 	var/wag_flags = NONE
 	///The original owner of this tail
@@ -20,7 +22,7 @@
 	///The overlay for tail spines, if any
 	var/datum/bodypart_overlay/mutant/tail_spines/tail_spines_overlay
 
-/obj/item/organ/external/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	. = ..()
 	if(.)
 		receiver.clear_mood_event("tail_lost")
@@ -39,18 +41,18 @@
 		else
 			receiver.add_mood_event("tail_regained", /datum/mood_event/tail_regained_wrong)
 
-/obj/item/organ/external/tail/on_bodypart_insert(obj/item/bodypart/bodypart)
-	var/obj/item/organ/external/spines/our_spines = bodypart.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES)
+/obj/item/organ/tail/on_bodypart_insert(obj/item/bodypart/bodypart)
+	var/obj/item/organ/spines/our_spines = bodypart.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_SPINES)
 	if(our_spines)
 		try_insert_tail_spines(bodypart)
 	return ..()
 
-/obj/item/organ/external/tail/on_bodypart_remove(obj/item/bodypart/bodypart)
+/obj/item/organ/tail/on_bodypart_remove(obj/item/bodypart/bodypart)
 	remove_tail_spines(bodypart)
 	return ..()
 
 /// If the owner has spines and an appropriate overlay exists, add a tail spines overlay.
-/obj/item/organ/external/tail/proc/try_insert_tail_spines(obj/item/bodypart/bodypart)
+/obj/item/organ/tail/proc/try_insert_tail_spines(obj/item/bodypart/bodypart)
 	// Don't insert another overlay if there already is one.
 	if(tail_spines_overlay)
 		return
@@ -73,13 +75,13 @@
 	bodypart.add_bodypart_overlay(tail_spines_overlay)
 
 /// If we have a tail spines overlay, delete it
-/obj/item/organ/external/tail/proc/remove_tail_spines(obj/item/bodypart/bodypart)
+/obj/item/organ/tail/proc/remove_tail_spines(obj/item/bodypart/bodypart)
 	if(!tail_spines_overlay)
 		return
 	bodypart.remove_bodypart_overlay(tail_spines_overlay)
 	QDEL_NULL(tail_spines_overlay)
 
-/obj/item/organ/external/tail/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/tail/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 
 	if(wag_flags & WAG_WAGGING)
@@ -94,7 +96,7 @@
 ///We need some special behaviour for accessories, wrapped here so we can easily add more interactions later
 ///Accepts an optional timeout after which we remove the tail wagging
 ///Returns false if the wag worked, true otherwise
-/obj/item/organ/external/tail/proc/start_wag(mob/living/carbon/organ_owner, stop_after = INFINITY)
+/obj/item/organ/tail/proc/start_wag(mob/living/carbon/organ_owner, stop_after = INFINITY)
 	if(wag_flags & WAG_WAGGING || !(wag_flags & WAG_ABLE)) // we are already wagging
 		return FALSE
 	if(organ_owner.stat == DEAD || organ_owner != owner) // no wagging when owner is dead or tail has been disembodied
@@ -112,13 +114,13 @@
 	RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(owner_died))
 	return TRUE
 
-/obj/item/organ/external/tail/proc/owner_died(mob/living/carbon/organ_owner) // Resisting the urge to replace owner with daddy
+/obj/item/organ/tail/proc/owner_died(mob/living/carbon/organ_owner) // Resisting the urge to replace owner with daddy
 	SIGNAL_HANDLER
 	stop_wag(organ_owner)
 
 ///We need some special behaviour for accessories, wrapped here so we can easily add more interactions later
 ///Returns false if the wag stopping worked, true otherwise
-/obj/item/organ/external/tail/proc/stop_wag(mob/living/carbon/organ_owner)
+/obj/item/organ/tail/proc/stop_wag(mob/living/carbon/organ_owner)
 	if(!(wag_flags & WAG_ABLE))
 		return FALSE
 
@@ -138,13 +140,13 @@
 	UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH)
 	return succeeded
 
-/obj/item/organ/external/tail/proc/get_butt_sprite()
+/obj/item/organ/tail/proc/get_butt_sprite()
 	return null
 
 ///Tail parent type, with wagging functionality
 /datum/bodypart_overlay/mutant/tail
 	layers = EXTERNAL_FRONT|EXTERNAL_BEHIND
-	feature_key = "tail" // NOVA EDIT - Customization - ORIGINAL: feature_key = "tail_monkey"
+	dyable = TRUE
 	var/wagging = FALSE
 
 /datum/bodypart_overlay/mutant/tail/get_base_icon_state()
@@ -160,7 +162,7 @@
 		return FALSE
 	return TRUE
 
-/obj/item/organ/external/tail/cat
+/obj/item/organ/tail/cat
 	name = "tail"
 	preference = "feature_human_tail"
 
@@ -168,7 +170,7 @@
 
 	wag_flags = WAG_ABLE
 
-/obj/item/organ/external/tail/cat/get_butt_sprite()
+/obj/item/organ/tail/cat/get_butt_sprite()
 	return icon('icons/mob/butts.dmi', BUTT_SPRITE_CAT)
 
 ///Cat tail bodypart overlay
@@ -179,7 +181,7 @@
 /datum/bodypart_overlay/mutant/tail/cat/get_global_feature_list()
 	return SSaccessories.sprite_accessories["tail"] // NOVA EDIT CHANGE - ORIGINAL: return SSaccessories.tails_list_felinid
 
-/obj/item/organ/external/tail/monkey
+/obj/item/organ/tail/monkey
 	name = "monkey tail"
 	preference = "feature_monkey_tail"
 
@@ -195,7 +197,7 @@
 /datum/bodypart_overlay/mutant/tail/monkey/get_global_feature_list()
 	return SSaccessories.tails_list_monkey
 
-/obj/item/organ/external/tail/lizard
+/obj/item/organ/tail/lizard
 	name = "lizard tail"
 	desc = "A severed lizard tail. Somewhere, no doubt, a lizard hater is very pleased with themselves."
 	preference = "feature_lizard_tail"
@@ -212,7 +214,7 @@
 /datum/bodypart_overlay/mutant/tail/lizard/get_global_feature_list()
 	return SSaccessories.sprite_accessories["tail"] // NOVA EDIT - Customization - ORIGINAL: return SSaccessories.tails_list_lizard
 
-/obj/item/organ/external/tail/lizard/fake
+/obj/item/organ/tail/lizard/fake
 	name = "fabricated lizard tail"
 	desc = "A fabricated severed lizard tail. This one's made of synthflesh. Probably not usable for lizard wine."
 
@@ -235,3 +237,6 @@
 	. = ..()
 	if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT))
 		return FALSE
+
+/datum/bodypart_overlay/mutant/tail_spines/set_dye_color(new_color, obj/item/organ/organ)
+	dye_color = new_color //no update_body_parts() call, tail/set_dye_color will do it.
diff --git a/code/modules/surgery/organs/external/wings/functional_wings.dm b/code/modules/surgery/organs/external/wings/functional_wings.dm
index c90dcd8c8a8..d2725955f20 100644
--- a/code/modules/surgery/organs/external/wings/functional_wings.dm
+++ b/code/modules/surgery/organs/external/wings/functional_wings.dm
@@ -10,12 +10,12 @@
 
 /datum/action/innate/flight/Activate()
 	var/mob/living/carbon/human/human = owner
-	var/obj/item/organ/external/wings/functional/wings = human.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
+	var/obj/item/organ/wings/functional/wings = human.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS)
 	if(wings?.can_fly(human))
 		wings.toggle_flight(human)
 
 ///The true wings that you can use to fly and shit (you cant actually shit with them)
-/obj/item/organ/external/wings/functional
+/obj/item/organ/wings/functional
 	///The flight action object
 	var/datum/action/innate/flight/fly
 
@@ -29,29 +29,29 @@
 	// grind_results = list(/datum/reagent/flightpotion = 5)
 	food_reagents = list(/datum/reagent/flightpotion = 5)
 
-/obj/item/organ/external/wings/functional/Destroy()
+/obj/item/organ/wings/functional/Destroy()
 	QDEL_NULL(fly)
 	return ..()
 
-/obj/item/organ/external/wings/functional/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/wings/functional/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	. = ..()
 
 	if(QDELETED(fly))
 		fly = new
 	fly.Grant(receiver)
 
-/obj/item/organ/external/wings/functional/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/wings/functional/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 	fly?.Remove(organ_owner)
 	if(wings_open)
 		toggle_flight(organ_owner)
 
-/obj/item/organ/external/wings/functional/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/wings/functional/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	handle_flight(owner)
 
 ///Called on_life(). Handle flight code and check if we're still flying
-/obj/item/organ/external/wings/functional/proc/handle_flight(mob/living/carbon/human/human)
+/obj/item/organ/wings/functional/proc/handle_flight(mob/living/carbon/human/human)
 	if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT))
 		return FALSE
 	if(!can_fly(human))
@@ -61,7 +61,7 @@
 
 
 ///Check if we're still eligible for flight (wings covered, atmosphere too thin, etc)
-/obj/item/organ/external/wings/functional/proc/can_fly(mob/living/carbon/human/human)
+/obj/item/organ/wings/functional/proc/can_fly(mob/living/carbon/human/human)
 	if(human.stat || human.body_position == LYING_DOWN || isnull(human.client))
 		return FALSE
 	//Jumpsuits have tail holes, so it makes sense they have wing holes too
@@ -79,7 +79,7 @@
 	return TRUE
 
 ///Slipping but in the air?
-/obj/item/organ/external/wings/functional/proc/fly_slip(mob/living/carbon/human/human)
+/obj/item/organ/wings/functional/proc/fly_slip(mob/living/carbon/human/human)
 	var/obj/buckled_obj
 	if(human.buckled)
 		buckled_obj = human.buckled
@@ -102,7 +102,7 @@
 	return TRUE
 
 ///UNSAFE PROC, should only be called through the Activate or other sources that check for CanFly
-/obj/item/organ/external/wings/functional/proc/toggle_flight(mob/living/carbon/human/human)
+/obj/item/organ/wings/functional/proc/toggle_flight(mob/living/carbon/human/human)
 	if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT))
 		human.physiology.stun_mod *= 2
 		human.add_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT)
@@ -129,7 +129,7 @@
 	close_wings()
 	human.refresh_gravity()
 
-/obj/item/organ/external/wings/functional/proc/on_client_move(mob/source, list/move_args)
+/obj/item/organ/wings/functional/proc/on_client_move(mob/source, list/move_args)
 	SIGNAL_HANDLER
 
 	if (!can_fly(source))
@@ -139,7 +139,7 @@
 	source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = FUNCTIONAL_WING_FORCE, controlled_cap = max_drift_force)
 	source.setDir(source.client.intended_direction)
 
-/obj/item/organ/external/wings/functional/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
+/obj/item/organ/wings/functional/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
 	SIGNAL_HANDLER
 
 	if (get_dir(source, backup) == movement_dir || source.loc == backup.loc)
@@ -150,7 +150,7 @@
 
 	return COMPONENT_PREVENT_SPACEMOVE_HALT
 
-/obj/item/organ/external/wings/functional/process(seconds_per_tick)
+/obj/item/organ/wings/functional/process(seconds_per_tick)
 	if (!owner || !can_fly(owner) || isnull(owner.drift_handler))
 		return
 
@@ -158,14 +158,14 @@
 	owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, FUNCTIONAL_WING_STABILIZATION * (seconds_per_tick * 1 SECONDS))
 
 ///SPREAD OUR WINGS AND FLLLLLYYYYYY
-/obj/item/organ/external/wings/functional/proc/open_wings()
+/obj/item/organ/wings/functional/proc/open_wings()
 	var/datum/bodypart_overlay/mutant/wings/functional/overlay = bodypart_overlay
 	overlay.open_wings()
 	wings_open = TRUE
 	owner.update_body_parts()
 
 ///close our wings
-/obj/item/organ/external/wings/functional/proc/close_wings()
+/obj/item/organ/wings/functional/proc/close_wings()
 	var/datum/bodypart_overlay/mutant/wings/functional/overlay = bodypart_overlay
 	wings_open = FALSE
 	overlay.close_wings()
@@ -212,7 +212,7 @@
 	. += wings_open ? "open" : "closed"
 
 ///angel wings, which relate to humans. comes with holiness.
-/obj/item/organ/external/wings/functional/angel
+/obj/item/organ/wings/functional/angel
 	name = "angel wings"
 	desc = "Holier-than-thou attitude not included."
 	sprite_accessory_override = /datum/sprite_accessory/wings_open/angel
@@ -220,47 +220,47 @@
 	organ_traits = list(TRAIT_HOLY)
 
 ///dragon wings, which relate to lizards.
-/obj/item/organ/external/wings/functional/dragon
+/obj/item/organ/wings/functional/dragon
 	name = "dragon wings"
 	desc = "Hey, HEY- NOT lizard wings. Dragon wings. Mighty dragon wings."
 	sprite_accessory_override = /datum/sprite_accessory/wings/dragon
 
 ///robotic wings, which relate to androids.
-/obj/item/organ/external/wings/functional/robotic
+/obj/item/organ/wings/functional/robotic
 	name = "robotic wings"
 	desc = "Using microscopic hover-engines, or \"microwings,\" as they're known in the trade, these tiny devices are able to lift a few grams at a time. Gathering enough of them, and you can lift impressively large things."
 	organ_flags = ORGAN_ROBOTIC
 	sprite_accessory_override = /datum/sprite_accessory/wings/robotic
 
 ///skeletal wings, which relate to skeletal races.
-/obj/item/organ/external/wings/functional/skeleton
+/obj/item/organ/wings/functional/skeleton
 	name = "skeletal wings"
 	desc = "Powered by pure edgy-teenager-notebook-scribblings. Just kidding. But seriously, how do these keep you flying?!"
 	sprite_accessory_override = /datum/sprite_accessory/wings/skeleton
 
-/obj/item/organ/external/wings/functional/moth/make_flap_sound(mob/living/carbon/wing_owner)
+/obj/item/organ/wings/functional/moth/make_flap_sound(mob/living/carbon/wing_owner)
 	playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE)
 
 ///mothra wings, which relate to moths.
-/obj/item/organ/external/wings/functional/moth/mothra
+/obj/item/organ/wings/functional/moth/mothra
 	name = "mothra wings"
 	desc = "Fly like the mighty mothra of legend once did."
 	sprite_accessory_override = /datum/sprite_accessory/wings/mothra
 
 ///megamoth wings, which relate to moths as an alternate choice. they're both pretty cool.
-/obj/item/organ/external/wings/functional/moth/megamoth
+/obj/item/organ/wings/functional/moth/megamoth
 	name = "megamoth wings"
 	desc = "Don't get murderous."
 	sprite_accessory_override = /datum/sprite_accessory/wings/megamoth
 
 ///fly wings, which relate to flies.
-/obj/item/organ/external/wings/functional/fly
+/obj/item/organ/wings/functional/fly
 	name = "fly wings"
 	desc = "Fly as a fly."
 	sprite_accessory_override = /datum/sprite_accessory/wings/fly
 
 ///slime wings, which relate to slimes.
-/obj/item/organ/external/wings/functional/slime
+/obj/item/organ/wings/functional/slime
 	name = "slime wings"
 	desc = "How does something so squishy even fly?"
 	sprite_accessory_override = /datum/sprite_accessory/wings/slime
diff --git a/code/modules/surgery/organs/external/wings/moth_wings.dm b/code/modules/surgery/organs/external/wings/moth_wings.dm
index 4d7074ddefa..f6e20c49699 100644
--- a/code/modules/surgery/organs/external/wings/moth_wings.dm
+++ b/code/modules/surgery/organs/external/wings/moth_wings.dm
@@ -1,7 +1,7 @@
 #define MOTH_WING_FORCE 1 NEWTONS
 
 ///Moth wings! They can flutter in low-grav and burn off in heat
-/obj/item/organ/external/wings/moth
+/obj/item/organ/wings/moth
 	name = "moth wings"
 	desc = "Spread your wings and FLOOOOAAAAAT!"
 
@@ -16,7 +16,7 @@
 	///Store our old datum here for if our burned wings are healed
 	var/original_sprite_datum
 
-/obj/item/organ/external/wings/moth/on_mob_insert(mob/living/carbon/receiver)
+/obj/item/organ/wings/moth/on_mob_insert(mob/living/carbon/receiver)
 	. = ..()
 	RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_wings))
 	RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_wings))
@@ -24,18 +24,18 @@
 	RegisterSignal(receiver, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(on_pushoff))
 	START_PROCESSING(SSnewtonian_movement, src)
 
-/obj/item/organ/external/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
 	. = ..()
 	UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_MOB_CLIENT_MOVE_NOGRAV, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE))
 	STOP_PROCESSING(SSnewtonian_movement, src)
 
-/obj/item/organ/external/wings/moth/make_flap_sound(mob/living/carbon/wing_owner)
+/obj/item/organ/wings/moth/make_flap_sound(mob/living/carbon/wing_owner)
 	playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE)
 
-/obj/item/organ/external/wings/moth/can_soften_fall()
+/obj/item/organ/wings/moth/can_soften_fall()
 	return !burnt
 
-/obj/item/organ/external/wings/moth/proc/allow_flight()
+/obj/item/organ/wings/moth/proc/allow_flight()
 	if(!owner || !owner.client)
 		return FALSE
 	if(!isturf(owner.loc))
@@ -59,14 +59,14 @@
 		return TRUE
 	return FALSE
 
-/obj/item/organ/external/wings/moth/process(seconds_per_tick)
+/obj/item/organ/wings/moth/process(seconds_per_tick)
 	if (!owner || !allow_flight() || isnull(owner.drift_handler))
 		return
 
 	var/max_drift_force = (DEFAULT_INERTIA_SPEED / owner.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1
 	owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, MOTH_WING_FORCE * (seconds_per_tick * 1 SECONDS))
 
-/obj/item/organ/external/wings/moth/proc/on_client_move(mob/source, list/move_args)
+/obj/item/organ/wings/moth/proc/on_client_move(mob/source, list/move_args)
 	SIGNAL_HANDLER
 
 	if (!allow_flight())
@@ -76,7 +76,7 @@
 	source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = MOTH_WING_FORCE, controlled_cap = max_drift_force)
 	source.setDir(source.client.intended_direction)
 
-/obj/item/organ/external/wings/moth/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
+/obj/item/organ/wings/moth/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup)
 	SIGNAL_HANDLER
 
 	if (get_dir(source, backup) == movement_dir || source.loc == backup.loc)
@@ -88,7 +88,7 @@
 	return COMPONENT_PREVENT_SPACEMOVE_HALT
 
 ///check if our wings can burn off ;_;
-/obj/item/organ/external/wings/moth/proc/try_burn_wings(mob/living/carbon/human/human)
+/obj/item/organ/wings/moth/proc/try_burn_wings(mob/living/carbon/human/human)
 	SIGNAL_HANDLER
 
 	if(!burnt && human.bodytemperature >= 800 && human.fire_stacks > 0) //do not go into the extremely hot light. you will not survive
@@ -99,13 +99,13 @@
 		human.update_body_parts()
 
 ///burn the wings off
-/obj/item/organ/external/wings/moth/proc/burn_wings()
+/obj/item/organ/wings/moth/proc/burn_wings()
 	var/datum/bodypart_overlay/mutant/wings/moth/wings = bodypart_overlay
 	wings.burnt = TRUE
 	burnt = TRUE
 
 ///heal our wings back up!!
-/obj/item/organ/external/wings/moth/proc/heal_wings(datum/source, heal_flags)
+/obj/item/organ/wings/moth/proc/heal_wings(datum/source, heal_flags)
 	SIGNAL_HANDLER
 
 	if(!burnt)
diff --git a/code/modules/surgery/organs/external/wings/wings.dm b/code/modules/surgery/organs/external/wings/wings.dm
index 62efd492530..70344326121 100644
--- a/code/modules/surgery/organs/external/wings/wings.dm
+++ b/code/modules/surgery/organs/external/wings/wings.dm
@@ -1,5 +1,5 @@
 ///Wing base type. doesn't really do anything
-/obj/item/organ/external/wings
+/obj/item/organ/wings
 	name = "wings"
 	desc = "Spread your wings and FLLLLLLLLYYYYY!"
 
@@ -9,12 +9,14 @@
 	use_mob_sprite_as_obj_sprite = TRUE
 	bodypart_overlay = /datum/bodypart_overlay/mutant/wings
 
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
+
 ///Checks if the wings can soften short falls
-/obj/item/organ/external/wings/proc/can_soften_fall()
+/obj/item/organ/wings/proc/can_soften_fall()
 	return TRUE
 
 ///Implement as needed to play a sound effect on *flap emote
-/obj/item/organ/external/wings/proc/make_flap_sound(mob/living/carbon/wing_owner)
+/obj/item/organ/wings/proc/make_flap_sound(mob/living/carbon/wing_owner)
 	return
 
 ///Bodypart overlay of default wings. Does not have any wing functionality
diff --git a/code/modules/surgery/organs/internal/_internal_organ.dm b/code/modules/surgery/organs/internal/_internal_organ.dm
index 2568ca942cd..03ac2c01d45 100644
--- a/code/modules/surgery/organs/internal/_internal_organ.dm
+++ b/code/modules/surgery/organs/internal/_internal_organ.dm
@@ -1,11 +1,11 @@
-/obj/item/organ/internal
+/obj/item/organ
 	name = "organ"
 
-/obj/item/organ/internal/Initialize(mapload)
+/obj/item/organ/Initialize(mapload)
 	. = ..()
 	START_PROCESSING(SSobj, src)
 
-/obj/item/organ/internal/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 
 	// organs_slot must ALWAYS be ordered in the same way as organ_process_order
@@ -14,7 +14,7 @@
 
 	STOP_PROCESSING(SSobj, src)
 
-/obj/item/organ/internal/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
+/obj/item/organ/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE)
 	. = ..()
 
 	if((organ_flags & ORGAN_VITAL) && !special && !HAS_TRAIT(organ_owner, TRAIT_GODMODE))
@@ -24,10 +24,10 @@
 
 	START_PROCESSING(SSobj, src)
 
-/obj/item/organ/internal/process(seconds_per_tick, times_fired)
+/obj/item/organ/process(seconds_per_tick, times_fired)
 	on_death(seconds_per_tick, times_fired) //Kinda hate doing it like this, but I really don't want to call process directly.
 
-/obj/item/organ/internal/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person
+/obj/item/organ/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person
 	if(organ_flags & (ORGAN_ROBOTIC | ORGAN_FROZEN))
 		return
 
@@ -45,7 +45,7 @@
 /// NOTE: THIS IS VERY HOT. Be careful what you put in here
 /// To give you some scale, if there's 100 carbons in the game, they each have maybe 9 organs
 /// So that's 900 calls to this proc every life process. Please don't be dumb
-/obj/item/organ/internal/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing
+/obj/item/organ/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing
 	if(organ_flags & ORGAN_FAILING)
 		handle_failing_organs(seconds_per_tick)
 		return
@@ -70,16 +70,16 @@
 	apply_organ_damage(-healing_amount * maxHealth * seconds_per_tick, damage) // pass curent damage incase we are over cap
 
 ///Used as callbacks by object pooling
-/obj/item/organ/internal/exit_wardrobe()
+/obj/item/organ/exit_wardrobe()
 	START_PROCESSING(SSobj, src)
 
 //See above
-/obj/item/organ/internal/enter_wardrobe()
+/obj/item/organ/enter_wardrobe()
 	bodypart_overlay?.imprint_on_next_insertion = TRUE // NOVA EDIT ADDITION - Make sure whoever gets it next gets the right DNA
 	STOP_PROCESSING(SSobj, src)
 
 ///Organs don't die instantly, and neither should you when you get fucked up
-/obj/item/organ/internal/handle_failing_organs(seconds_per_tick)
+/obj/item/organ/handle_failing_organs(seconds_per_tick)
 	if(owner.stat == DEAD)
 		return
 
diff --git a/code/modules/surgery/organs/internal/appendix/_appendix.dm b/code/modules/surgery/organs/internal/appendix/_appendix.dm
index 420d4efc118..020d5186af9 100644
--- a/code/modules/surgery/organs/internal/appendix/_appendix.dm
+++ b/code/modules/surgery/organs/internal/appendix/_appendix.dm
@@ -2,14 +2,14 @@
 #define APPENDICITIS_PROB 100 * (0.1 * (1 / 25) / 3600)
 #define INFLAMATION_ADVANCEMENT_PROB 2
 
-/obj/item/organ/internal/appendix
+/obj/item/organ/appendix
 	name = "appendix"
 	icon_state = "appendix"
 	base_icon_state = "appendix"
 
 	zone = BODY_ZONE_PRECISE_GROIN
 	slot = ORGAN_SLOT_APPENDIX
-	food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/bad_food = 5)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/toxin/bad_food = 5)
 	grind_results = list(/datum/reagent/toxin/bad_food = 5)
 	healing_factor = STANDARD_ORGAN_HEALING
 	decay_factor = STANDARD_ORGAN_DECAY
@@ -19,15 +19,15 @@
 
 	var/inflamation_stage = 0
 
-/obj/item/organ/internal/appendix/update_name()
+/obj/item/organ/appendix/update_name()
 	. = ..()
 	name = "[inflamation_stage ? "inflamed " : null][initial(name)]"
 
-/obj/item/organ/internal/appendix/update_icon_state()
+/obj/item/organ/appendix/update_icon_state()
 	icon_state = "[base_icon_state][inflamation_stage ? "inflamed" : ""]"
 	return ..()
 
-/obj/item/organ/internal/appendix/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/appendix/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if(!owner)
 		return
@@ -40,7 +40,7 @@
 	else if(SPT_PROB(APPENDICITIS_PROB, seconds_per_tick) && !HAS_TRAIT(owner, TRAIT_TEMPORARY_BODY))
 		become_inflamed()
 
-/obj/item/organ/internal/appendix/proc/become_inflamed()
+/obj/item/organ/appendix/proc/become_inflamed()
 	inflamation_stage = 1
 	update_appearance()
 	if(owner)
@@ -52,7 +52,7 @@
 			header = "Whoa, Sick!",
 		)
 
-/obj/item/organ/internal/appendix/proc/inflamation(seconds_per_tick)
+/obj/item/organ/appendix/proc/inflamation(seconds_per_tick)
 	var/mob/living/carbon/organ_owner = owner
 	if(inflamation_stage < 3 && SPT_PROB(INFLAMATION_ADVANCEMENT_PROB, seconds_per_tick))
 		inflamation_stage += 1
@@ -73,21 +73,21 @@
 				organ_owner.adjustOrganLoss(ORGAN_SLOT_APPENDIX, 15)
 
 
-/obj/item/organ/internal/appendix/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/appendix/get_availability(datum/species/owner_species, mob/living/owner_mob)
 	return owner_species.mutantappendix
 
-/obj/item/organ/internal/appendix/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/appendix/on_mob_remove(mob/living/carbon/organ_owner)
 	. = ..()
 	REMOVE_TRAIT(organ_owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type)
 	organ_owner.med_hud_set_status()
 
-/obj/item/organ/internal/appendix/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/appendix/on_mob_insert(mob/living/carbon/organ_owner)
 	. = ..()
 	if(inflamation_stage)
 		ADD_TRAIT(organ_owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type)
 		organ_owner.med_hud_set_status()
 
-/obj/item/organ/internal/appendix/get_status_text(advanced, add_tooltips)
+/obj/item/organ/appendix/get_status_text(advanced, add_tooltips)
 	if(!(organ_flags & ORGAN_FAILING) && inflamation_stage)
 		return conditional_tooltip("<font color='#ff9933'>Inflamed</font>", "Remove surgically.", add_tooltips)
 	return ..()
diff --git a/code/modules/surgery/organs/internal/appendix/appendix_golem.dm b/code/modules/surgery/organs/internal/appendix/appendix_golem.dm
index 5510b4bf967..08a53e28f8d 100644
--- a/code/modules/surgery/organs/internal/appendix/appendix_golem.dm
+++ b/code/modules/surgery/organs/internal/appendix/appendix_golem.dm
@@ -1,5 +1,5 @@
 
-/obj/item/organ/internal/appendix/golem
+/obj/item/organ/appendix/golem
 	name = "internal forge"
 	desc = "This expanded digestive chamber allows golems to smelt minerals, provided that they are immersed in lava."
 	icon_state = "ethereal_heart-off"
@@ -8,16 +8,16 @@
 	/// Action which performs smelting
 	var/datum/action/cooldown/internal_smelting/smelter
 
-/obj/item/organ/internal/appendix/golem/Initialize(mapload)
+/obj/item/organ/appendix/golem/Initialize(mapload)
 	. = ..()
 	smelter = new(src)
 
-/obj/item/organ/internal/appendix/golem/on_mob_insert(mob/living/carbon/organ_owner)
+/obj/item/organ/appendix/golem/on_mob_insert(mob/living/carbon/organ_owner)
 	. = ..()
 	RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_for_lava))
 
 /// Give the action while in lava
-/obj/item/organ/internal/appendix/golem/proc/check_for_lava(mob/living/owner)
+/obj/item/organ/appendix/golem/proc/check_for_lava(mob/living/owner)
 	SIGNAL_HANDLER
 	if (!islava(owner.loc))
 		smelter.Remove(owner)
@@ -25,12 +25,12 @@
 	if (smelter.owner != owner)
 		smelter.Grant(owner)
 
-/obj/item/organ/internal/appendix/golem/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/appendix/golem/on_mob_remove(mob/living/carbon/organ_owner)
 	UnregisterSignal(organ_owner, COMSIG_MOVABLE_MOVED)
 	smelter?.Remove(organ_owner) // Might have been deleted by Destroy already
 	return ..()
 
-/obj/item/organ/internal/appendix/golem/Destroy()
+/obj/item/organ/appendix/golem/Destroy()
 	QDEL_NULL(smelter)
 	return ..()
 
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
index 0946d144103..a07b8caed6c 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/arm
+/obj/item/organ/cyberimp/arm
 	name = "arm-mounted implant"
 	desc = "You shouldn't see this! Adminhelp and report this as an issue on github!"
 	zone = BODY_ZONE_R_ARM
@@ -22,7 +22,7 @@
 	/// Organ slot that the implant occupies for the left arm
 	var/left_arm_organ_slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/Initialize(mapload)
 	. = ..()
 	if(ispath(active_item))
 		active_item = new active_item(src)
@@ -35,7 +35,7 @@
 	update_appearance()
 	SetSlotFromZone()
 
-/obj/item/organ/internal/cyberimp/arm/Destroy()
+/obj/item/organ/cyberimp/arm/Destroy()
 	hand = null
 	active_item = null
 	for(var/datum/weakref/ref in items_list)
@@ -49,7 +49,7 @@
 /datum/action/item_action/organ_action/toggle/toolkit
 	desc = "You can also activate your empty hand or the tool in your hand to open the tools radial menu."
 
-/obj/item/organ/internal/cyberimp/arm/proc/SetSlotFromZone()
+/obj/item/organ/cyberimp/arm/proc/SetSlotFromZone()
 	switch(zone)
 		if(BODY_ZONE_L_ARM)
 			slot = left_arm_organ_slot
@@ -58,16 +58,16 @@
 		else
 			CRASH("Invalid zone for [type]")
 
-/obj/item/organ/internal/cyberimp/arm/update_icon()
+/obj/item/organ/cyberimp/arm/update_icon()
 	. = ..()
 	transform = (zone == BODY_ZONE_R_ARM) ? null : matrix(-1, 0, 0, 0, 1, 0)
 
-/obj/item/organ/internal/cyberimp/arm/examine(mob/user)
+/obj/item/organ/cyberimp/arm/examine(mob/user)
 	. = ..()
 	if(IS_ROBOTIC_ORGAN(src))
 		. += span_info("[src] is assembled in the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.")
 
-/obj/item/organ/internal/cyberimp/arm/screwdriver_act(mob/living/user, obj/item/screwtool)
+/obj/item/organ/cyberimp/arm/screwdriver_act(mob/living/user, obj/item/screwtool)
 	. = ..()
 	if(.)
 		return TRUE
@@ -80,19 +80,19 @@
 	to_chat(user, span_notice("You modify [src] to be installed on the [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm."))
 	update_appearance()
 
-/obj/item/organ/internal/cyberimp/arm/on_mob_insert(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/on_mob_insert(mob/living/carbon/arm_owner)
 	. = ..()
 	RegisterSignal(arm_owner, COMSIG_CARBON_POST_ATTACH_LIMB, PROC_REF(on_limb_attached))
 	RegisterSignal(arm_owner, COMSIG_KB_MOB_DROPITEM_DOWN, PROC_REF(dropkey)) //We're nodrop, but we'll watch for the drop hotkey anyway and then stow if possible.
 	on_limb_attached(arm_owner, arm_owner.hand_bodyparts[zone == BODY_ZONE_R_ARM ? RIGHT_HANDS : LEFT_HANDS])
 
-/obj/item/organ/internal/cyberimp/arm/on_mob_remove(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/on_mob_remove(mob/living/carbon/arm_owner)
 	. = ..()
 	Retract()
 	UnregisterSignal(arm_owner, list(COMSIG_CARBON_POST_ATTACH_LIMB, COMSIG_KB_MOB_DROPITEM_DOWN))
 	on_limb_detached(hand)
 
-/obj/item/organ/internal/cyberimp/arm/proc/on_limb_attached(mob/living/carbon/source, obj/item/bodypart/limb)
+/obj/item/organ/cyberimp/arm/proc/on_limb_attached(mob/living/carbon/source, obj/item/bodypart/limb)
 	SIGNAL_HANDLER
 	if(!limb || QDELETED(limb) || limb.body_zone != zone)
 		return
@@ -102,18 +102,18 @@
 	RegisterSignal(limb, COMSIG_BODYPART_REMOVED, PROC_REF(on_limb_detached))
 	hand = limb
 
-/obj/item/organ/internal/cyberimp/arm/proc/on_limb_detached(obj/item/bodypart/source)
+/obj/item/organ/cyberimp/arm/proc/on_limb_detached(obj/item/bodypart/source)
 	SIGNAL_HANDLER
 	if(source != hand || QDELETED(hand))
 		return
 	UnregisterSignal(hand, list(COMSIG_ITEM_ATTACK_SELF, COMSIG_BODYPART_REMOVED))
 	hand = null
 
-/obj/item/organ/internal/cyberimp/arm/proc/on_item_attack_self()
+/obj/item/organ/cyberimp/arm/proc/on_item_attack_self()
 	SIGNAL_HANDLER
 	INVOKE_ASYNC(src, PROC_REF(ui_action_click))
 
-/obj/item/organ/internal/cyberimp/arm/emp_act(severity)
+/obj/item/organ/cyberimp/arm/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF || !IS_ROBOTIC_ORGAN(src))
 		return
@@ -129,7 +129,7 @@
  * quick way to store implant items. In this case, we check to make sure the user has the correct arm
  * selected, and that the item is actually owned by us, and then we'll hand off the rest to Retract()
 **/
-/obj/item/organ/internal/cyberimp/arm/proc/dropkey(mob/living/carbon/host)
+/obj/item/organ/cyberimp/arm/proc/dropkey(mob/living/carbon/host)
 	SIGNAL_HANDLER
 	if(!host)
 		return //How did we even get here
@@ -138,7 +138,7 @@
 	if(Retract())
 		return COMSIG_KB_ACTIVATED
 
-/obj/item/organ/internal/cyberimp/arm/proc/Retract()
+/obj/item/organ/cyberimp/arm/proc/Retract()
 	if(!active_item || (active_item in src))
 		return FALSE
 	active_item.resistance_flags = active_item::resistance_flags
@@ -159,7 +159,7 @@
 	playsound(get_turf(owner), retract_sound, 50, TRUE)
 	return TRUE
 
-/obj/item/organ/internal/cyberimp/arm/proc/Extend(obj/item/augment)
+/obj/item/organ/cyberimp/arm/proc/Extend(obj/item/augment)
 	if(!(augment in src))
 		return
 
@@ -198,12 +198,12 @@
 	if(length(items_list) > 1)
 		RegisterSignals(active_item, list(COMSIG_ITEM_ATTACK_SELF, COMSIG_ITEM_ATTACK_SELF_SECONDARY), PROC_REF(swap_tools)) // secondary for welders
 
-/obj/item/organ/internal/cyberimp/arm/proc/swap_tools(active_item)
+/obj/item/organ/cyberimp/arm/proc/swap_tools(active_item)
 	SIGNAL_HANDLER
 	Retract(active_item)
 	INVOKE_ASYNC(src, PROC_REF(ui_action_click))
 
-/obj/item/organ/internal/cyberimp/arm/ui_action_click()
+/obj/item/organ/cyberimp/arm/ui_action_click()
 	if((organ_flags & ORGAN_FAILING) || (!active_item && !contents.len))
 		to_chat(owner, span_warning("The implant doesn't respond. It seems to be broken..."))
 		return
@@ -228,7 +228,7 @@
 		Retract()
 
 
-/obj/item/organ/internal/cyberimp/arm/gun/emp_act(severity)
+/obj/item/organ/cyberimp/arm/gun/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF)
 		return
@@ -243,25 +243,25 @@
 		organ_flags |= ORGAN_FAILING
 
 
-/obj/item/organ/internal/cyberimp/arm/gun/laser
+/obj/item/organ/cyberimp/arm/gun/laser
 	name = "arm-mounted laser implant"
 	desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arm and remains inside when not in use."
 	icon_state = "arm_laser"
 	items_to_create = list(/obj/item/gun/energy/laser/mounted/augment)
 
-/obj/item/organ/internal/cyberimp/arm/gun/laser/l
+/obj/item/organ/cyberimp/arm/gun/laser/l
 	zone = BODY_ZONE_L_ARM
 
-/obj/item/organ/internal/cyberimp/arm/gun/taser
+/obj/item/organ/cyberimp/arm/gun/taser
 	name = "arm-mounted taser implant"
 	desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arm and remains inside when not in use."
 	icon_state = "arm_taser"
 	items_to_create = list(/obj/item/gun/energy/e_gun/advtaser/mounted)
 
-/obj/item/organ/internal/cyberimp/arm/gun/taser/l
+/obj/item/organ/cyberimp/arm/gun/taser/l
 	zone = BODY_ZONE_L_ARM
 
-/obj/item/organ/internal/cyberimp/arm/toolset
+/obj/item/organ/cyberimp/arm/toolset
 	name = "integrated toolset implant"
 	desc = "A stripped-down version of the engineering cyborg toolset, designed to be installed on subject's arm. Contain advanced versions of every tool."
 	icon_state = "toolkit_engineering"
@@ -275,10 +275,10 @@
 		/obj/item/multitool/cyborg,
 	)
 
-/obj/item/organ/internal/cyberimp/arm/toolset/l
+/obj/item/organ/cyberimp/arm/toolset/l
 	zone = BODY_ZONE_L_ARM
 
-/obj/item/organ/internal/cyberimp/arm/toolset/emag_act(mob/user, obj/item/card/emag/emag_card)
+/obj/item/organ/cyberimp/arm/toolset/emag_act(mob/user, obj/item/card/emag/emag_card)
 	for(var/datum/weakref/created_item in items_list)
 		var/obj/potential_knife = created_item.resolve()
 		if(istype(/obj/item/knife/combat/cyborg, potential_knife))
@@ -288,23 +288,23 @@
 	items_list += WEAKREF(new /obj/item/knife/combat/cyborg(src))
 	return TRUE
 
-/obj/item/organ/internal/cyberimp/arm/esword
+/obj/item/organ/cyberimp/arm/esword
 	name = "arm-mounted energy blade"
 	desc = "An illegal and highly dangerous cybernetic implant that can project a deadly blade of concentrated energy."
 	items_to_create = list(/obj/item/melee/energy/blade/hardlight)
 
-/obj/item/organ/internal/cyberimp/arm/medibeam
+/obj/item/organ/cyberimp/arm/medibeam
 	name = "integrated medical beamgun"
 	desc = "A cybernetic implant that allows the user to project a healing beam from their hand."
 	items_to_create = list(/obj/item/gun/medbeam)
 
 
-/obj/item/organ/internal/cyberimp/arm/flash
+/obj/item/organ/cyberimp/arm/flash
 	name = "integrated high-intensity photon projector" //Why not
 	desc = "An integrated projector mounted onto a user's arm that is able to be used as a powerful flash."
 	items_to_create = list(/obj/item/assembly/flash/armimplant)
 
-/obj/item/organ/internal/cyberimp/arm/flash/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/flash/Initialize(mapload)
 	. = ..()
 	for(var/datum/weakref/created_item in items_list)
 		var/obj/potential_flash = created_item.resolve()
@@ -313,22 +313,22 @@
 		var/obj/item/assembly/flash/armimplant/flash = potential_flash
 		flash.arm = WEAKREF(src)
 
-/obj/item/organ/internal/cyberimp/arm/flash/Extend()
+/obj/item/organ/cyberimp/arm/flash/Extend()
 	. = ..()
 	active_item.set_light_range(7)
 	active_item.set_light_on(TRUE)
 
-/obj/item/organ/internal/cyberimp/arm/flash/Retract()
+/obj/item/organ/cyberimp/arm/flash/Retract()
 	if(active_item)
 		active_item.set_light_on(FALSE)
 	return ..()
 
-/obj/item/organ/internal/cyberimp/arm/baton
+/obj/item/organ/cyberimp/arm/baton
 	name = "arm electrification implant"
 	desc = "An illegal combat implant that allows the user to administer disabling shocks from their arm."
 	items_to_create = list(/obj/item/borg/stun)
 
-/obj/item/organ/internal/cyberimp/arm/combat
+/obj/item/organ/cyberimp/arm/combat
 	name = "combat cybernetics implant"
 	desc = "A powerful cybernetic implant that contains combat modules built into the user's arm."
 	items_to_create = list(
@@ -338,7 +338,7 @@
 		/obj/item/assembly/flash/armimplant,
 	)
 
-/obj/item/organ/internal/cyberimp/arm/combat/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/combat/Initialize(mapload)
 	. = ..()
 	for(var/datum/weakref/created_item in items_list)
 		var/obj/potential_flash = created_item.resolve()
@@ -347,7 +347,7 @@
 		var/obj/item/assembly/flash/armimplant/flash = potential_flash
 		flash.arm = WEAKREF(src)
 
-/obj/item/organ/internal/cyberimp/arm/surgery
+/obj/item/organ/cyberimp/arm/surgery
 	name = "surgical toolset implant"
 	desc = "A set of surgical tools hidden behind a concealed panel on the user's arm."
 	icon_state = "toolkit_surgical"
@@ -362,7 +362,7 @@
 		/obj/item/surgical_drapes,
 	)
 
-/obj/item/organ/internal/cyberimp/arm/surgery/emagged
+/obj/item/organ/cyberimp/arm/surgery/emagged
 	name = "hacked surgical toolset implant"
 	desc = "A set of surgical tools hidden behind a concealed panel on the user's arm. This one seems to have been tampered with."
 	items_to_create = list(
@@ -376,7 +376,7 @@
 		/obj/item/knife/combat/cyborg,
 	)
 
-/obj/item/organ/internal/cyberimp/arm/strongarm
+/obj/item/organ/cyberimp/arm/strongarm
 	name = "\proper Strong-Arm empowered musculature implant"
 	desc = "When implanted, this cybernetic implant will enhance the muscles of the arm to deliver more power-per-action."
 	icon_state = "muscle_implant"
@@ -409,19 +409,19 @@
 	///Tracks how soon we can perform another slam attack
 	COOLDOWN_DECLARE(slam_cooldown)
 
-/obj/item/organ/internal/cyberimp/arm/strongarm/l
+/obj/item/organ/cyberimp/arm/strongarm/l
 	zone = BODY_ZONE_L_ARM
 
-/obj/item/organ/internal/cyberimp/arm/strongarm/on_mob_insert(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/strongarm/on_mob_insert(mob/living/carbon/arm_owner)
 	. = ..()
 	if(ishuman(arm_owner)) //Sorry, only humans
 		RegisterSignal(arm_owner, COMSIG_LIVING_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand))
 
-/obj/item/organ/internal/cyberimp/arm/strongarm/on_mob_remove(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/strongarm/on_mob_remove(mob/living/carbon/arm_owner)
 	. = ..()
 	UnregisterSignal(arm_owner, COMSIG_LIVING_EARLY_UNARMED_ATTACK)
 
-/obj/item/organ/internal/cyberimp/arm/strongarm/emp_act(severity)
+/obj/item/organ/cyberimp/arm/strongarm/emp_act(severity)
 	. = ..()
 	if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
 		return
@@ -429,11 +429,11 @@
 	organ_flags |= ORGAN_FAILING
 	addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity)
 
-/obj/item/organ/internal/cyberimp/arm/strongarm/proc/reboot()
+/obj/item/organ/cyberimp/arm/strongarm/proc/reboot()
 	organ_flags &= ~ORGAN_FAILING
 	owner.balloon_alert(owner, "your arm stops spasming!")
 
-/obj/item/organ/internal/cyberimp/arm/strongarm/proc/on_attack_hand(mob/living/carbon/human/source, atom/target, proximity, modifiers)
+/obj/item/organ/cyberimp/arm/strongarm/proc/on_attack_hand(mob/living/carbon/human/source, atom/target, proximity, modifiers)
 	SIGNAL_HANDLER
 
 	if(source.get_active_hand() != hand || !proximity)
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
index c9cbfbe445b..6a1e4272cd5 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
@@ -1,9 +1,9 @@
-/obj/item/organ/internal/cyberimp/chest
+/obj/item/organ/cyberimp/chest
 	name = "cybernetic torso implant"
 	desc = "Implants for the organs in your torso."
 	zone = BODY_ZONE_CHEST
 
-/obj/item/organ/internal/cyberimp/chest/nutriment
+/obj/item/organ/cyberimp/chest/nutriment
 	name = "nutriment pump implant"
 	desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
 	icon_state = "nutriment_implant"
@@ -12,7 +12,7 @@
 	var/poison_amount = 5
 	slot = ORGAN_SLOT_STOMACH_AID
 
-/obj/item/organ/internal/cyberimp/chest/nutriment/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/cyberimp/chest/nutriment/on_life(seconds_per_tick, times_fired)
 	if(synthesizing)
 		return
 
@@ -22,10 +22,10 @@
 		owner.adjust_nutrition(25 * seconds_per_tick)
 		addtimer(CALLBACK(src, PROC_REF(synth_cool)), 5 SECONDS)
 
-/obj/item/organ/internal/cyberimp/chest/nutriment/proc/synth_cool()
+/obj/item/organ/cyberimp/chest/nutriment/proc/synth_cool()
 	synthesizing = FALSE
 
-/obj/item/organ/internal/cyberimp/chest/nutriment/emp_act(severity)
+/obj/item/organ/cyberimp/chest/nutriment/emp_act(severity)
 	. = ..()
 	if(!owner || . & EMP_PROTECT_SELF)
 		return
@@ -33,14 +33,14 @@
 	to_chat(owner, span_warning("You feel like your insides are burning."))
 
 
-/obj/item/organ/internal/cyberimp/chest/nutriment/plus
+/obj/item/organ/cyberimp/chest/nutriment/plus
 	name = "nutriment pump implant PLUS"
 	desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
 	icon_state = "adv_nutriment_implant"
 	hunger_threshold = NUTRITION_LEVEL_HUNGRY
 	poison_amount = 10
 
-/obj/item/organ/internal/cyberimp/chest/reviver
+/obj/item/organ/cyberimp/chest/reviver
 	name = "reviver implant"
 	desc = "This implant will attempt to revive and heal you if you lose consciousness. For the faint of heart!"
 	icon_state = "reviver_implant"
@@ -50,15 +50,15 @@
 	COOLDOWN_DECLARE(reviver_cooldown)
 	COOLDOWN_DECLARE(defib_cooldown)
 
-/obj/item/organ/internal/cyberimp/chest/reviver/on_death(seconds_per_tick, times_fired)
-	if(isnull(owner)) // owner can be null, on_death() gets called by /obj/item/organ/internal/process() for decay
+/obj/item/organ/cyberimp/chest/reviver/on_death(seconds_per_tick, times_fired)
+	if(isnull(owner)) // owner can be null, on_death() gets called by /obj/item/organ/process() for decay
 		return
 	try_heal() // Allows implant to work even on dead people
 
-/obj/item/organ/internal/cyberimp/chest/reviver/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/cyberimp/chest/reviver/on_life(seconds_per_tick, times_fired)
 	try_heal()
 
-/obj/item/organ/internal/cyberimp/chest/reviver/proc/try_heal()
+/obj/item/organ/cyberimp/chest/reviver/proc/try_heal()
 	if(reviving)
 		if(owner.stat == CONSCIOUS)
 			COOLDOWN_START(src, reviver_cooldown, revive_cost)
@@ -78,7 +78,7 @@
 		COOLDOWN_START(src, defib_cooldown, 8 SECONDS) // 5 seconds after heal proc delay
 
 
-/obj/item/organ/internal/cyberimp/chest/reviver/proc/heal()
+/obj/item/organ/cyberimp/chest/reviver/proc/heal()
 	if(COOLDOWN_FINISHED(src, defib_cooldown))
 		revive_dead()
 
@@ -106,7 +106,7 @@
 		owner.visible_message(span_warning("[owner]'s body twitches a bit."), span_notice("You feel like something is patching your injured body."))
 
 
-/obj/item/organ/internal/cyberimp/chest/reviver/proc/revive_dead()
+/obj/item/organ/cyberimp/chest/reviver/proc/revive_dead()
 	if(!COOLDOWN_FINISHED(src, defib_cooldown) || owner.stat != DEAD || owner.can_defib() != DEFIB_POSSIBLE)
 		return
 	owner.notify_revival("You are being revived by [src]!")
@@ -126,7 +126,7 @@
 	log_game("[owner] been revived by [src]")
 
 
-/obj/item/organ/internal/cyberimp/chest/reviver/emp_act(severity)
+/obj/item/organ/cyberimp/chest/reviver/emp_act(severity)
 	. = ..()
 	if(!owner || . & EMP_PROTECT_SELF)
 		return
@@ -143,7 +143,7 @@
 			to_chat(human_owner, span_userdanger("You feel a horrible agony in your chest!"))
 			addtimer(CALLBACK(src, PROC_REF(undo_heart_attack)), 600 / severity)
 
-/obj/item/organ/internal/cyberimp/chest/reviver/proc/undo_heart_attack()
+/obj/item/organ/cyberimp/chest/reviver/proc/undo_heart_attack()
 	var/mob/living/carbon/human/human_owner = owner
 	if(!istype(human_owner))
 		return
@@ -152,7 +152,7 @@
 		to_chat(human_owner, span_notice("You feel your heart beating again!"))
 
 
-/obj/item/organ/internal/cyberimp/chest/thrusters
+/obj/item/organ/cyberimp/chest/thrusters
 	name = "implantable thrusters set"
 	desc = "An implantable set of thruster ports. They use the gas from environment or subject's internals for propulsion in zero-gravity areas. \
 	Unlike regular jetpacks, this device has no stabilization system."
@@ -164,7 +164,7 @@
 	w_class = WEIGHT_CLASS_NORMAL
 	var/on = FALSE
 
-/obj/item/organ/internal/cyberimp/chest/thrusters/Initialize(mapload)
+/obj/item/organ/cyberimp/chest/thrusters/Initialize(mapload)
 	. = ..()
 	AddComponent( \
 		/datum/component/jetpack, \
@@ -178,21 +178,21 @@
 		/datum/effect_system/trail_follow/ion, \
 	)
 
-/obj/item/organ/internal/cyberimp/chest/thrusters/Remove(mob/living/carbon/thruster_owner, special, movement_flags)
+/obj/item/organ/cyberimp/chest/thrusters/Remove(mob/living/carbon/thruster_owner, special, movement_flags)
 	if(on)
 		deactivate(silent = TRUE)
 	..()
 
-/obj/item/organ/internal/cyberimp/chest/thrusters/ui_action_click()
+/obj/item/organ/cyberimp/chest/thrusters/ui_action_click()
 	toggle()
 
-/obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle(silent = FALSE)
+/obj/item/organ/cyberimp/chest/thrusters/proc/toggle(silent = FALSE)
 	if(on)
 		deactivate()
 	else
 		activate()
 
-/obj/item/organ/internal/cyberimp/chest/thrusters/proc/activate(silent = FALSE)
+/obj/item/organ/cyberimp/chest/thrusters/proc/activate(silent = FALSE)
 	if(on)
 		return
 	if(organ_flags & ORGAN_FAILING)
@@ -208,7 +208,7 @@
 		to_chat(owner, span_notice("You turn your thrusters set on."))
 	update_appearance()
 
-/obj/item/organ/internal/cyberimp/chest/thrusters/proc/deactivate(silent = FALSE)
+/obj/item/organ/cyberimp/chest/thrusters/proc/deactivate(silent = FALSE)
 	if(!on)
 		return
 	SEND_SIGNAL(src, COMSIG_THRUSTER_DEACTIVATED, owner)
@@ -218,11 +218,11 @@
 	on = FALSE
 	update_appearance()
 
-/obj/item/organ/internal/cyberimp/chest/thrusters/update_icon_state()
+/obj/item/organ/cyberimp/chest/thrusters/update_icon_state()
 	icon_state = "[base_icon_state][on ? "-on" : null]"
 	return ..()
 
-/obj/item/organ/internal/cyberimp/chest/thrusters/proc/allow_thrust(num, use_fuel = TRUE)
+/obj/item/organ/cyberimp/chest/thrusters/proc/allow_thrust(num, use_fuel = TRUE)
 	if(!owner)
 		return FALSE
 
@@ -257,7 +257,7 @@
 	deactivate(silent = TRUE)
 	return FALSE
 
-/obj/item/organ/internal/cyberimp/chest/spine
+/obj/item/organ/cyberimp/chest/spine
 	name = "\improper Herculean gravitronic spinal implant"
 	desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \
 		Contains a slot which can be upgraded with a gravity anomaly core, improving its performance."
@@ -265,8 +265,10 @@
 	slot = ORGAN_SLOT_SPINE
 	/// How much faster does the spinal implant improve our lifting speed, workout ability, reducing falling damage and improving climbing and standing speed
 	var/athletics_boost_multiplier = 0.8
+	/// How much additional throwing speed does our spinal implant grant us.
+	var/added_throw_speed = 1
 	/// How much additional throwing range does our spinal implant grant us.
-	var/added_throw_range = 2
+	var/added_throw_range = 4
 	/// How much additional boxing damage and tackling power do we add?
 	var/strength_bonus = 4
 	/// Whether or not a gravity anomaly core has been installed, improving the effectiveness of the spinal implant.
@@ -274,29 +276,33 @@
 	/// The overlay for our implant to indicate that, yes, this person has an implant inserted.
 	var/mutable_appearance/stone_overlay
 
-/obj/item/organ/internal/cyberimp/chest/spine/emp_act(severity)
+/obj/item/organ/cyberimp/chest/spine/emp_act(severity)
 	. = ..()
 	if(!owner || . & EMP_PROTECT_SELF)
 		return
 	to_chat(owner, span_warning("You feel sheering pain as your body is crushed like a soda can!"))
 	owner.apply_damage(20/severity, BRUTE, def_zone = BODY_ZONE_CHEST)
 
-/obj/item/organ/internal/cyberimp/chest/spine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/cyberimp/chest/spine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 	stone_overlay = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "stone")
 	organ_owner.add_overlay(stone_overlay)
+	add_organ_trait(TRAIT_BOULDER_BREAKER)
 	if(core_applied)
 		organ_owner.AddElement(/datum/element/forced_gravity, 1)
+		add_organ_trait(TRAIT_STURDY_FRAME)
 
-/obj/item/organ/internal/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
+	remove_organ_trait(TRAIT_BOULDER_BREAKER)
 	if(stone_overlay)
 		organ_owner.cut_overlay(stone_overlay)
 		stone_overlay = null
 	if(core_applied)
 		organ_owner.RemoveElement(/datum/element/forced_gravity, 1)
+		remove_organ_trait(TRAIT_STURDY_FRAME)
 
-/obj/item/organ/internal/cyberimp/chest/spine/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+/obj/item/organ/cyberimp/chest/spine/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
 	. = ..()
 	if(core_applied)
 		user.balloon_alert(user, "core already installed!")
@@ -304,14 +310,26 @@
 
 	if(istype(tool, /obj/item/assembly/signaler/anomaly/grav))
 		user.balloon_alert(user, "core installed.")
-		athletics_boost_multiplier = 0.25
-		added_throw_range += 2
-		strength_bonus += 4
+		name = /obj/item/organ/cyberimp/chest/spine/atlas::name
+		desc = /obj/item/organ/cyberimp/chest/spine/atlas::desc
+		athletics_boost_multiplier = /obj/item/organ/cyberimp/chest/spine/atlas::athletics_boost_multiplier
+		added_throw_range = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_range
+		added_throw_speed = /obj/item/organ/cyberimp/chest/spine/atlas::added_throw_speed
+		strength_bonus = /obj/item/organ/cyberimp/chest/spine/atlas::strength_bonus
 		core_applied = TRUE
-		name = "\improper Atlas gravitonic spinal implant"
-		desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \
-			This one has been improved through the installation of a gravity anomaly core, allowing for personal gravity manipulation."
-		icon_state = "herculean_implant_core"
 		update_appearance()
 		qdel(tool)
 		return ITEM_INTERACT_SUCCESS
+
+/obj/item/organ/cyberimp/chest/spine/atlas
+	name = "\improper Atlas gravitonic spinal implant"
+	desc = "This gravitronic spinal interface is able to improve the athletics of a user, allowing them greater physical ability. \
+		This one has been improved through the installation of a gravity anomaly core, allowing for personal gravity manipulation. \
+		Not only can you walk with your feet planted firmly on the ground even during a loss of enviromental gravity, but you also \
+		carry heavier loads with relative ease."
+	icon_state = "herculean_implant_core"
+	athletics_boost_multiplier = 0.25
+	added_throw_speed = 6
+	added_throw_range = 8
+	strength_bonus = 8
+	core_applied = TRUE
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
index aa67fe0c08d..d720953a24c 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/eyes
+/obj/item/organ/cyberimp/eyes
 	name = "cybernetic eye implant"
 	desc = "Implants for your eyes."
 	icon_state = "eye_implant"
@@ -7,7 +7,7 @@
 	w_class = WEIGHT_CLASS_TINY
 
 // HUD implants
-/obj/item/organ/internal/cyberimp/eyes/hud
+/obj/item/organ/cyberimp/eyes/hud
 	name = "HUD implant"
 	desc = "These cybernetic eyes will display a HUD over everything you see. Maybe."
 	slot = ORGAN_SLOT_HUD
@@ -17,7 +17,7 @@
 	var/toggled_on = TRUE
 
 
-/obj/item/organ/internal/cyberimp/eyes/hud/proc/toggle_hud(mob/living/carbon/eye_owner)
+/obj/item/organ/cyberimp/eyes/hud/proc/toggle_hud(mob/living/carbon/eye_owner)
 	if(toggled_on)
 		toggled_on = FALSE
 		eye_owner.add_traits(HUD_traits, ORGAN_TRAIT)
@@ -27,36 +27,36 @@
 	eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT)
 	balloon_alert(eye_owner, "hud enabled")
 
-/obj/item/organ/internal/cyberimp/eyes/hud/mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags)
+/obj/item/organ/cyberimp/eyes/hud/mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags)
 	. = ..()
 
 	eye_owner.add_traits(HUD_traits, ORGAN_TRAIT)
 	toggled_on = TRUE
 
-/obj/item/organ/internal/cyberimp/eyes/hud/mob_remove(mob/living/carbon/eye_owner, special, movement_flags)
+/obj/item/organ/cyberimp/eyes/hud/mob_remove(mob/living/carbon/eye_owner, special, movement_flags)
 	. = ..()
 	eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT)
 	toggled_on = FALSE
 
-/obj/item/organ/internal/cyberimp/eyes/hud/medical
+/obj/item/organ/cyberimp/eyes/hud/medical
 	name = "medical HUD implant"
 	desc = "These cybernetic eye implants will display a medical HUD over everything you see."
 	icon_state = "eye_implant_medical"
 	HUD_traits = list(TRAIT_MEDICAL_HUD)
 
-/obj/item/organ/internal/cyberimp/eyes/hud/security
+/obj/item/organ/cyberimp/eyes/hud/security
 	name = "security HUD implant"
 	desc = "These cybernetic eye implants will display a security HUD over everything you see."
 	icon_state = "eye_implant_security"
 	HUD_traits = list(TRAIT_SECURITY_HUD)
 
-/obj/item/organ/internal/cyberimp/eyes/hud/diagnostic
+/obj/item/organ/cyberimp/eyes/hud/diagnostic
 	name = "diagnostic HUD implant"
 	desc = "These cybernetic eye implants will display a diagnostic HUD over everything you see."
 	icon_state = "eye_implant_diagnostic"
 	HUD_traits = list(TRAIT_DIAGNOSTIC_HUD, TRAIT_BOT_PATH_HUD)
 
-/obj/item/organ/internal/cyberimp/eyes/hud/security/syndicate
+/obj/item/organ/cyberimp/eyes/hud/security/syndicate
 	name = "contraband security HUD implant"
 	desc = "A Cybersun Industries brand Security HUD Implant. These illicit cybernetic eye implants will display a security HUD over everything you see."
 	icon_state = "eye_implant_syndicate"
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
index 334c8941f6b..42f0e5ac7b2 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
@@ -1,5 +1,5 @@
 
-/obj/item/organ/internal/cyberimp
+/obj/item/organ/cyberimp
 	name = "cybernetic implant"
 	desc = "A state-of-the-art implant that improves a baseline's functionality."
 
@@ -8,7 +8,7 @@
 	var/implant_color = COLOR_WHITE
 	var/implant_overlay
 
-/obj/item/organ/internal/cyberimp/New(mob/implanted_mob = null)
+/obj/item/organ/cyberimp/New(mob/implanted_mob = null)
 	if(iscarbon(implanted_mob))
 		src.Insert(implanted_mob)
 	if(implant_overlay)
@@ -19,13 +19,13 @@
 
 //[[[[BRAIN]]]]
 
-/obj/item/organ/internal/cyberimp/brain
+/obj/item/organ/cyberimp/brain
 	name = "cybernetic brain implant"
 	desc = "Injectors of extra sub-routines for the brain."
 	zone = BODY_ZONE_HEAD
 	w_class = WEIGHT_CLASS_TINY
 
-/obj/item/organ/internal/cyberimp/brain/emp_act(severity)
+/obj/item/organ/cyberimp/brain/emp_act(severity)
 	. = ..()
 	if(!owner || . & EMP_PROTECT_SELF)
 		return
@@ -34,7 +34,7 @@
 	to_chat(owner, span_warning("Your body seizes up!"))
 
 
-/obj/item/organ/internal/cyberimp/brain/anti_drop
+/obj/item/organ/cyberimp/brain/anti_drop
 	name = "anti-drop implant"
 	desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle."
 	icon_state = "brain_implant_antidrop"
@@ -43,7 +43,7 @@
 	slot = ORGAN_SLOT_BRAIN_CEREBELLUM
 	actions_types = list(/datum/action/item_action/organ_action/toggle)
 
-/obj/item/organ/internal/cyberimp/brain/anti_drop/ui_action_click()
+/obj/item/organ/cyberimp/brain/anti_drop/ui_action_click()
 	active = !active
 	if(active)
 		var/list/hold_list = owner.get_empty_held_indexes()
@@ -63,7 +63,7 @@
 		to_chat(owner, span_notice("Your hands relax..."))
 
 
-/obj/item/organ/internal/cyberimp/brain/anti_drop/emp_act(severity)
+/obj/item/organ/cyberimp/brain/anti_drop/emp_act(severity)
 	. = ..()
 	if(!owner || . & EMP_PROTECT_SELF)
 		return
@@ -78,25 +78,25 @@
 	stored_items = list()
 
 
-/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/release_items()
+/obj/item/organ/cyberimp/brain/anti_drop/proc/release_items()
 	for(var/obj/item/stored_item as anything in stored_items)
 		REMOVE_TRAIT(stored_item, TRAIT_NODROP, IMPLANT_TRAIT)
 		UnregisterSignal(stored_item, COMSIG_ITEM_DROPPED)
 	stored_items = list()
 
 
-/obj/item/organ/internal/cyberimp/brain/anti_drop/Remove(mob/living/carbon/implant_owner, special, movement_flags)
+/obj/item/organ/cyberimp/brain/anti_drop/Remove(mob/living/carbon/implant_owner, special, movement_flags)
 	if(active)
 		ui_action_click()
 	..()
 
-/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/on_held_item_dropped(obj/item/source, mob/user)
+/obj/item/organ/cyberimp/brain/anti_drop/proc/on_held_item_dropped(obj/item/source, mob/user)
 	SIGNAL_HANDLER
 	REMOVE_TRAIT(source, TRAIT_NODROP, IMPLANT_TRAIT)
 	UnregisterSignal(source, COMSIG_ITEM_DROPPED)
 	stored_items -= source
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun
+/obj/item/organ/cyberimp/brain/anti_stun
 	name = "CNS rebooter implant"
 	desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned."
 	icon_state = "brain_implant_rebooter"
@@ -114,28 +114,28 @@
 	var/stun_resistance_time = 6 SECONDS
 	COOLDOWN_DECLARE(implant_cooldown)
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/on_mob_remove(mob/living/carbon/implant_owner)
+/obj/item/organ/cyberimp/brain/anti_stun/on_mob_remove(mob/living/carbon/implant_owner)
 	. = ..()
 	UnregisterSignal(implant_owner, signalCache)
 	UnregisterSignal(implant_owner, COMSIG_LIVING_ENTER_STAMCRIT)
 	remove_stun_buffs(implant_owner)
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/on_mob_insert(mob/living/carbon/receiver)
+/obj/item/organ/cyberimp/brain/anti_stun/on_mob_insert(mob/living/carbon/receiver)
 	. = ..()
 	RegisterSignals(receiver, signalCache, PROC_REF(on_signal))
 	RegisterSignal(receiver, COMSIG_LIVING_ENTER_STAMCRIT, PROC_REF(on_stamcrit))
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/on_signal(datum/source, amount)
+/obj/item/organ/cyberimp/brain/anti_stun/proc/on_signal(datum/source, amount)
 	SIGNAL_HANDLER
 	if(!(organ_flags & ORGAN_FAILING) && amount > 0)
 		addtimer(CALLBACK(src, PROC_REF(clear_stuns)), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE)
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/on_stamcrit(datum/source)
+/obj/item/organ/cyberimp/brain/anti_stun/proc/on_stamcrit(datum/source)
 	SIGNAL_HANDLER
 	if(!(organ_flags & ORGAN_FAILING))
 		addtimer(CALLBACK(src, PROC_REF(clear_stuns)), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE)
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/clear_stuns()
+/obj/item/organ/cyberimp/brain/anti_stun/proc/clear_stuns()
 	if(isnull(owner) || (organ_flags & ORGAN_FAILING) || !COOLDOWN_FINISHED(src, implant_cooldown))
 		return
 
@@ -156,37 +156,37 @@
 	COOLDOWN_START(src, implant_cooldown, 60 SECONDS)
 	addtimer(CALLBACK(src, PROC_REF(implant_ready)),60 SECONDS)
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/implant_ready()
+/obj/item/organ/cyberimp/brain/anti_stun/proc/implant_ready()
 	if(owner)
 		to_chat(owner, span_purple("Your rebooter implant is ready."))
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/give_stun_buffs(mob/living/give_to = owner)
+/obj/item/organ/cyberimp/brain/anti_stun/proc/give_stun_buffs(mob/living/give_to = owner)
 	give_to.add_traits(list(TRAIT_STUNIMMUNE, TRAIT_BATON_RESISTANCE), REF(src))
 	give_to.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/remove_stun_buffs(mob/living/remove_from = owner)
+/obj/item/organ/cyberimp/brain/anti_stun/proc/remove_stun_buffs(mob/living/remove_from = owner)
 	remove_from.remove_traits(list(TRAIT_STUNIMMUNE, TRAIT_BATON_RESISTANCE), REF(src))
 	remove_from.remove_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown)
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/emp_act(severity)
+/obj/item/organ/cyberimp/brain/anti_stun/emp_act(severity)
 	. = ..()
 	if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
 		return
 	organ_flags |= ORGAN_FAILING
 	addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity)
 
-/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/reboot()
+/obj/item/organ/cyberimp/brain/anti_stun/proc/reboot()
 	organ_flags &= ~ORGAN_FAILING
 	implant_ready()
 
-/obj/item/organ/internal/cyberimp/brain/connector
+/obj/item/organ/cyberimp/brain/connector
 	name = "CNS skillchip connector implant"
 	desc = "This cybernetic adds a port to the back of your head, where you can remove or add skillchips at will."
 	icon_state = "brain_implant_connector"
 	slot = ORGAN_SLOT_BRAIN_CNS
 	actions_types = list(/datum/action/item_action/organ_action/use)
 
-/obj/item/organ/internal/cyberimp/brain/connector/ui_action_click()
+/obj/item/organ/cyberimp/brain/connector/ui_action_click()
 
 	to_chat(owner, span_warning("You start fiddling around with [src]..."))
 	playsound(owner, 'sound/items/taperecorder/tape_flip.ogg', 20, vary = TRUE) // asmr
@@ -208,12 +208,12 @@
 		else
 			to_chat(owner, span_warning("You try to insert [owner.get_active_held_item()] into [src], but it won't fit!")) // make it kill you if you shove a crayon inside or something
 	else // no inhand item, assume removal
-		var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(/obj/item/organ/internal/brain)
+		var/obj/item/organ/brain/chippy_brain = owner.get_organ_by_type(/obj/item/organ/brain)
 		if(!chippy_brain)
 			CRASH("we using a brain implant wit no brain")
 		remove_skillchip(chippy_brain)
 
-/obj/item/organ/internal/cyberimp/brain/connector/proc/insert_skillchip(obj/item/skillchip/skillchip)
+/obj/item/organ/cyberimp/brain/connector/proc/insert_skillchip(obj/item/skillchip/skillchip)
 	var/fail_string = owner.implant_skillchip(skillchip, force = FALSE)
 	if(fail_string)
 		to_chat(owner, span_warning(fail_string))
@@ -229,7 +229,7 @@
 	// success!
 	playsound(owner, 'sound/machines/chime.ogg', 10, vary = TRUE)
 
-/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_skillchip(obj/item/organ/internal/brain/chippy_brain)
+/obj/item/organ/cyberimp/brain/connector/proc/remove_skillchip(obj/item/organ/brain/chippy_brain)
 	var/obj/item/skillchip/skillchip = show_radial_menu(owner, owner, chippy_brain.skillchips)
 	if(skillchip)
 		owner.remove_skillchip(skillchip, silent = FALSE)
@@ -241,7 +241,7 @@
 
 	to_chat(owner, span_warning("Your brain is empty!")) // heh
 
-/obj/item/organ/internal/cyberimp/brain/connector/emp_act(severity)
+/obj/item/organ/cyberimp/brain/connector/emp_act(severity)
 	. = ..()
 	if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
 		return
@@ -253,7 +253,7 @@
 		// you either lose a chip or a bit of your brain
 		owner.visible_message(span_warning("Something falls to the ground from behind [owner]'s head."),\
 			span_boldwarning("You feel something fall off from behind your head."))
-		var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(ORGAN_SLOT_BRAIN)
+		var/obj/item/organ/brain/chippy_brain = owner.get_organ_by_type(ORGAN_SLOT_BRAIN)
 		var/obj/item/skillchip/skillchip = chippy_brain?.skillchips[1]
 		if(skillchip)
 			owner.remove_skillchip(skillchip, silent = TRUE)
@@ -263,7 +263,7 @@
 			remove_brain()
 	addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity)
 
-/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_brain(obj/item/organ/internal/brain/chippy_brain, severity = 1)
+/obj/item/organ/cyberimp/brain/connector/proc/remove_brain(obj/item/organ/brain/chippy_brain, severity = 1)
 	playsound(owner, 'sound/effects/meatslap.ogg', 25, TRUE)
 	if(!chippy_brain)
 		return
@@ -277,21 +277,21 @@
 	new /obj/effect/decal/cleanable/blood/gibs/up(get_turf(owner))
 	return FALSE
 
-/obj/item/organ/internal/cyberimp/brain/connector/proc/reboot()
+/obj/item/organ/cyberimp/brain/connector/proc/reboot()
 	organ_flags &= ~ORGAN_FAILING
 
 //[[[[MOUTH]]]]
-/obj/item/organ/internal/cyberimp/mouth
+/obj/item/organ/cyberimp/mouth
 	zone = BODY_ZONE_PRECISE_MOUTH
 
-/obj/item/organ/internal/cyberimp/mouth/breathing_tube
+/obj/item/organ/cyberimp/mouth/breathing_tube
 	name = "breathing tube implant"
 	desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked."
 	icon_state = "implant_mask"
 	slot = ORGAN_SLOT_BREATHING_TUBE
 	w_class = WEIGHT_CLASS_TINY
 
-/obj/item/organ/internal/cyberimp/mouth/breathing_tube/emp_act(severity)
+/obj/item/organ/cyberimp/mouth/breathing_tube/emp_act(severity)
 	. = ..()
 	if(!owner || . & EMP_PROTECT_SELF)
 		return
diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm
index b4a0ac79d33..e10dbbf2593 100644
--- a/code/modules/surgery/organs/internal/ears/_ears.dm
+++ b/code/modules/surgery/organs/internal/ears/_ears.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/ears
+/obj/item/organ/ears
 	name = "ears"
 	icon_state = "ears"
 	desc = "There are three parts to the ear. Inner, middle and outer. Only one of these parts should be normally visible."
@@ -26,7 +26,7 @@
 	/// Multiplier for both long term and short term ear damage
 	var/damage_multiplier = 1
 
-/obj/item/organ/internal/ears/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/ears/on_life(seconds_per_tick, times_fired)
 	// only inform when things got worse, needs to happen before we heal
 	if((damage > low_threshold && prev_damage < low_threshold) || (damage > high_threshold && prev_damage < high_threshold))
 		to_chat(owner, span_warning("The ringing in your ears grows louder, blocking out any external noises for a moment."))
@@ -44,20 +44,20 @@
 		adjustEarDamage(0, 4)
 		SEND_SOUND(owner, sound('sound/items/weapons/flash_ring.ogg'))
 
-/obj/item/organ/internal/ears/apply_organ_damage(damage_amount, maximum, required_organ_flag)
+/obj/item/organ/ears/apply_organ_damage(damage_amount, maximum, required_organ_flag)
 	. = ..()
 	update_temp_deafness()
 
-/obj/item/organ/internal/ears/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/ears/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 	update_temp_deafness()
 
-/obj/item/organ/internal/ears/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/ears/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	UnregisterSignal(organ_owner, COMSIG_MOB_SAY)
 	REMOVE_TRAIT(organ_owner, TRAIT_DEAF, EAR_DAMAGE)
 
-/obj/item/organ/internal/ears/get_status_appendix(advanced, add_tooltips)
+/obj/item/organ/ears/get_status_appendix(advanced, add_tooltips)
 	if(owner.stat == DEAD || !HAS_TRAIT(owner, TRAIT_DEAF))
 		return
 	if(advanced)
@@ -69,7 +69,7 @@
 			return conditional_tooltip("Subject is [(organ_flags & ORGAN_FAILING) ? "permanently": "temporarily"] deaf from ear damage.", "Repair surgically, use medication such as [/datum/reagent/medicine/inacusiate::name], or protect ears with earmuffs.", add_tooltips)
 	return "Subject is deaf."
 
-/obj/item/organ/internal/ears/show_on_condensed_scans()
+/obj/item/organ/ears/show_on_condensed_scans()
 	// Always show if we have an appendix
 	return ..() || (owner.stat != DEAD && HAS_TRAIT(owner, TRAIT_DEAF))
 
@@ -79,7 +79,7 @@
  * * ddmg: Handles normal organ damage
  * * ddeaf: Handles temporary deafness, 1 ddeaf = 2 seconds of deafness, by default (with no multiplier)
  */
-/obj/item/organ/internal/ears/proc/adjustEarDamage(ddmg = 0, ddeaf = 0)
+/obj/item/organ/ears/proc/adjustEarDamage(ddmg = 0, ddeaf = 0)
 	if(HAS_TRAIT(owner, TRAIT_GODMODE))
 		update_temp_deafness()
 		return
@@ -93,7 +93,7 @@
 	update_temp_deafness()
 
 /// Updates status of deafness
-/obj/item/organ/internal/ears/proc/update_temp_deafness()
+/obj/item/organ/ears/proc/update_temp_deafness()
 	// if we're failing we always have at least some deaf stacks (and thus deafness)
 	if(organ_flags & ORGAN_FAILING)
 		deaf = max(deaf, 1 * damage_multiplier)
@@ -113,7 +113,7 @@
 		UnregisterSignal(owner, COMSIG_MOB_SAY)
 
 /// Being deafened by loud noises makes you shout
-/obj/item/organ/internal/ears/proc/adjust_speech(datum/source, list/speech_args)
+/obj/item/organ/ears/proc/adjust_speech(datum/source, list/speech_args)
 	SIGNAL_HANDLER
 
 	if(HAS_TRAIT_NOT_FROM(source, TRAIT_DEAF, EAR_DAMAGE))
@@ -141,11 +141,11 @@
 	speech_args[SPEECH_MESSAGE] = message
 	return COMPONENT_UPPERCASE_SPEECH
 
-/obj/item/organ/internal/ears/invincible
+/obj/item/organ/ears/invincible
 	damage_multiplier = 0
 
 
-/obj/item/organ/internal/ears/cat
+/obj/item/organ/ears/cat
 	name = "cat ears"
 	icon = 'icons/obj/clothing/head/costume.dmi'
 	worn_icon = 'icons/mob/clothing/head/costume.dmi'
@@ -164,6 +164,7 @@
 	layers = EXTERNAL_FRONT | EXTERNAL_BEHIND
 	color_source = ORGAN_COLOR_HAIR
 	feature_key = "ears"
+	dyable = TRUE
 
 	/// Layer upon which we add the inner ears overlay
 	var/inner_layer = EXTERNAL_FRONT
@@ -192,21 +193,21 @@
 	base_ears.overlays += inner_ears
 	return base_ears
 
-/obj/item/organ/internal/ears/penguin
+/obj/item/organ/ears/penguin
 	name = "penguin ears"
 	desc = "The source of a penguin's happy feet."
 
-/obj/item/organ/internal/ears/penguin/on_mob_insert(mob/living/carbon/human/ear_owner)
+/obj/item/organ/ears/penguin/on_mob_insert(mob/living/carbon/human/ear_owner)
 	. = ..()
 	to_chat(ear_owner, span_notice("You suddenly feel like you've lost your balance."))
 	ear_owner.AddElementTrait(TRAIT_WADDLING, ORGAN_TRAIT, /datum/element/waddling)
 
-/obj/item/organ/internal/ears/penguin/on_mob_remove(mob/living/carbon/human/ear_owner)
+/obj/item/organ/ears/penguin/on_mob_remove(mob/living/carbon/human/ear_owner)
 	. = ..()
 	to_chat(ear_owner, span_notice("Your sense of balance comes back to you."))
 	REMOVE_TRAIT(ear_owner, TRAIT_WADDLING, ORGAN_TRAIT)
 
-/obj/item/organ/internal/ears/cybernetic
+/obj/item/organ/ears/cybernetic
 	name = "basic cybernetic ears"
 	icon_state = "ears-c"
 	desc = "A basic cybernetic organ designed to mimic the operation of ears."
@@ -214,13 +215,13 @@
 	organ_flags = ORGAN_ROBOTIC
 	failing_desc = "seems to be broken."
 
-/obj/item/organ/internal/ears/cybernetic/upgraded
+/obj/item/organ/ears/cybernetic/upgraded
 	name = "cybernetic ears"
 	icon_state = "ears-c-u"
 	desc =  "An advanced cybernetic ear, surpassing the performance of organic ears."
 	damage_multiplier = 0.5
 
-/obj/item/organ/internal/ears/cybernetic/whisper
+/obj/item/organ/ears/cybernetic/whisper
 	name = "whisper-sensitive cybernetic ears"
 	icon_state = "ears-c-u"
 	desc = "Allows the user to more easily hear whispers. The user becomes extra vulnerable to loud noises, however"
@@ -229,31 +230,31 @@
 
 // The original idea was to use signals to do this not traits. Unfortunately, the star effect used for whispers applies before any relevant signals
 // This seems like the least invasive solution
-/obj/item/organ/internal/ears/cybernetic/whisper/on_mob_insert(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/cybernetic/whisper/on_mob_insert(mob/living/carbon/ear_owner)
 	. = ..()
 	ADD_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT)
 
-/obj/item/organ/internal/ears/cybernetic/whisper/on_mob_remove(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/cybernetic/whisper/on_mob_remove(mob/living/carbon/ear_owner)
 	. = ..()
 	REMOVE_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT)
 
 // "X-ray ears" that let you hear through walls
-/obj/item/organ/internal/ears/cybernetic/xray
+/obj/item/organ/ears/cybernetic/xray
 	name = "wall-penetrating cybernetic ears"
 	icon_state = "ears-c-u"
 	desc = "Through the power of modern engineering, allows the user to hear speech through walls. The user becomes extra vulnerable to loud noises, however"
 	// Same sensitivity as felinid ears
 	damage_multiplier = 2
 
-/obj/item/organ/internal/ears/cybernetic/xray/on_mob_insert(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/cybernetic/xray/on_mob_insert(mob/living/carbon/ear_owner)
 	. = ..()
 	ADD_TRAIT(ear_owner, TRAIT_XRAY_HEARING, ORGAN_TRAIT)
 
-/obj/item/organ/internal/ears/cybernetic/xray/on_mob_remove(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/cybernetic/xray/on_mob_remove(mob/living/carbon/ear_owner)
 	. = ..()
 	REMOVE_TRAIT(ear_owner, TRAIT_XRAY_HEARING, ORGAN_TRAIT)
 
-/obj/item/organ/internal/ears/cybernetic/emp_act(severity)
+/obj/item/organ/ears/cybernetic/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF)
 		return
diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm
index 781949aa422..69a35d0c5e7 100644
--- a/code/modules/surgery/organs/internal/eyes/_eyes.dm
+++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/eyes
+/obj/item/organ/eyes
 	name = BODY_ZONE_PRECISE_EYES
 	icon_state = "eyes"
 	desc = "I see you!"
@@ -40,10 +40,6 @@
 	var/eye_color_left = "" //set to a hex code to override a mob's left eye color
 	var/eye_color_right = "" //set to a hex code to override a mob's right eye color
 	var/eye_icon_state = "eyes"
-	/// The color of the previous left eye before this one was inserted
-	var/old_eye_color_left = "fff"
-	/// The color of the previous right eye before this one was inserted
-	var/old_eye_color_right = "fff"
 
 	/// Glasses cannot be worn over these eyes. Currently unused
 	var/no_glasses = FALSE
@@ -54,15 +50,8 @@
 	/// Scarring on this organ
 	var/scarring = NONE
 
-/obj/item/organ/internal/eyes/mob_insert(mob/living/carbon/receiver, special, movement_flags)
-	// If we don't do this before everything else, heterochromia will be reset leading to eye_color_right no longer being accurate
-	if(ishuman(receiver))
-		var/mob/living/carbon/human/human_recipient = receiver
-		old_eye_color_left = human_recipient.eye_color_left
-		old_eye_color_right = human_recipient.eye_color_right
-
+/obj/item/organ/eyes/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	. = ..()
-
 	receiver.cure_blind(NO_EYES)
 	apply_damaged_eye_effects()
 	refresh(receiver, call_update = TRUE)
@@ -70,7 +59,7 @@
 
 /// Refreshes the visuals of the eyes
 /// If call_update is TRUE, we also will call update_body
-/obj/item/organ/internal/eyes/proc/refresh(mob/living/carbon/eye_owner = owner, call_update = TRUE)
+/obj/item/organ/eyes/proc/refresh(mob/living/carbon/eye_owner = owner, call_update = TRUE)
 	owner.update_sight()
 	owner.update_tint()
 
@@ -78,14 +67,11 @@
 		return
 
 	var/mob/living/carbon/human/affected_human = eye_owner
-	if(initial(eye_color_left))
-		affected_human.eye_color_left = eye_color_left
-	else
-		eye_color_left = affected_human.eye_color_left
-	if(initial(eye_color_right))
-		affected_human.eye_color_right = eye_color_right
-	else
-		eye_color_right = affected_human.eye_color_right
+	if(eye_color_left)
+		affected_human.add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
+	if(eye_color_right)
+		affected_human.add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
+
 	if(HAS_TRAIT(affected_human, TRAIT_NIGHT_VISION)) // NOVA EDIT CHANGE - ORIGINAL: if(HAS_TRAIT(affected_human, TRAIT_NIGHT_VISION) && !lighting_cutoff)
 		//lighting_cutoff = LIGHTING_CUTOFF_REAL_LOW // NOVA EDIT REMOVAL
 		// NOVA EDIT ADDITION START - NIGHT VISION ADJUSTMENT - adjusts color cutoffs based on chosen quirk color, or left eye colour if not available
@@ -104,15 +90,12 @@
 	if(call_update)
 		affected_human.update_body()
 
-/obj/item/organ/internal/eyes/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/eyes/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 
 	if(ishuman(organ_owner))
 		var/mob/living/carbon/human/human_owner = organ_owner
-		if(initial(eye_color_left))
-			human_owner.eye_color_left = old_eye_color_left
-		if(initial(eye_color_right))
-			human_owner.eye_color_right = old_eye_color_right
+		human_owner.remove_eye_color(EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
 		if(native_fov)
 			organ_owner.remove_fov_trait(type)
 		if(!special)
@@ -133,7 +116,7 @@
 	is_emissive = FALSE // NOVA EDIT ADDITION
 	UnregisterSignal(organ_owner, COMSIG_ATOM_BULLET_ACT)
 
-/obj/item/organ/internal/eyes/proc/on_bullet_act(mob/living/carbon/source, obj/projectile/proj, def_zone)
+/obj/item/organ/eyes/proc/on_bullet_act(mob/living/carbon/source, obj/projectile/proj, def_zone)
 	SIGNAL_HANDLER
 
 	// Once-a-dozen-rounds level of rare
@@ -165,7 +148,7 @@
 #define OFFSET_Y 2
 
 /// Similar to get_status_text, but appends the text after the damage report, for additional status info
-/obj/item/organ/internal/eyes/get_status_appendix(advanced, add_tooltips)
+/obj/item/organ/eyes/get_status_appendix(advanced, add_tooltips)
 	if(owner.stat == DEAD || HAS_TRAIT(owner, TRAIT_KNOCKEDOUT))
 		return
 	if(owner.is_blind())
@@ -194,13 +177,13 @@
 		return "Subject is nearsighted."
 	return ""
 
-/obj/item/organ/internal/eyes/show_on_condensed_scans()
+/obj/item/organ/eyes/show_on_condensed_scans()
 	// Always show if we have an appendix
 	return ..() || (owner.stat != DEAD && !HAS_TRAIT(owner, TRAIT_KNOCKEDOUT) && (owner.is_blind() || owner.is_nearsighted()))
 
 /// This proc generates a list of overlays that the eye should be displayed using for the given parent
-/obj/item/organ/internal/eyes/proc/generate_body_overlay(mob/living/carbon/human/parent)
-	if(!istype(parent) || parent.get_organ_by_type(/obj/item/organ/internal/eyes) != src)
+/obj/item/organ/eyes/proc/generate_body_overlay(mob/living/carbon/human/parent)
+	if(!istype(parent) || parent.get_organ_by_type(/obj/item/organ/eyes) != src)
 		CRASH("Generating a body overlay for [src] targeting an invalid parent '[parent]'.")
 
 	if(isnull(eye_icon_state))
@@ -226,8 +209,8 @@
 	if(my_head.head_flags & HEAD_EYECOLOR)
 		if(IS_ROBOTIC_ORGAN(src) || !my_head.draw_color || (parent.appears_alive() && !HAS_TRAIT(parent, TRAIT_KNOCKEDOUT)))
 			// show the eyes as open
-			eye_right.color = eye_color_right
-			eye_left.color = eye_color_left
+			eye_right.color = parent.get_right_eye_color()
+			eye_left.color = parent.get_left_eye_color()
 		else
 			// show the eyes as closed, and as such color them like eyelids wound be colored
 			var/list/base_color = rgb2num(my_head.draw_color, COLORSPACE_HSL)
@@ -271,14 +254,14 @@
 
 	return overlays
 
-/obj/item/organ/internal/eyes/update_overlays()
+/obj/item/organ/eyes/update_overlays()
 	. = ..()
 	if (scarring & RIGHT_EYE_SCAR)
 		. += mutable_appearance('icons/obj/medical/organs/organs.dmi', "eye_scar_right")
 	if (scarring & LEFT_EYE_SCAR)
 		. += mutable_appearance('icons/obj/medical/organs/organs.dmi', "eye_scar_left")
 
-/obj/item/organ/internal/eyes/proc/apply_scar(side)
+/obj/item/organ/eyes/proc/apply_scar(side)
 	if (scarring & side)
 		return
 	scarring |= side
@@ -286,7 +269,7 @@
 	update_appearance()
 	apply_scarring_effects()
 
-/obj/item/organ/internal/eyes/proc/apply_scarring_effects()
+/obj/item/organ/eyes/proc/apply_scarring_effects()
 	if (!owner)
 		return
 	var/datum/status_effect/grouped/nearsighted/nearsightedness = owner.is_nearsighted()
@@ -302,7 +285,7 @@
 		owner.become_blind(EYE_SCARRING_TRAIT)
 	owner.update_body()
 
-/obj/item/organ/internal/eyes/proc/fix_scar(side)
+/obj/item/organ/eyes/proc/fix_scar(side)
 	if (!(scarring & side))
 		return
 	scarring &= ~side
@@ -314,12 +297,12 @@
 	owner.cure_blind(EYE_SCARRING_TRAIT)
 	owner.update_body()
 
-/obj/item/organ/internal/eyes/on_mob_insert(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/on_mob_insert(mob/living/carbon/eye_owner)
 	. = ..()
 	if (scarring)
 		apply_scarring_effects()
 
-/obj/item/organ/internal/eyes/on_mob_remove(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/on_mob_remove(mob/living/carbon/eye_owner)
 	. = ..()
 	if (scarring)
 		eye_owner.cure_nearsighted(TRAIT_RIGHT_EYE_SCAR)
@@ -330,19 +313,19 @@
 #undef OFFSET_Y
 
 //Gotta reset the eye color, because that persists
-/obj/item/organ/internal/eyes/enter_wardrobe()
+/obj/item/organ/eyes/enter_wardrobe()
 	. = ..()
 	eye_color_left = initial(eye_color_left)
 	eye_color_right = initial(eye_color_right)
 
-/obj/item/organ/internal/eyes/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag)
+/obj/item/organ/eyes/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag)
 	. = ..()
 	if(!owner)
 		return FALSE
 	apply_damaged_eye_effects()
 
 /// Applies effects to our owner based on how damaged our eyes are
-/obj/item/organ/internal/eyes/proc/apply_damaged_eye_effects()
+/obj/item/organ/eyes/proc/apply_damaged_eye_effects()
 	// we're in healthy threshold, either try to heal (if damaged) or do nothing
 	if(damage <= low_threshold)
 		if(damaged)
@@ -379,7 +362,7 @@
 #define NIGHTVISION_LIGHT_MID 2
 #define NIGHTVISION_LIGHT_HIG 3
 
-/obj/item/organ/internal/eyes/night_vision
+/obj/item/organ/eyes/night_vision
 	actions_types = list(/datum/action/item_action/organ_action/use)
 
 	// These lists are used as the color cutoff for the eye
@@ -389,16 +372,16 @@
 	var/list/high_light_cutoff
 	var/light_level = NIGHTVISION_LIGHT_OFF
 
-/obj/item/organ/internal/eyes/night_vision/Initialize(mapload)
+/obj/item/organ/eyes/night_vision/Initialize(mapload)
 	. = ..()
-	if (PERFORM_ALL_TESTS(focus_only/nightvision_color_cutoffs) && type != /obj/item/organ/internal/eyes/night_vision)
+	if (PERFORM_ALL_TESTS(focus_only/nightvision_color_cutoffs) && type != /obj/item/organ/eyes/night_vision)
 		if(length(low_light_cutoff) != 3 || length(medium_light_cutoff) != 3 || length(high_light_cutoff) != 3)
 			stack_trace("[type] did not have fully filled out color cutoff lists")
 	if(low_light_cutoff)
 		color_cutoffs = low_light_cutoff.Copy()
 	light_level = NIGHTVISION_LIGHT_LOW
 
-/obj/item/organ/internal/eyes/night_vision/ui_action_click()
+/obj/item/organ/eyes/night_vision/ui_action_click()
 	sight_flags = initial(sight_flags)
 	switch(light_level)
 		if (NIGHTVISION_LIGHT_OFF)
@@ -420,25 +403,25 @@
 #undef NIGHTVISION_LIGHT_MID
 #undef NIGHTVISION_LIGHT_HIG
 
-/obj/item/organ/internal/eyes/night_vision/mushroom
+/obj/item/organ/eyes/night_vision/mushroom
 	name = "fung-eye"
 	desc = "While on the outside they look inert and dead, the eyes of mushroom people are actually very advanced."
 	low_light_cutoff = list(0, 15, 20)
 	medium_light_cutoff = list(0, 20, 35)
 	high_light_cutoff = list(0, 40, 50)
 
-/obj/item/organ/internal/eyes/zombie
+/obj/item/organ/eyes/zombie
 	name = "undead eyes"
 	desc = "Somewhat counterintuitively, these half-rotten eyes actually have superior vision to those of a living human."
 	color_cutoffs = list(25, 35, 5)
 
-/obj/item/organ/internal/eyes/alien
+/obj/item/organ/eyes/alien
 	name = "alien eyes"
 	desc = "It turned out they had them after all!"
 	sight_flags = SEE_MOBS
 	color_cutoffs = list(25, 5, 42)
 
-/obj/item/organ/internal/eyes/golem
+/obj/item/organ/eyes/golem
 	name = "resonating crystal"
 	icon_state = "adamantine_cords"
 	eye_icon_state = null
@@ -464,14 +447,14 @@
 
 ///Robotic
 
-/obj/item/organ/internal/eyes/robotic
+/obj/item/organ/eyes/robotic
 	name = "robotic eyes"
 	icon_state = "cybernetic_eyeballs"
 	desc = "Your vision is augmented."
 	organ_flags = ORGAN_ROBOTIC
 	failing_desc = "seems to be broken."
 
-/obj/item/organ/internal/eyes/robotic/emp_act(severity)
+/obj/item/organ/eyes/robotic/emp_act(severity)
 	. = ..()
 	if((. & EMP_PROTECT_SELF) || !owner)
 		return
@@ -480,14 +463,14 @@
 	to_chat(owner, span_warning("Static obfuscates your vision!"))
 	owner.flash_act(visual = 1)
 
-/obj/item/organ/internal/eyes/robotic/basic
+/obj/item/organ/eyes/robotic/basic
 	name = "basic robotic eyes"
 	desc = "A pair of basic cybernetic eyes that restore vision, but at some vulnerability to light."
 	eye_color_left = "5500ff"
 	eye_color_right = "5500ff"
 	flash_protect = FLASH_PROTECTION_SENSITIVE
 
-/obj/item/organ/internal/eyes/robotic/basic/emp_act(severity)
+/obj/item/organ/eyes/robotic/basic/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF)
 		return
@@ -497,22 +480,22 @@
 		do_sparks(2, TRUE, owner)
 		owner.emote("scream")
 
-/obj/item/organ/internal/eyes/robotic/xray
+/obj/item/organ/eyes/robotic/xray
 	name = "\improper X-ray eyes"
 	desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile."
 	eye_color_left = "000"
 	eye_color_right = "000"
 	sight_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS
 
-/obj/item/organ/internal/eyes/robotic/xray/on_mob_insert(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/robotic/xray/on_mob_insert(mob/living/carbon/eye_owner)
 	. = ..()
 	ADD_TRAIT(eye_owner, TRAIT_XRAY_VISION, ORGAN_TRAIT)
 
-/obj/item/organ/internal/eyes/robotic/xray/on_mob_remove(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/robotic/xray/on_mob_remove(mob/living/carbon/eye_owner)
 	. = ..()
 	REMOVE_TRAIT(eye_owner, TRAIT_XRAY_VISION, ORGAN_TRAIT)
 
-/obj/item/organ/internal/eyes/robotic/thermals
+/obj/item/organ/eyes/robotic/thermals
 	name = "thermal eyes"
 	desc = "These cybernetic eye implants will give you thermal vision. Vertical slit pupil included."
 	eye_color_left = "FC0"
@@ -522,7 +505,7 @@
 	sight_flags = SEE_MOBS
 	flash_protect = FLASH_PROTECTION_SENSITIVE
 
-/obj/item/organ/internal/eyes/robotic/flashlight
+/obj/item/organ/eyes/robotic/flashlight
 	name = "flashlight eyes"
 	desc = "It's two flashlights rigged together with some wire. Why would you put these in someone's head?"
 	eye_color_left ="fee5a3"
@@ -533,11 +516,11 @@
 	tint = INFINITY
 	var/obj/item/flashlight/eyelight/eye
 
-/obj/item/organ/internal/eyes/robotic/flashlight/Initialize(mapload)
+/obj/item/organ/eyes/robotic/flashlight/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/empprotection, EMP_PROTECT_ALL)
 
-/obj/item/organ/internal/eyes/robotic/flashlight/on_mob_insert(mob/living/carbon/victim)
+/obj/item/organ/eyes/robotic/flashlight/on_mob_insert(mob/living/carbon/victim)
 	. = ..()
 	if(!eye)
 		eye = new /obj/item/flashlight/eyelight()
@@ -546,7 +529,7 @@
 	eye.update_brightness(victim)
 	victim.become_blind(FLASHLIGHT_EYES)
 
-/obj/item/organ/internal/eyes/robotic/flashlight/on_mob_remove(mob/living/carbon/victim)
+/obj/item/organ/eyes/robotic/flashlight/on_mob_remove(mob/living/carbon/victim)
 	. = ..()
 	eye.set_light_on(FALSE)
 	eye.update_brightness(victim)
@@ -554,12 +537,12 @@
 	victim.cure_blind(FLASHLIGHT_EYES)
 
 // Welding shield implant
-/obj/item/organ/internal/eyes/robotic/shield
+/obj/item/organ/eyes/robotic/shield
 	name = "shielded robotic eyes"
 	desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision."
 	flash_protect = FLASH_PROTECTION_WELDER
 
-/obj/item/organ/internal/eyes/robotic/shield/Initialize(mapload)
+/obj/item/organ/eyes/robotic/shield/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/empprotection, EMP_PROTECT_ALL)
 
@@ -569,7 +552,7 @@
 #define UPDATE_EYES_LEFT 1
 #define UPDATE_EYES_RIGHT 2
 
-/obj/item/organ/internal/eyes/robotic/glow
+/obj/item/organ/eyes/robotic/glow
 	name = "High Luminosity Eyes"
 	desc = "Special glowing eyes, used by snowflakes who want to be special."
 	eye_color_left = "000"
@@ -588,43 +571,43 @@
 	/// The custom selected eye color for the right eye. Defaults to the mob's natural eye color
 	var/right_eye_color_string
 
-/obj/item/organ/internal/eyes/robotic/glow/Initialize(mapload)
+/obj/item/organ/eyes/robotic/glow/Initialize(mapload)
 	. = ..()
 	eye = new /obj/item/flashlight/eyelight/glow
 
-/obj/item/organ/internal/eyes/robotic/glow/Destroy()
+/obj/item/organ/eyes/robotic/glow/Destroy()
 	. = ..()
 	deactivate(close_ui = TRUE)
 	QDEL_NULL(eye)
 
-/obj/item/organ/internal/eyes/robotic/glow/emp_act(severity)
+/obj/item/organ/eyes/robotic/glow/emp_act(severity)
 	. = ..()
 	if(!eye.light_on || . & EMP_PROTECT_SELF)
 		return
 	deactivate(close_ui = TRUE)
 
 /// Set the initial color of the eyes on insert to be the mob's previous eye color.
-/obj/item/organ/internal/eyes/robotic/glow/mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/eyes/robotic/glow/mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags = DELETE_IF_REPLACED)
 	. = ..()
-	left_eye_color_string = old_eye_color_left
-	right_eye_color_string = old_eye_color_right
+	left_eye_color_string = eye_color_left
+	right_eye_color_string = eye_color_right
 	update_mob_eye_color(eye_recipient)
 
-/obj/item/organ/internal/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient)
+/obj/item/organ/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient)
 	. = ..()
 	deactivate(close_ui = TRUE)
 	eye.forceMove(eye_recipient)
 
-/obj/item/organ/internal/eyes/robotic/glow/on_mob_remove(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/robotic/glow/on_mob_remove(mob/living/carbon/eye_owner)
 	deactivate(eye_owner, close_ui = TRUE)
 	if(!QDELETED(eye))
 		eye.forceMove(src)
 	return ..()
 
-/obj/item/organ/internal/eyes/robotic/glow/ui_state(mob/user)
+/obj/item/organ/eyes/robotic/glow/ui_state(mob/user)
 	return GLOB.default_state
 
-/obj/item/organ/internal/eyes/robotic/glow/ui_status(mob/user, datum/ui_state/state)
+/obj/item/organ/eyes/robotic/glow/ui_status(mob/user, datum/ui_state/state)
 	if(!QDELETED(owner))
 		if(owner == user)
 			return min(
@@ -634,14 +617,14 @@
 		else return UI_CLOSE
 	return ..()
 
-/obj/item/organ/internal/eyes/robotic/glow/ui_interact(mob/user, datum/tgui/ui)
+/obj/item/organ/eyes/robotic/glow/ui_interact(mob/user, datum/tgui/ui)
 	ui = SStgui.try_update_ui(user, src, ui)
 	if(!ui)
 		ui = new(user, src, "HighLuminosityEyesMenu")
 		ui.autoupdate = FALSE
 		ui.open()
 
-/obj/item/organ/internal/eyes/robotic/glow/ui_data(mob/user)
+/obj/item/organ/eyes/robotic/glow/ui_data(mob/user)
 	var/list/data = list()
 
 	data["eyeColor"] = list(
@@ -655,7 +638,7 @@
 
 	return data
 
-/obj/item/organ/internal/eyes/robotic/glow/ui_act(action, list/params, datum/tgui/ui)
+/obj/item/organ/eyes/robotic/glow/ui_act(action, list/params, datum/tgui/ui)
 	. = ..()
 	if(.)
 		return
@@ -689,7 +672,7 @@
 			toggle_eye_color_mode()
 			return TRUE
 
-/obj/item/organ/internal/eyes/robotic/glow/ui_action_click(mob/user, action)
+/obj/item/organ/eyes/robotic/glow/ui_action_click(mob/user, action)
 	if(istype(action, /datum/action/item_action/organ_action/toggle))
 		toggle_active()
 	else if(istype(action, /datum/action/item_action/organ_action/use))
@@ -700,7 +683,7 @@
  *
  * Turns on the attached flashlight object, updates the mob overlay to be added.
  */
-/obj/item/organ/internal/eyes/robotic/glow/proc/activate()
+/obj/item/organ/eyes/robotic/glow/proc/activate()
 	if(eye.light_range)
 		eye.set_light_on(TRUE)
 	else
@@ -715,7 +698,7 @@
  * * mob/living/carbon/eye_owner - the mob who the eyes belong to
  * * close_ui - whether or not to close the ui
  */
-/obj/item/organ/internal/eyes/robotic/glow/proc/deactivate(mob/living/carbon/eye_owner = owner, close_ui = FALSE)
+/obj/item/organ/eyes/robotic/glow/proc/deactivate(mob/living/carbon/eye_owner = owner, close_ui = FALSE)
 	if(close_ui)
 		SStgui.close_uis(src)
 	eye.set_light_on(FALSE)
@@ -728,7 +711,7 @@
  * Arguments:
  * * to_update - whether we are setting the color for the light beam itself, or the individual eyes
  */
-/obj/item/organ/internal/eyes/robotic/glow/proc/randomize_color(to_update = UPDATE_LIGHT)
+/obj/item/organ/eyes/robotic/glow/proc/randomize_color(to_update = UPDATE_LIGHT)
 	var/new_color = "#"
 	for(var/i in 1 to 3)
 		new_color += num2hex(rand(0, 255), 2)
@@ -742,7 +725,7 @@
  * Arguments:
  * * new_range - the new range to set
  */
-/obj/item/organ/internal/eyes/robotic/glow/proc/set_beam_range(new_range)
+/obj/item/organ/eyes/robotic/glow/proc/set_beam_range(new_range)
 	var/old_light_range = eye.light_range
 	if(old_light_range == 0 && new_range > 0 && eye.light_on) // turn bring back the light overlay if we were previously at 0 (aka emissive eyes only)
 		eye.light_on = FALSE // this is stupid, but this has to be FALSE for set_light_on() to work.
@@ -758,7 +741,7 @@
  * * to_update - whether we are setting the color for the light beam itself, or the individual eyes
  * * sanitize - whether the hex string should be sanitized
  */
-/obj/item/organ/internal/eyes/robotic/glow/proc/set_beam_color(newcolor, to_update = UPDATE_LIGHT, sanitize = FALSE)
+/obj/item/organ/eyes/robotic/glow/proc/set_beam_color(newcolor, to_update = UPDATE_LIGHT, sanitize = FALSE)
 	var/newcolor_string
 	if(sanitize)
 		newcolor_string = sanitize_hexcolor(newcolor)
@@ -778,7 +761,7 @@
 /**
  * Toggle the attached flashlight object on or off
  */
-/obj/item/organ/internal/eyes/robotic/glow/proc/toggle_active()
+/obj/item/organ/eyes/robotic/glow/proc/toggle_active()
 	if(eye.light_on)
 		deactivate()
 	else
@@ -789,7 +772,7 @@
  *
  * Toggles the eye color mode on or off and then calls an update on the mob's eye color
  */
-/obj/item/organ/internal/eyes/robotic/glow/proc/toggle_eye_color_mode()
+/obj/item/organ/eyes/robotic/glow/proc/toggle_eye_color_mode()
 	eye_color_mode = !eye_color_mode
 	update_mob_eye_color()
 
@@ -800,7 +783,7 @@
  * Arguments:
  * * mob/living/carbon/eye_owner - the mob to update the eye color appearance of
  */
-/obj/item/organ/internal/eyes/robotic/glow/proc/update_mob_eye_color(mob/living/carbon/eye_owner = owner)
+/obj/item/organ/eyes/robotic/glow/proc/update_mob_eye_color(mob/living/carbon/eye_owner = owner)
 	switch(eye_color_mode)
 		if(MATCH_LIGHT_COLOR)
 			eye_color_left = light_color_string
@@ -831,39 +814,39 @@
 #undef UPDATE_EYES_LEFT
 #undef UPDATE_EYES_RIGHT
 
-/obj/item/organ/internal/eyes/moth
+/obj/item/organ/eyes/moth
 	name = "moth eyes"
 	desc = "These eyes seem to have increased sensitivity to bright light, with no improvement to low light vision."
 	eye_icon_state = "motheyes"
 	icon_state = "eyeballs-moth"
 	flash_protect = FLASH_PROTECTION_SENSITIVE
 
-/obj/item/organ/internal/eyes/robotic/moth
+/obj/item/organ/eyes/robotic/moth
 	name = "robotic moth eyes"
 	eye_icon_state = "motheyes"
 	icon_state = "eyeballs-cybermoth"
 	desc = "Your vision is augmented. Much like actual moth eyes, very sensitive to bright lights."
 	flash_protect = FLASH_PROTECTION_SENSITIVE
 
-/obj/item/organ/internal/eyes/robotic/basic/moth
+/obj/item/organ/eyes/robotic/basic/moth
 	name = "basic robotic moth eyes"
 	eye_icon_state = "motheyes"
 	icon_state = "eyeballs-cybermoth"
 	flash_protect = FLASH_PROTECTION_SENSITIVE
 
-/obj/item/organ/internal/eyes/robotic/xray/moth
+/obj/item/organ/eyes/robotic/xray/moth
 	name = "robotic eyes"
 	eye_icon_state = "motheyes"
 	icon_state = "eyeballs-cybermoth"
 	desc = "These cybernetic imitation moth eyes will give you X-ray vision. Blinking is futile. Much like actual moth eyes, very sensitive to bright lights."
 	flash_protect = FLASH_PROTECTION_SENSITIVE
 
-/obj/item/organ/internal/eyes/robotic/shield/moth
+/obj/item/organ/eyes/robotic/shield/moth
 	name = "shielded robotic moth eyes"
 	eye_icon_state = "motheyes"
 	icon_state = "eyeballs-cybermoth"
 
-/obj/item/organ/internal/eyes/robotic/glow/moth
+/obj/item/organ/eyes/robotic/glow/moth
 	name = "High Luminosity Moth Eyes"
 	eye_icon_state = "motheyes"
 	base_eye_state = "eyes_mothglow"
@@ -871,25 +854,25 @@
 	desc = "Special glowing eyes, to be one with the lamp. Much like actual moth eyes, very sensitive to bright lights."
 	flash_protect = FLASH_PROTECTION_SENSITIVE
 
-/obj/item/organ/internal/eyes/robotic/thermals/moth //we inherit flash weakness from thermals
+/obj/item/organ/eyes/robotic/thermals/moth //we inherit flash weakness from thermals
 	name = "thermal moth eyes"
 	eye_icon_state = "motheyes"
 	icon_state = "eyeballs-cybermoth"
 
-/obj/item/organ/internal/eyes/snail
+/obj/item/organ/eyes/snail
 	name = "snail eyes"
 	desc = "These eyes seem to have a large range, but might be cumbersome with glasses."
 	eye_icon_state = "snail_eyes"
 	icon_state = "snail_eyeballs"
 	eyes_layer = ABOVE_BODY_FRONT_HEAD_LAYER //NOVA EDIT - Roundstart Snails
 
-/obj/item/organ/internal/eyes/jelly
+/obj/item/organ/eyes/jelly
 	name = "jelly eyes"
 	desc = "These eyes are made of a soft jelly. Unlike all other eyes, though, there are three of them."
 	eye_icon_state = "jelleyes"
 	icon_state = "eyeballs-jelly"
 
-/obj/item/organ/internal/eyes/night_vision/maintenance_adapted
+/obj/item/organ/eyes/night_vision/maintenance_adapted
 	name = "adapted eyes"
 	desc = "These red eyes look like two foggy marbles. They give off a particularly worrying glow in the dark."
 	flash_protect = FLASH_PROTECTION_HYPER_SENSITIVE
@@ -902,11 +885,11 @@
 	medium_light_cutoff = list(15, 20, 30)
 	high_light_cutoff = list(30, 35, 50)
 
-/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/on_mob_insert(mob/living/carbon/eye_owner)
+/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_insert(mob/living/carbon/eye_owner)
 	. = ..()
 	ADD_TRAIT(eye_owner, TRAIT_UNNATURAL_RED_GLOWY_EYES, ORGAN_TRAIT)
 
-/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/eyes/night_vision/maintenance_adapted/on_life(seconds_per_tick, times_fired)
 	if(!owner.is_blind() && isturf(owner.loc) && owner.has_light_nearby(light_amount=0.5)) //we allow a little more than usual so we can produce light from the adapted eyes
 		to_chat(owner, span_danger("Your eyes! They burn in the light!"))
 		apply_organ_damage(10) //blind quickly
@@ -915,6 +898,6 @@
 		apply_organ_damage(-10) //heal quickly
 	. = ..()
 
-/obj/item/organ/internal/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE)
+/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE)
 	REMOVE_TRAIT(unadapted, TRAIT_UNNATURAL_RED_GLOWY_EYES, ORGAN_TRAIT)
 	return ..()
diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm
index 36eb9c7bf99..20ad378529f 100644
--- a/code/modules/surgery/organs/internal/heart/_heart.dm
+++ b/code/modules/surgery/organs/internal/heart/_heart.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart
+/obj/item/organ/heart
 	name = "heart"
 	desc = "I feel bad for the heartless bastard who lost this."
 	icon_state = "heart-on"
@@ -19,7 +19,7 @@
 	attack_verb_simple = list("beat", "thump")
 
 	// Love is stored in the heart.
-	food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/love = 2.5)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/love = 2.5)
 
 	// Heart attack code is in code/modules/mob/living/carbon/human/life.dm
 
@@ -32,18 +32,18 @@
 	/// whether the heart's been operated on to fix some of its damages
 	var/operated = FALSE
 
-/obj/item/organ/internal/heart/update_icon_state()
+/obj/item/organ/heart/update_icon_state()
 	. = ..()
 	icon_state = "[base_icon_state]-[beating ? "on" : "off"]"
 
-/obj/item/organ/internal/heart/Remove(mob/living/carbon/heartless, special, movement_flags)
+/obj/item/organ/heart/Remove(mob/living/carbon/heartless, special, movement_flags)
 	. = ..()
 	if(!special)
 		addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 12 SECONDS)
 	beat = BEAT_NONE
 	owner?.stop_sound_channel(CHANNEL_HEARTBEAT)
 
-/obj/item/organ/internal/heart/proc/stop_if_unowned()
+/obj/item/organ/heart/proc/stop_if_unowned()
 	if(QDELETED(src))
 		return
 	if(IS_ROBOTIC_ORGAN(src))
@@ -51,7 +51,7 @@
 	if(isnull(owner))
 		Stop()
 
-/obj/item/organ/internal/heart/attack_self(mob/user)
+/obj/item/organ/heart/attack_self(mob/user)
 	. = ..()
 	if(.)
 		return
@@ -65,7 +65,7 @@
 		addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 8 SECONDS)
 		return TRUE
 
-/obj/item/organ/internal/heart/proc/Stop()
+/obj/item/organ/heart/proc/Stop()
 	if(!beating)
 		return FALSE
 
@@ -75,7 +75,7 @@
 	owner?.stop_sound_channel(CHANNEL_HEARTBEAT)
 	return TRUE
 
-/obj/item/organ/internal/heart/proc/Restart()
+/obj/item/organ/heart/proc/Restart()
 	if(beating)
 		return FALSE
 
@@ -83,25 +83,25 @@
 	update_appearance()
 	return TRUE
 
-/obj/item/organ/internal/heart/OnEatFrom(eater, feeder)
+/obj/item/organ/heart/OnEatFrom(eater, feeder)
 	. = ..()
 	Stop()
 
 /// Checks if the heart is beating.
 /// Can be overridden to add more conditions for more complex hearts.
-/obj/item/organ/internal/heart/proc/is_beating()
+/obj/item/organ/heart/proc/is_beating()
 	return beating
 
-/obj/item/organ/internal/heart/get_status_text(advanced, add_tooltips)
+/obj/item/organ/heart/get_status_text(advanced, add_tooltips)
 	if(!beating && !(organ_flags & ORGAN_FAILING) && owner.needs_heart() && owner.stat != DEAD)
 		return conditional_tooltip("<font color='#cc3333'>Cardiac Arrest</font>", "Apply defibrillation immediately. Similar electric shocks may work in emergencies.", add_tooltips)
 	return ..()
 
-/obj/item/organ/internal/heart/show_on_condensed_scans()
+/obj/item/organ/heart/show_on_condensed_scans()
 	// Always show if the guy needs a heart (so its status can be monitored)
 	return ..() || owner.needs_heart()
 
-/obj/item/organ/internal/heart/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/on_life(seconds_per_tick, times_fired)
 	..()
 
 	// If the owner doesn't need a heart, we don't need to do anything with it.
@@ -135,10 +135,10 @@
 		owner.stop_sound_channel(CHANNEL_HEARTBEAT)
 		beat = BEAT_NONE
 
-/obj/item/organ/internal/heart/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/heart/get_availability(datum/species/owner_species, mob/living/owner_mob)
 	return owner_species.mutantheart
 
-/obj/item/organ/internal/heart/cursed
+/obj/item/organ/heart/cursed
 	name = "cursed heart"
 	desc = "A heart that, when inserted, will force you to pump it manually."
 	icon_state = "cursedheart-off"
@@ -150,7 +150,7 @@
 	var/heal_burn = 0
 	var/heal_oxy = 0
 
-/obj/item/organ/internal/heart/cursed/attack(mob/living/carbon/human/accursed, mob/living/carbon/human/user, obj/target)
+/obj/item/organ/heart/cursed/attack(mob/living/carbon/human/accursed, mob/living/carbon/human/user, obj/target)
 	if(accursed == user && istype(accursed))
 		playsound(user,'sound/effects/singlebeat.ogg',40,TRUE)
 		user.temporarilyRemoveItemFromInventory(src, TRUE)
@@ -158,17 +158,17 @@
 	else
 		return ..()
 
-/obj/item/organ/internal/heart/cursed/on_mob_insert(mob/living/carbon/accursed)
+/obj/item/organ/heart/cursed/on_mob_insert(mob/living/carbon/accursed)
 	. = ..()
 
 	accursed.AddComponent(/datum/component/manual_heart, pump_delay = pump_delay, blood_loss = blood_loss, heal_brute = heal_brute, heal_burn = heal_burn, heal_oxy = heal_oxy)
 
-/obj/item/organ/internal/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE)
+/obj/item/organ/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE)
 	. = ..()
 
 	qdel(accursed.GetComponent(/datum/component/manual_heart))
 
-/obj/item/organ/internal/heart/cybernetic
+/obj/item/organ/heart/cybernetic
 	name = "basic cybernetic heart"
 	desc = "A basic electronic device designed to mimic the functions of an organic human heart."
 	icon_state = "heart-c-on"
@@ -192,7 +192,7 @@
 	/// Chance of permanent effects if emp-ed.
 	var/emp_vulnerability = 80
 
-/obj/item/organ/internal/heart/cybernetic/emp_act(severity)
+/obj/item/organ/heart/cybernetic/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF)
 		return
@@ -214,7 +214,7 @@
 				span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!"),
 			)
 
-/obj/item/organ/internal/heart/cybernetic/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/cybernetic/on_life(seconds_per_tick, times_fired)
 	. = ..()
 
 	if(organ_flags & ORGAN_EMP)
@@ -238,7 +238,7 @@
 		if(bloodiest_wound)
 			bloodiest_wound.adjust_blood_flow(-1 * seconds_per_tick)
 
-/obj/item/organ/internal/heart/cybernetic/proc/stabilize_heart()
+/obj/item/organ/heart/cybernetic/proc/stabilize_heart()
 	ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT)
 	stabilization_available = FALSE
 
@@ -247,12 +247,12 @@
 	addtimer(VARSET_CALLBACK(src, stabilization_available, TRUE), 5 MINUTES, TIMER_DELETE_ME)
 
 // Largely a sanity check
-/obj/item/organ/internal/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
+/obj/item/organ/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE)
 	. = ..()
 	if(HAS_TRAIT_FROM(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT))
 		REMOVE_TRAIT(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT)
 
-/obj/item/organ/internal/heart/cybernetic/tier2
+/obj/item/organ/heart/cybernetic/tier2
 	name = "cybernetic heart"
 	desc = "An electronic device designed to mimic the functions of an organic human heart. In case of lacerations or haemorrhaging, the heart rapidly begins self-replicating \
 		artificial blood. However, this can cause toxins to build up in the bloodstream to the imperfect replication process."
@@ -262,7 +262,7 @@
 	bleed_prevention = TRUE
 	emp_vulnerability = 40
 
-/obj/item/organ/internal/heart/cybernetic/tier3
+/obj/item/organ/heart/cybernetic/tier3
 	name = "upgraded cybernetic heart"
 	desc = "An electronic device designed to mimic the functions of an organic human heart. In case of physical trauma, the heart has temporary failsafes to maintain patient stability \
 		and mobility for a brief moment. In addition, the heart is able to safely self-replicate blood without risk of toxin buildup."
@@ -273,7 +273,7 @@
 	toxification_probability = 0
 	emp_vulnerability = 20
 
-/obj/item/organ/internal/heart/cybernetic/surplus
+/obj/item/organ/heart/cybernetic/surplus
 	name = "surplus prosthetic heart"
 	desc = "A fragile mockery of a human heart that resembles a water pump more than an actual heart. \
 		Offers no protection against EMPs."
@@ -283,18 +283,18 @@
 	emp_vulnerability = 100
 
 //surplus organs are so awful that they explode when removed, unless failing
-/obj/item/organ/internal/heart/cybernetic/surplus/Initialize(mapload)
+/obj/item/organ/heart/cybernetic/surplus/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE)
 
-/obj/item/organ/internal/heart/freedom
+/obj/item/organ/heart/freedom
 	name = "heart of freedom"
 	desc = "This heart pumps with the passion to give... something freedom."
 	organ_flags = ORGAN_ROBOTIC  //the power of freedom prevents heart attacks
 	/// The cooldown until the next time this heart can give the host an adrenaline boost.
 	COOLDOWN_DECLARE(adrenaline_cooldown)
 
-/obj/item/organ/internal/heart/freedom/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/freedom/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if(owner.health < 5 && COOLDOWN_FINISHED(src, adrenaline_cooldown))
 		COOLDOWN_START(src, adrenaline_cooldown, rand(25 SECONDS, 1 MINUTES))
diff --git a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
index 31e9e64750c..df60b8243ef 100644
--- a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
+++ b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
@@ -3,7 +3,7 @@
  */
 #define DOAFTER_IMPLANTING_HEART "implanting"
 
-/obj/item/organ/internal/heart/cybernetic/anomalock
+/obj/item/organ/heart/cybernetic/anomalock
 	name = "voltaic combat cyberheart"
 	desc = "A cutting-edge cyberheart, originally designed for Nanotrasen killsquad usage but later declassified for normal research. Voltaic technology allows the heart to keep the body upright in dire circumstances, alongside redirecting anomalous flux energy to fully shield the user from shocks and electro-magnetic pulses. Requires a refined Flux core as a power source."
 	icon_state = "anomalock_heart"
@@ -28,7 +28,7 @@
 	///If the core is removable once socketed.
 	var/core_removable = TRUE
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/heart/cybernetic/anomalock/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 	if(!core)
 		return
@@ -39,7 +39,7 @@
 	RegisterSignal(organ_owner, SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), PROC_REF(activate_survival))
 	RegisterSignal(organ_owner, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act))
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	if(!core)
 		return
@@ -49,7 +49,7 @@
 	tesla_zap(source = organ_owner, zap_range = 20, power = 2.5e5, cutoff = 1e3)
 	qdel(src)
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/attack(mob/living/target_mob, mob/living/user, params)
+/obj/item/organ/heart/cybernetic/anomalock/attack(mob/living/target_mob, mob/living/user, params)
 	if(target_mob != user || !istype(target_mob) || !core)
 		return ..()
 
@@ -66,11 +66,11 @@
 	user.emote("scream")
 	return TRUE
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/on_emp_act(severity)
+/obj/item/organ/heart/cybernetic/anomalock/proc/on_emp_act(severity)
 	SIGNAL_HANDLER
 	add_lightning_overlay(10 SECONDS)
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/add_lightning_overlay(time_to_last = 10 SECONDS)
+/obj/item/organ/heart/cybernetic/anomalock/proc/add_lightning_overlay(time_to_last = 10 SECONDS)
 	if(lightning_overlay)
 		lightning_timer = addtimer(CALLBACK(src, PROC_REF(clear_lightning_overlay)), time_to_last, (TIMER_UNIQUE|TIMER_OVERRIDE))
 		return
@@ -78,11 +78,11 @@
 	owner.add_overlay(lightning_overlay)
 	lightning_timer = addtimer(CALLBACK(src, PROC_REF(clear_lightning_overlay)), time_to_last, (TIMER_UNIQUE|TIMER_OVERRIDE))
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/clear_lightning_overlay()
+/obj/item/organ/heart/cybernetic/anomalock/proc/clear_lightning_overlay()
 	owner.cut_overlay(lightning_overlay)
 	lightning_overlay = null
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/attack_self(mob/user, modifiers)
+/obj/item/organ/heart/cybernetic/anomalock/attack_self(mob/user, modifiers)
 	. = ..()
 	if(.)
 		return
@@ -90,7 +90,7 @@
 	if(core)
 		return attack(user, user, modifiers)
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/cybernetic/anomalock/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if(owner.blood_volume <= BLOOD_VOLUME_NORMAL)
 		owner.blood_volume += 5 * seconds_per_tick
@@ -98,7 +98,7 @@
 		activate_survival(owner)
 
 ///Does a few things to try to help you live whatever you may be going through
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/activate_survival(mob/living/carbon/organ_owner)
+/obj/item/organ/heart/cybernetic/anomalock/proc/activate_survival(mob/living/carbon/organ_owner)
 	if(!COOLDOWN_FINISHED(src, survival_cooldown))
 		return
 
@@ -108,15 +108,15 @@
 	addtimer(CALLBACK(src, PROC_REF(notify_cooldown), organ_owner), COOLDOWN_TIMELEFT(src, survival_cooldown))
 
 ///Alerts our owner that the organ is ready to do its thing again
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/notify_cooldown(mob/living/carbon/organ_owner)
+/obj/item/organ/heart/cybernetic/anomalock/proc/notify_cooldown(mob/living/carbon/organ_owner)
 	balloon_alert(organ_owner, "your heart strenghtens")
 	playsound(organ_owner, 'sound/items/eshield_recharge.ogg', 40)
 
 ///Returns the mob we are implanted in so that the electricity effect doesn't runtime
-/obj/item/organ/internal/heart/cybernetic/anomalock/proc/get_held_mob()
+/obj/item/organ/heart/cybernetic/anomalock/proc/get_held_mob()
 	return owner
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+/obj/item/organ/heart/cybernetic/anomalock/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
 	if(!istype(tool, required_anomaly))
 		return NONE
 	if(core)
@@ -131,7 +131,7 @@
 	update_icon_state()
 	return ITEM_INTERACT_SUCCESS
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/screwdriver_act(mob/living/user, obj/item/tool)
+/obj/item/organ/heart/cybernetic/anomalock/screwdriver_act(mob/living/user, obj/item/tool)
 	. = ..()
 	if(!core)
 		balloon_alert(user, "no core!")
@@ -151,11 +151,11 @@
 	remove_organ_trait(TRAIT_SHOCKIMMUNE)
 	update_icon_state()
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/update_icon_state()
+/obj/item/organ/heart/cybernetic/anomalock/update_icon_state()
 	. = ..()
 	icon_state = initial(icon_state) + (core ? "-core" : "")
 
-/obj/item/organ/internal/heart/cybernetic/anomalock/prebuilt/Initialize(mapload)
+/obj/item/organ/heart/cybernetic/anomalock/prebuilt/Initialize(mapload)
 	. = ..()
 	core = new /obj/item/assembly/signaler/anomaly/flux(src)
 	update_icon_state()
diff --git a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
index 17c2292bdeb..58cfd697e5d 100644
--- a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
+++ b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/ethereal
+/obj/item/organ/heart/ethereal
 	name = "crystal core"
 	icon_state = "ethereal_heart-on"
 	base_icon_state = "ethereal_heart"
@@ -16,38 +16,38 @@
 	///Color of the heart, is set by the species on gain
 	var/ethereal_color = "#9c3030"
 
-/obj/item/organ/internal/heart/ethereal/Initialize(mapload)
+/obj/item/organ/heart/ethereal/Initialize(mapload)
 	. = ..()
 	add_atom_colour(ethereal_color, FIXED_COLOUR_PRIORITY)
 	update_appearance()
 
-/obj/item/organ/internal/heart/ethereal/mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags)
+/obj/item/organ/heart/ethereal/mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags)
 	. = ..()
 
 	RegisterSignal(heart_owner, COMSIG_MOB_STATCHANGE, PROC_REF(on_stat_change))
 	RegisterSignal(heart_owner, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(on_owner_fully_heal))
 	RegisterSignal(heart_owner, COMSIG_QDELETING, PROC_REF(owner_deleted))
 
-/obj/item/organ/internal/heart/ethereal/mob_remove(mob/living/carbon/heart_owner, special, movement_flags)
+/obj/item/organ/heart/ethereal/mob_remove(mob/living/carbon/heart_owner, special, movement_flags)
 	UnregisterSignal(heart_owner, list(COMSIG_MOB_STATCHANGE, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_QDELETING))
 	REMOVE_TRAIT(heart_owner, TRAIT_CORPSELOCKED, SPECIES_TRAIT)
 	stop_crystalization_process(heart_owner)
 	QDEL_NULL(current_crystal)
 	return ..()
 
-/obj/item/organ/internal/heart/ethereal/update_overlays()
+/obj/item/organ/heart/ethereal/update_overlays()
 	. = ..()
 	var/mutable_appearance/shine = mutable_appearance(icon, icon_state = "[base_icon_state]_overlay-[beating ? "on" : "off"]")
 	shine.appearance_flags = RESET_COLOR //No color on this, just pure white
 	. += shine
 
-/obj/item/organ/internal/heart/ethereal/proc/on_owner_fully_heal(mob/living/carbon/healed, heal_flags)
+/obj/item/organ/heart/ethereal/proc/on_owner_fully_heal(mob/living/carbon/healed, heal_flags)
 	SIGNAL_HANDLER
 
 	QDEL_NULL(current_crystal) //Kicks out the ethereal
 
 ///Ran when examined while crystalizing, gives info about the amount of time left
-/obj/item/organ/internal/heart/ethereal/proc/on_examine(mob/living/carbon/human/examined_human, mob/user, list/examine_list)
+/obj/item/organ/heart/ethereal/proc/on_examine(mob/living/carbon/human/examined_human, mob/user, list/examine_list)
 	SIGNAL_HANDLER
 
 	if(!crystalize_timer_id)
@@ -62,7 +62,7 @@
 			examine_list += span_notice("Some crystals are coming out of [examined_human]. ")
 
 ///On stat changes, if the victim is no longer dead but they're crystalizing, cancel it, if they become dead, start the crystalizing process if possible
-/obj/item/organ/internal/heart/ethereal/proc/on_stat_change(mob/living/victim, new_stat)
+/obj/item/organ/heart/ethereal/proc/on_stat_change(mob/living/victim, new_stat)
 	SIGNAL_HANDLER
 
 	if(new_stat != DEAD)
@@ -92,7 +92,7 @@
 	RegisterSignal(victim, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(on_take_damage))
 
 ///Ran when disarmed, prevents the ethereal from reviving
-/obj/item/organ/internal/heart/ethereal/proc/reset_crystalizing(mob/living/defender, mob/living/attacker, zone, obj/item/weapon)
+/obj/item/organ/heart/ethereal/proc/reset_crystalizing(mob/living/defender, mob/living/attacker, zone, obj/item/weapon)
 	SIGNAL_HANDLER
 	defender.visible_message(
 		span_notice("The crystals on [defender] are gently broken off."),
@@ -102,7 +102,7 @@
 	crystalize_timer_id = addtimer(CALLBACK(src, PROC_REF(crystalize), defender), CRYSTALIZE_DISARM_WAIT_TIME, TIMER_STOPPABLE) //Lets us restart the timer on disarm
 
 ///Actually spawns the crystal which puts the ethereal in it.
-/obj/item/organ/internal/heart/ethereal/proc/crystalize(mob/living/ethereal)
+/obj/item/organ/heart/ethereal/proc/crystalize(mob/living/ethereal)
 
 	var/location = ethereal.loc
 
@@ -118,7 +118,7 @@
 	stop_crystalization_process(ethereal, TRUE)
 
 ///Stop the crystalization process, unregistering any signals and resetting any variables.
-/obj/item/organ/internal/heart/ethereal/proc/stop_crystalization_process(mob/living/ethereal, succesful = FALSE)
+/obj/item/organ/heart/ethereal/proc/stop_crystalization_process(mob/living/ethereal, succesful = FALSE)
 	UnregisterSignal(ethereal, COMSIG_LIVING_DISARM_HIT)
 	UnregisterSignal(ethereal, COMSIG_ATOM_EXAMINE)
 	UnregisterSignal(ethereal, COMSIG_MOB_APPLY_DAMAGE)
@@ -133,14 +133,14 @@
 		deltimer(crystalize_timer_id)
 		crystalize_timer_id = null
 
-/obj/item/organ/internal/heart/ethereal/proc/owner_deleted(datum/source)
+/obj/item/organ/heart/ethereal/proc/owner_deleted(datum/source)
 	SIGNAL_HANDLER
 
 	stop_crystalization_process(owner)
 	return
 
 ///Lets you stop the process with enough brute damage
-/obj/item/organ/internal/heart/ethereal/proc/on_take_damage(datum/source, damage, damagetype, def_zone, ...)
+/obj/item/organ/heart/ethereal/proc/on_take_damage(datum/source, damage, damagetype, def_zone, ...)
 	SIGNAL_HANDLER
 	if(damagetype != BRUTE)
 		return
@@ -170,7 +170,7 @@
 	density = TRUE
 	anchored = TRUE
 	///The organ this crystal belongs to
-	var/obj/item/organ/internal/heart/ethereal/ethereal_heart
+	var/obj/item/organ/heart/ethereal/ethereal_heart
 	///Timer for the healing process. Stops if destroyed.
 	var/crystal_heal_timer
 	///Is the crystal still being built? True by default, gets changed after a timer.
@@ -179,7 +179,7 @@
 /obj/structure/ethereal_crystal/relaymove()
 	return
 
-/obj/structure/ethereal_crystal/Initialize(mapload, obj/item/organ/internal/heart/ethereal/ethereal_heart)
+/obj/structure/ethereal_crystal/Initialize(mapload, obj/item/organ/heart/ethereal/ethereal_heart)
 	. = ..()
 	if(!ethereal_heart)
 		stack_trace("Our crystal has no related heart")
diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm
index 78792e45ed5..81b71e51b0c 100644
--- a/code/modules/surgery/organs/internal/liver/_liver.dm
+++ b/code/modules/surgery/organs/internal/liver/_liver.dm
@@ -2,7 +2,7 @@
 #define LIVER_DEFAULT_TOX_RESISTANCE 1 //lower values lower how harmful toxins are to the liver
 #define LIVER_FAILURE_STAGE_SECONDS 180 //amount of seconds before liver failure reaches a new stage // NOVA EDIT CHANGE - Original: 60
 
-/obj/item/organ/internal/liver
+/obj/item/organ/liver
 	name = "liver"
 	desc = "Pairing suggestion: chianti and fava beans."
 	icon_state = "liver"
@@ -15,7 +15,7 @@
 	healing_factor = STANDARD_ORGAN_HEALING
 	decay_factor = STANDARD_ORGAN_DECAY // smack in the middle of decay times
 
-	food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/iron = 5)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/iron = 5)
 	grind_results = list(/datum/reagent/consumable/nutriment/peptides = 5)
 
 	/// Affects how much damage the liver takes from alcohol
@@ -27,7 +27,7 @@
 	var/filterToxins = TRUE //whether to filter toxins
 	var/operated = FALSE //whether the liver's been repaired with surgery and can be fixed again or not
 
-/obj/item/organ/internal/liver/Initialize(mapload)
+/obj/item/organ/liver/Initialize(mapload)
 	. = ..()
 	// If the liver handles foods like a clown, it honks like a bike horn
 	// Don't think about it too much.
@@ -43,7 +43,7 @@
  * The removal of the component, if this liver loses that trait, is handled
  * by the component itself.
  */
-/obj/item/organ/internal/liver/proc/on_add_comedy_metabolism()
+/obj/item/organ/liver/proc/on_add_comedy_metabolism()
 	SIGNAL_HANDLER
 
 	// Are clown "bike" horns made from the livers of ex-clowns?
@@ -54,18 +54,18 @@
  *
  * Basically just removes squeak component
  */
-/obj/item/organ/internal/liver/proc/on_remove_comedy_metabolism()
+/obj/item/organ/liver/proc/on_remove_comedy_metabolism()
 	SIGNAL_HANDLER
 
 	qdel(GetComponent(/datum/component/squeak))
 
 /// Registers COMSIG_SPECIES_HANDLE_CHEMICAL from owner
-/obj/item/organ/internal/liver/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/on_mob_insert(mob/living/carbon/organ_owner, special)
 	. = ..()
 	RegisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL, PROC_REF(handle_chemical))
 
 /// Unregisters COMSIG_SPECIES_HANDLE_CHEMICAL from owner
-/obj/item/organ/internal/liver/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/liver/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	UnregisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL)
 
@@ -76,10 +76,10 @@
  *
  * NOTE: If you return COMSIG_MOB_STOP_REAGENT_CHECK, that reagent will not be removed like normal! You must handle it manually.
  **/
-/obj/item/organ/internal/liver/proc/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/proc/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
 	SIGNAL_HANDLER
 
-/obj/item/organ/internal/liver/examine(mob/user)
+/obj/item/organ/liver/examine(mob/user)
 	. = ..()
 
 	if(HAS_MIND_TRAIT(user, TRAIT_ENTRAILS_READER) || isobserver(user))
@@ -108,7 +108,7 @@
 		else if(HAS_TRAIT(src, TRAIT_PRETENDER_ROYAL_METABOLISM))
 			. += span_info("A diet of imitation caviar, and signs of insomnia, implies that this is the liver of <em>someone who wants to be a head of staff</em>.")
 
-/obj/item/organ/internal/liver/before_organ_replacement(obj/item/organ/replacement)
+/obj/item/organ/liver/before_organ_replacement(obj/item/organ/replacement)
 	. = ..()
 	if(!istype(replacement, type))
 		return
@@ -123,7 +123,7 @@
 			continue
 		ADD_TRAIT(replacement, readded_trait, JOB_TRAIT)
 
-/obj/item/organ/internal/liver/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/liver/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	//If your liver is failing, then we use the liverless version of metabolize
 	if((organ_flags & ORGAN_FAILING) || HAS_TRAIT(owner, TRAIT_LIVERLESS_METABOLISM))
@@ -133,12 +133,12 @@
 
 	owner.reagents?.metabolize(owner, seconds_per_tick, times_fired, can_overdose = TRUE)
 
-/obj/item/organ/internal/liver/handle_failing_organs(seconds_per_tick)
+/obj/item/organ/liver/handle_failing_organs(seconds_per_tick)
 	if(HAS_TRAIT(owner, TRAIT_STABLELIVER) || HAS_TRAIT(owner, TRAIT_LIVERLESS_METABOLISM))
 		return
 	return ..()
 
-/obj/item/organ/internal/liver/organ_failure(seconds_per_tick)
+/obj/item/organ/liver/organ_failure(seconds_per_tick)
 	switch(failure_time/LIVER_FAILURE_STAGE_SECONDS)
 		if(1)
 			to_chat(owner, span_userdanger("You feel stabbing pain in your abdomen!"))
@@ -188,7 +188,7 @@
 			if(SPT_PROB(3, seconds_per_tick))
 				owner.emote("drool")
 
-/obj/item/organ/internal/liver/on_owner_examine(datum/source, mob/user, list/examine_list)
+/obj/item/organ/liver/on_owner_examine(datum/source, mob/user, list/examine_list)
 	if(!ishuman(owner) || !(organ_flags & ORGAN_FAILING))
 		return
 
@@ -203,18 +203,18 @@
 		if(4 * LIVER_FAILURE_STAGE_SECONDS to INFINITY)
 			examine_list += span_danger("[owner]'s eyes are completely yellow and swelling with pus. [owner.p_They()] [owner.p_do()]n't look like [owner.p_they()] will be alive for much longer.")
 
-/obj/item/organ/internal/liver/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/liver/get_availability(datum/species/owner_species, mob/living/owner_mob)
 	return owner_species.mutantliver
 
 // alien livers can ignore up to 15u of toxins, but they take x3 liver damage
-/obj/item/organ/internal/liver/alien
+/obj/item/organ/liver/alien
 	name = "alien liver" // doesnt matter for actual aliens because they dont take toxin damage
 	desc = "A liver that used to belong to a killer alien, who knows what it used to eat."
 	icon_state = "liver-x" // Same sprite as fly-person liver.
 	liver_resistance = 0.333 * LIVER_DEFAULT_TOX_RESISTANCE // -66%
 	toxTolerance = 15 // complete toxin immunity like xenos have would be too powerful
 
-/obj/item/organ/internal/liver/cybernetic
+/obj/item/organ/liver/cybernetic
 	name = "basic cybernetic liver"
 	desc = "A very basic device designed to mimic the functions of a human liver. Handles toxins slightly worse than an organic liver."
 	failing_desc = "seems to be broken."
@@ -225,7 +225,7 @@
 	liver_resistance = 0.9 * LIVER_DEFAULT_TOX_RESISTANCE // -10%
 	var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed.
 
-/obj/item/organ/internal/liver/cybernetic/emp_act(severity)
+/obj/item/organ/liver/cybernetic/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF)
 		return
@@ -235,7 +235,7 @@
 	if(prob(emp_vulnerability/severity)) //Chance of permanent effects
 		organ_flags |= ORGAN_EMP //Starts organ faliure - gonna need replacing soon.
 
-/obj/item/organ/internal/liver/cybernetic/tier2
+/obj/item/organ/liver/cybernetic/tier2
 	name = "cybernetic liver"
 	desc = "An electronic device designed to mimic the functions of a human liver. Handles toxins slightly better than an organic liver."
 	icon_state = "liver-c-u"
@@ -244,7 +244,7 @@
 	liver_resistance = 1.2 * LIVER_DEFAULT_TOX_RESISTANCE // +20%
 	emp_vulnerability = 40
 
-/obj/item/organ/internal/liver/cybernetic/tier3
+/obj/item/organ/liver/cybernetic/tier3
 	name = "upgraded cybernetic liver"
 	desc = "An upgraded version of the cybernetic liver, designed to improve further upon organic livers. It is resistant to alcohol poisoning and is very robust at filtering toxins."
 	icon_state = "liver-c-u2"
@@ -254,7 +254,7 @@
 	liver_resistance = 1.5 * LIVER_DEFAULT_TOX_RESISTANCE // +50%
 	emp_vulnerability = 20
 
-/obj/item/organ/internal/liver/cybernetic/surplus
+/obj/item/organ/liver/cybernetic/surplus
 	name = "surplus prosthetic liver"
 	desc = "A very cheap prosthetic liver, mass produced for low-functioning alcoholics... It looks more like a water filter than \
 		an actual liver. \
@@ -268,7 +268,7 @@
 	emp_vulnerability = 100
 
 //surplus organs are so awful that they explode when removed, unless failing
-/obj/item/organ/internal/liver/cybernetic/surplus/Initialize(mapload)
+/obj/item/organ/liver/cybernetic/surplus/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE)
 
diff --git a/code/modules/surgery/organs/internal/liver/liver_golem.dm b/code/modules/surgery/organs/internal/liver/liver_golem.dm
index 1ab3eabcd9c..d9c3d4632cf 100644
--- a/code/modules/surgery/organs/internal/liver/liver_golem.dm
+++ b/code/modules/surgery/organs/internal/liver/liver_golem.dm
@@ -3,16 +3,16 @@
  * Basically only exists to remove the nutriment factor from consumables,
  * so golems can only consume minerals even when injecting reagents.
  *
- * Actually consuming golem food is handled by /obj/item/organ/internal/stomach/golem!
+ * Actually consuming golem food is handled by /obj/item/organ/stomach/golem!
  **/
-/obj/item/organ/internal/liver/golem
+/obj/item/organ/liver/golem
 	name = "porous rock"
 	desc = "A spongy rock capable of absorbing chemicals."
 	icon_state = "liver-p"
 	organ_flags = ORGAN_MINERAL
 	color = COLOR_GOLEM_GRAY
 
-/obj/item/organ/internal/liver/golem/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/golem/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
 	. = ..()
 	// parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing
 	if((. & COMSIG_MOB_STOP_REAGENT_CHECK) || (organ_flags & ORGAN_FAILING))
diff --git a/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm b/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm
index be21968d659..714916d183e 100644
--- a/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm
+++ b/code/modules/surgery/organs/internal/liver/liver_plasmaman.dm
@@ -2,7 +2,7 @@
  * Plasmaman liver
  * Makes plasma and hot ice heal wounds, also makes gunpowder a hallucinogen.
  **/
-/obj/item/organ/internal/liver/bone/plasmaman
+/obj/item/organ/liver/bone/plasmaman
 	name = "reagent processing crystal"
 	desc = "A large crystal that is somehow capable of metabolizing chemicals, these are found in plasmamen."
 	icon_state = "liver-p"
@@ -10,7 +10,7 @@
 	organ_traits = list(TRAIT_PLASMA_LOVER_METABOLISM)
 	milk_burn_healing = 0
 
-/obj/item/organ/internal/liver/bone/plasmaman/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/bone/plasmaman/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
 	. = ..()
 	// parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing
 	if((. & COMSIG_MOB_STOP_REAGENT_CHECK) || (organ_flags & ORGAN_FAILING))
diff --git a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm
index b57afd245f5..8ff1f0c3cf3 100644
--- a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm
+++ b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm
@@ -3,7 +3,7 @@
  * Gives the owner liverless metabolism, makes them vulnerable to bone hurting juice and
  * makes milk heal them through meme magic.
  **/
-/obj/item/organ/internal/liver/bone
+/obj/item/organ/liver/bone
 	name = "mass of bones"
 	desc = "You have no idea what this strange ball of bones does."
 	icon_state = "liver-bone"
@@ -13,7 +13,7 @@
 	///Var for burn healing via milk
 	var/milk_burn_healing = 2.5
 
-/obj/item/organ/internal/liver/bone/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/bone/handle_chemical(mob/living/carbon/organ_owner, datum/reagent/chem, seconds_per_tick, times_fired)
 	. = ..()
 	// parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing
 	if((. & COMSIG_MOB_STOP_REAGENT_CHECK) || (organ_flags & ORGAN_FAILING))
diff --git a/code/modules/surgery/organs/internal/lungs/_lungs.dm b/code/modules/surgery/organs/internal/lungs/_lungs.dm
index 203b542e631..3e6c2fdec48 100644
--- a/code/modules/surgery/organs/internal/lungs/_lungs.dm
+++ b/code/modules/surgery/organs/internal/lungs/_lungs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/lungs
+/obj/item/organ/lungs
 	name = "lungs"
 	icon_state = "lungs"
 
@@ -21,7 +21,7 @@
 	var/failed = FALSE
 	var/operated = FALSE //whether we can still have our damages fixed through surgery
 
-	food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/medicine/salbutamol = 5)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/medicine/salbutamol = 5)
 
 	/// Our previous breath's partial pressures, in the form gas id -> partial pressure
 	var/list/last_partial_pressures = list()
@@ -105,7 +105,7 @@
 	var/crit_stabilizing_reagent = /datum/reagent/medicine/epinephrine
 
 // assign the respiration_type
-/obj/item/organ/internal/lungs/Initialize(mapload)
+/obj/item/organ/lungs/Initialize(mapload)
 	. = ..()
 	breath_out = new(BREATH_VOLUME)
 
@@ -154,7 +154,7 @@
 	add_gas_reaction(/datum/gas/zauker, while_present = PROC_REF(too_much_zauker))
 
 ///Simply exists so that you don't keep any alerts from your previous lack of lungs.
-/obj/item/organ/internal/lungs/mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags)
+/obj/item/organ/lungs/mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags)
 	. = ..()
 
 	receiver.clear_alert(ALERT_NOT_ENOUGH_OXYGEN)
@@ -163,7 +163,7 @@
 	receiver.clear_alert(ALERT_NOT_ENOUGH_PLASMA)
 	receiver.clear_alert(ALERT_NOT_ENOUGH_N2O)
 
-/obj/item/organ/internal/lungs/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/lungs/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 	// This is very "manual" I realize, but it's useful to ensure cleanup for gases we're removing happens
 	// Avoids stuck alerts and such
@@ -188,7 +188,7 @@
  * while_present and always get the same arguments (mob/living/carbon/breather, datum/gas_mixture/breath, pp, old_pp)
  * on_loss is almost exactly the same, except it doesn't pass in a current partial pressure, since one isn't avalible
  */
-/obj/item/organ/internal/lungs/proc/add_gas_reaction(gas_type, while_present = null, on_loss = null, always = null)
+/obj/item/organ/lungs/proc/add_gas_reaction(gas_type, while_present = null, on_loss = null, always = null)
 	if(always)
 		breathe_always[gas_type] = always
 
@@ -208,7 +208,7 @@
  * Takes the gas to check for as an argument, alongside the gas to convert and the multiplier to use
  * These act in the order of insertion, use that how you will
  */
-/obj/item/organ/internal/lungs/proc/add_gas_relationship(gas_type, convert_to, multiplier)
+/obj/item/organ/lungs/proc/add_gas_relationship(gas_type, convert_to, multiplier)
 	if(isnull(gas_type) || isnull(convert_to) || multiplier == 0)
 		return
 
@@ -219,7 +219,7 @@
 	treat_as += list(add)
 
 /// Clears away a gas relationship. Takes the same args as the initial addition
-/obj/item/organ/internal/lungs/proc/remove_gas_relationship(gas_type, convert_to, multiplier)
+/obj/item/organ/lungs/proc/remove_gas_relationship(gas_type, convert_to, multiplier)
 	if(isnull(gas_type) || isnull(convert_to) || multiplier == 0)
 		return
 
@@ -234,7 +234,7 @@
 		return
 
 /// Handles oxygen breathing. Always called by things that need o2, no matter what
-/obj/item/organ/internal/lungs/proc/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
+/obj/item/organ/lungs/proc/breathe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
 	if(o2_pp < safe_oxygen_min && !HAS_TRAIT(src, TRAIT_SPACEBREATHING))
 		// Not safe to check the old pp because of can_breath_vacuum
 		breather.throw_alert(ALERT_NOT_ENOUGH_OXYGEN, /atom/movable/screen/alert/not_enough_oxy)
@@ -256,7 +256,7 @@
 		breather.adjustOxyLoss(-5)
 
 /// Maximum Oxygen effects. "Too much O2!"
-/obj/item/organ/internal/lungs/proc/too_much_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
+/obj/item/organ/lungs/proc/too_much_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, o2_pp, old_o2_pp)
 	// If too much Oxygen is poisonous.
 	if(o2_pp <= safe_oxygen_max)
 		if(old_o2_pp > safe_oxygen_max)
@@ -269,11 +269,11 @@
 		breather.throw_alert(ALERT_TOO_MUCH_OXYGEN, /atom/movable/screen/alert/too_much_oxy)
 
 /// Handles NOT having too much o2. only relevant if safe_oxygen_max has a value
-/obj/item/organ/internal/lungs/proc/safe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, old_o2_pp)
+/obj/item/organ/lungs/proc/safe_oxygen(mob/living/carbon/breather, datum/gas_mixture/breath, old_o2_pp)
 	breather.clear_alert(ALERT_TOO_MUCH_OXYGEN)
 
 /// Behaves like Oxygen with 8X efficacy, but metabolizes into a reagent.
-/obj/item/organ/internal/lungs/proc/consume_pluoxium(mob/living/carbon/breather, datum/gas_mixture/breath, pluoxium_pp, old_pluoxium_pp)
+/obj/item/organ/lungs/proc/consume_pluoxium(mob/living/carbon/breather, datum/gas_mixture/breath, pluoxium_pp, old_pluoxium_pp)
 	breathe_gas_volume(breath, /datum/gas/pluoxium)
 	// Metabolize to reagent.
 	if(pluoxium_pp > gas_stimulation_min)
@@ -281,7 +281,7 @@
 		breather.reagents.add_reagent(/datum/reagent/pluoxium, max(0, 1 - existing))
 
 /// If the lungs need Nitrogen to breathe properly, N2 is exchanged with CO2.
-/obj/item/organ/internal/lungs/proc/breathe_nitro(mob/living/carbon/breather, datum/gas_mixture/breath, nitro_pp, old_nitro_pp)
+/obj/item/organ/lungs/proc/breathe_nitro(mob/living/carbon/breather, datum/gas_mixture/breath, nitro_pp, old_nitro_pp)
 	if(nitro_pp < safe_nitro_min && !HAS_TRAIT(src, TRAIT_SPACEBREATHING))
 		// Suffocation side-effects.
 		// Not safe to check the old pp because of can_breath_vacuum
@@ -303,7 +303,7 @@
 		breather.adjustOxyLoss(-5)
 
 /// Maximum CO2 effects. "Too much CO2!"
-/obj/item/organ/internal/lungs/proc/too_much_co2(mob/living/carbon/breather, datum/gas_mixture/breath, co2_pp, old_co2_pp)
+/obj/item/organ/lungs/proc/too_much_co2(mob/living/carbon/breather, datum/gas_mixture/breath, co2_pp, old_co2_pp)
 	if(co2_pp <= safe_co2_max)
 		if(old_co2_pp > safe_co2_max)
 			return BREATH_LOST
@@ -329,13 +329,13 @@
 			breather.apply_damage(8, co2_damage_type, spread_damage = TRUE)
 
 /// Handles NOT having too much co2. only relevant if safe_co2_max has a value
-/obj/item/organ/internal/lungs/proc/safe_co2(mob/living/carbon/breather, datum/gas_mixture/breath, old_co2_pp)
+/obj/item/organ/lungs/proc/safe_co2(mob/living/carbon/breather, datum/gas_mixture/breath, old_co2_pp)
 	// Reset side-effects.
 	breather.co2overloadtime = 0
 	breather.clear_alert(ALERT_TOO_MUCH_CO2)
 
 /// If the lungs need Plasma to breathe properly, Plasma is exchanged with CO2.
-/obj/item/organ/internal/lungs/proc/breathe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp)
+/obj/item/organ/lungs/proc/breathe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp)
 	// Suffocation side-effects.
 	if(plasma_pp < safe_plasma_min && !HAS_TRAIT(src, TRAIT_SPACEBREATHING))
 		// Could check old_plasma_pp but vacuum breathing hates me
@@ -357,7 +357,7 @@
 		breather.adjustOxyLoss(-5)
 
 /// Maximum Plasma effects. "Too much Plasma!"
-/obj/item/organ/internal/lungs/proc/too_much_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp)
+/obj/item/organ/lungs/proc/too_much_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, plasma_pp, old_plasma_pp)
 	if(plasma_pp <= safe_plasma_max)
 		if(old_plasma_pp > safe_plasma_max)
 			return BREATH_LOST
@@ -372,11 +372,11 @@
 	breather.apply_damage(clamp(ratio, plas_breath_dam_min, plas_breath_dam_max), plas_damage_type, spread_damage = TRUE)
 
 /// Resets plasma side effects
-/obj/item/organ/internal/lungs/proc/safe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_plasma_pp)
+/obj/item/organ/lungs/proc/safe_plasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_plasma_pp)
 	breather.clear_alert(ALERT_TOO_MUCH_PLASMA)
 
 /// Too much funny gas, time to get brain damage
-/obj/item/organ/internal/lungs/proc/too_much_bz(mob/living/carbon/breather, datum/gas_mixture/breath, bz_pp, old_bz_pp)
+/obj/item/organ/lungs/proc/too_much_bz(mob/living/carbon/breather, datum/gas_mixture/breath, bz_pp, old_bz_pp)
 	if(bz_pp > BZ_trip_balls_min)
 		breather.adjust_hallucinations(20 SECONDS)
 		breather.reagents.add_reagent(/datum/reagent/bz_metabolites, 5)
@@ -384,7 +384,7 @@
 		breather.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150, ORGAN_ORGANIC)
 
 /// Breathing in refridgerator coolent, shit's caustic
-/obj/item/organ/internal/lungs/proc/too_much_freon(mob/living/carbon/breather, datum/gas_mixture/breath, freon_pp, old_freon_pp)
+/obj/item/organ/lungs/proc/too_much_freon(mob/living/carbon/breather, datum/gas_mixture/breath, freon_pp, old_freon_pp)
 	// Inhale Freon. Exhale nothing.
 	breathe_gas_volume(breath, /datum/gas/freon)
 	if (freon_pp > gas_stimulation_min)
@@ -401,7 +401,7 @@
 		breather.adjustFireLoss(freon_pp / 4)
 
 /// Breathing in halon, convert it to a reagent
-/obj/item/organ/internal/lungs/proc/too_much_halon(mob/living/carbon/breather, datum/gas_mixture/breath, halon_pp, old_halon_pp)
+/obj/item/organ/lungs/proc/too_much_halon(mob/living/carbon/breather, datum/gas_mixture/breath, halon_pp, old_halon_pp)
 	// Inhale Halon. Exhale nothing.
 	breathe_gas_volume(breath, /datum/gas/halon)
 	// Metabolize to reagent.
@@ -410,7 +410,7 @@
 		breather.reagents.add_reagent(/datum/reagent/halon, max(0, 1 - breather.reagents.get_reagent_amount(/datum/reagent/halon)))
 
 /// Sleeping gas with healing properties.
-/obj/item/organ/internal/lungs/proc/consume_healium(mob/living/carbon/breather, datum/gas_mixture/breath, healium_pp, old_healium_pp)
+/obj/item/organ/lungs/proc/consume_healium(mob/living/carbon/breather, datum/gas_mixture/breath, healium_pp, old_healium_pp)
 	breathe_gas_volume(breath, /datum/gas/healium)
 	// Euphoria side-effect.
 	if(healium_pp > gas_stimulation_min)
@@ -428,11 +428,11 @@
 		breather.reagents.add_reagent(/datum/reagent/healium, max(0, 1 - breather.reagents.get_reagent_amount(/datum/reagent/healium)))
 
 /// Lose healium side effects
-/obj/item/organ/internal/lungs/proc/lose_healium(mob/living/carbon/breather, datum/gas_mixture/breath, old_healium_pp)
+/obj/item/organ/lungs/proc/lose_healium(mob/living/carbon/breather, datum/gas_mixture/breath, old_healium_pp)
 	healium_euphoria = EUPHORIA_INACTIVE
 
 /// Activates helium speech when partial pressure gets high enough
-/obj/item/organ/internal/lungs/proc/consume_helium(mob/living/carbon/breather, datum/gas_mixture/breath, helium_pp, old_helium_pp)
+/obj/item/organ/lungs/proc/consume_helium(mob/living/carbon/breather, datum/gas_mixture/breath, helium_pp, old_helium_pp)
 	breathe_gas_volume(breath, /datum/gas/helium)
 	if(helium_pp > helium_speech_min)
 		if(old_helium_pp <= helium_speech_min)
@@ -442,23 +442,23 @@
 			UnregisterSignal(breather, COMSIG_MOB_SAY)
 
 /// Lose helium high pitched voice
-/obj/item/organ/internal/lungs/proc/lose_helium(mob/living/carbon/breather, datum/gas_mixture/breath, old_helium_pp)
+/obj/item/organ/lungs/proc/lose_helium(mob/living/carbon/breather, datum/gas_mixture/breath, old_helium_pp)
 	UnregisterSignal(breather, COMSIG_MOB_SAY)
 
 /// React to speach while hopped up on the high pitched voice juice
-/obj/item/organ/internal/lungs/proc/handle_helium_speech(mob/living/carbon/breather, list/speech_args)
+/obj/item/organ/lungs/proc/handle_helium_speech(mob/living/carbon/breather, list/speech_args)
 	SIGNAL_HANDLER
 	speech_args[SPEECH_SPANS] |= SPAN_SMALL_VOICE
 
 /// Gain hypernob effects if we have enough of the stuff
-/obj/item/organ/internal/lungs/proc/consume_hypernoblium(mob/living/carbon/breather, datum/gas_mixture/breath, hypernob_pp, old_hypernob_pp)
+/obj/item/organ/lungs/proc/consume_hypernoblium(mob/living/carbon/breather, datum/gas_mixture/breath, hypernob_pp, old_hypernob_pp)
 	breathe_gas_volume(breath, /datum/gas/hypernoblium)
 	if (hypernob_pp > gas_stimulation_min)
 		var/existing = breather.reagents.get_reagent_amount(/datum/reagent/hypernoblium)
 		breather.reagents.add_reagent(/datum/reagent/hypernoblium,max(0, 1 - existing))
 
 /// Breathing in the stink gas
-/obj/item/organ/internal/lungs/proc/too_much_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, miasma_pp, old_miasma_pp)
+/obj/item/organ/lungs/proc/too_much_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, miasma_pp, old_miasma_pp)
 	// Inhale Miasma. Exhale nothing.
 	breathe_gas_volume(breath, /datum/gas/miasma)
 	// Miasma side effects
@@ -494,12 +494,12 @@
 	breather.adjust_disgust(0.1 * miasma_pp)
 
 /// We're free from the stick, clear out its impacts
-/obj/item/organ/internal/lungs/proc/safe_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_miasma_pp)
+/obj/item/organ/lungs/proc/safe_miasma(mob/living/carbon/breather, datum/gas_mixture/breath, old_miasma_pp)
 	// Clear out moods when immune to miasma, or if there's no miasma at all.
 	breather.clear_mood_event("smell")
 
 /// Causes random euphoria and giggling. Large amounts knock you down
-/obj/item/organ/internal/lungs/proc/too_much_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, n2o_pp, old_n2o_pp)
+/obj/item/organ/lungs/proc/too_much_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, n2o_pp, old_n2o_pp)
 	if(n2o_pp < n2o_para_min)
 		// Small amount of N2O, small side-effects.
 		if(n2o_pp <= n2o_detect_min)
@@ -532,12 +532,12 @@
 		breather.Sleeping(min(breather.AmountSleeping() + 100, 200))
 
 /// N2O side-effects. "Too much N2O!"
-/obj/item/organ/internal/lungs/proc/safe_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, old_n2o_pp)
+/obj/item/organ/lungs/proc/safe_n2o(mob/living/carbon/breather, datum/gas_mixture/breath, old_n2o_pp)
 	n2o_euphoria = EUPHORIA_INACTIVE
 	breather.clear_alert(ALERT_TOO_MUCH_N2O)
 
 // Breathe in nitrium. It's helpful, but has nasty side effects
-/obj/item/organ/internal/lungs/proc/too_much_nitrium(mob/living/carbon/breather, datum/gas_mixture/breath, nitrium_pp, old_nitrium_pp)
+/obj/item/organ/lungs/proc/too_much_nitrium(mob/living/carbon/breather, datum/gas_mixture/breath, nitrium_pp, old_nitrium_pp)
 	breathe_gas_volume(breath, /datum/gas/nitrium)
 
 	if(prob(20))
@@ -557,7 +557,7 @@
 		breather.reagents.add_reagent(/datum/reagent/nitrium_high_metabolization, max(0, 1 - existing))
 
 /// Radioactive, green gas. Toxin damage, and a radiation chance
-/obj/item/organ/internal/lungs/proc/too_much_tritium(mob/living/carbon/breather, datum/gas_mixture/breath, trit_pp, old_trit_pp)
+/obj/item/organ/lungs/proc/too_much_tritium(mob/living/carbon/breather, datum/gas_mixture/breath, trit_pp, old_trit_pp)
 	var/gas_breathed = breathe_gas_volume(breath, /datum/gas/tritium)
 	var/moles_visible = GLOB.meta_gas_info[/datum/gas/tritium][META_GAS_MOLES_VISIBLE] * BREATH_PERCENTAGE
 	// Tritium side-effects.
@@ -572,7 +572,7 @@
 			breather.AddComponent(/datum/component/irradiated)
 
 /// Really toxic stuff, very much trying to kill you
-/obj/item/organ/internal/lungs/proc/too_much_zauker(mob/living/carbon/breather, datum/gas_mixture/breath, zauker_pp, old_zauker_pp)
+/obj/item/organ/lungs/proc/too_much_zauker(mob/living/carbon/breather, datum/gas_mixture/breath, zauker_pp, old_zauker_pp)
 	breathe_gas_volume(breath, /datum/gas/zauker)
 	// Metabolize to reagent.
 	if(zauker_pp > gas_stimulation_min)
@@ -591,7 +591,7 @@
  * * breath: A gas mixture to test, or null.
  * * breather: A carbon mob that is using the lungs to breathe.
  */
-/obj/item/organ/internal/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
+/obj/item/organ/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather)
 	if(HAS_TRAIT(breather, TRAIT_GODMODE))
 		breather.failed_last_breath = FALSE
 		breather.clear_alert(ALERT_NOT_ENOUGH_OXYGEN)
@@ -717,7 +717,7 @@
 /// Remove gas from breath. If output_gas is given, transfers the removed gas to the lung's gas_mixture.
 /// Removes 100% of the given gas type unless given a volume argument.
 /// Returns the amount of gas theoretically removed.
-/obj/item/organ/internal/lungs/proc/breathe_gas_volume(datum/gas_mixture/breath, remove_id, exchange_id = null, volume = INFINITY)
+/obj/item/organ/lungs/proc/breathe_gas_volume(datum/gas_mixture/breath, remove_id, exchange_id = null, volume = INFINITY)
 	var/list/breath_gases = breath.gases
 	volume = min(volume, breath_gases[remove_id][MOLES])
 	breath_gases[remove_id][MOLES] -= volume
@@ -728,7 +728,7 @@
 
 /// Applies suffocation side-effects to a given Human, scaling based on ratio of required pressure VS "true" pressure.
 /// If pressure is greater than 0, the return value will represent the amount of gas successfully breathed.
-/obj/item/organ/internal/lungs/proc/handle_suffocation(mob/living/carbon/human/suffocator = null, breath_pp = 0, safe_breath_min = 0, mole_count = 0)
+/obj/item/organ/lungs/proc/handle_suffocation(mob/living/carbon/human/suffocator = null, breath_pp = 0, safe_breath_min = 0, mole_count = 0)
 	. = 0
 	// Can't suffocate without a Human, or without minimum breath pressure.
 	if(!suffocator || !safe_breath_min)
@@ -758,7 +758,7 @@
 		suffocator.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS)
 
 
-/obj/item/organ/internal/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/breather) // called by human/life, handles temperatures
+/obj/item/organ/lungs/proc/handle_breath_temperature(datum/gas_mixture/breath, mob/living/carbon/human/breather) // called by human/life, handles temperatures
 	var/breath_temperature = breath.temperature
 
 	if(!HAS_TRAIT(breather, TRAIT_RESISTCOLD)) // COLD DAMAGE
@@ -807,7 +807,7 @@
 	breath.temperature = breather.bodytemperature
 
 /// Creates a particle effect off the mouth of the passed mob.
-/obj/item/organ/internal/lungs/proc/emit_breath_particle(mob/living/carbon/human/breather, particle_type)
+/obj/item/organ/lungs/proc/emit_breath_particle(mob/living/carbon/human/breather, particle_type)
 	ASSERT(ispath(particle_type, /particles))
 
 	var/obj/effect/abstract/particle_holder/holder = new(breather, particle_type)
@@ -842,7 +842,7 @@
 
 	QDEL_IN(holder, breath_particle.lifespan)
 
-/obj/item/organ/internal/lungs/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/lungs/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	if(failed && !(organ_flags & ORGAN_FAILING))
 		failed = FALSE
@@ -855,13 +855,13 @@
 		owner.visible_message(span_danger("[owner] grabs [owner.p_their()] throat, struggling for breath!"), span_userdanger("You suddenly feel like you can't breathe!"))
 		failed = TRUE
 
-/obj/item/organ/internal/lungs/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/lungs/get_availability(datum/species/owner_species, mob/living/owner_mob)
 	return owner_species.mutantlungs
 
 #define SMOKER_ORGAN_HEALTH (STANDARD_ORGAN_THRESHOLD * 0.75)
 #define SMOKER_LUNG_HEALING (STANDARD_ORGAN_HEALING * 0.75)
 
-/obj/item/organ/internal/lungs/plasmaman
+/obj/item/organ/lungs/plasmaman
 	name = "plasma filter"
 	desc = "A spongy rib-shaped mass for filtering plasma from the air."
 	icon_state = "lungs-plasma"
@@ -871,7 +871,7 @@
 	safe_plasma_min = 4 //We breathe THIS!
 	safe_plasma_max = 0
 
-/obj/item/organ/internal/lungs/plasmaman/plasmaman_smoker
+/obj/item/organ/lungs/plasmaman/plasmaman_smoker
 	name = "smoker plasma filter"
 	desc = "A plasma filter that look discolored, a result from smoking a lot."
 	icon_state = "lungs_plasma_smoker"
@@ -879,19 +879,19 @@
 	maxHealth = SMOKER_ORGAN_HEALTH
 	healing_factor = SMOKER_LUNG_HEALING
 
-/obj/item/organ/internal/lungs/slime
+/obj/item/organ/lungs/slime
 	name = "vacuole"
 	desc = "A large organelle designed to store oxygen and other important gasses."
 
 	safe_plasma_max = 0 //We breathe this to gain POWER.
 
-/obj/item/organ/internal/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather_slime)
+/obj/item/organ/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/breather_slime)
 	. = ..()
 	if (breath?.gases[/datum/gas/plasma])
 		var/plasma_pp = breath.get_breath_partial_pressure(breath.gases[/datum/gas/plasma][MOLES])
 		breather_slime.blood_volume += (0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you.
 
-/obj/item/organ/internal/lungs/smoker_lungs
+/obj/item/organ/lungs/smoker_lungs
 	name = "smoker lungs"
 	desc = "A pair of lungs that look sickly, a result from smoking a lot."
 	icon_state = "lungs_smoker"
@@ -899,7 +899,7 @@
 	maxHealth = SMOKER_ORGAN_HEALTH
 	healing_factor = SMOKER_LUNG_HEALING
 
-/obj/item/organ/internal/lungs/cybernetic
+/obj/item/organ/lungs/cybernetic
 	name = "basic cybernetic lungs"
 	desc = "A basic cybernetic version of the lungs found in traditional humanoid entities."
 	failing_desc = "seems to be broken."
@@ -908,7 +908,7 @@
 	maxHealth = STANDARD_ORGAN_THRESHOLD * 0.5
 	var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed.
 
-/obj/item/organ/internal/lungs/cybernetic/emp_act(severity)
+/obj/item/organ/lungs/cybernetic/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF)
 		return
@@ -918,7 +918,7 @@
 	if(prob(emp_vulnerability/severity)) //Chance of permanent effects
 		organ_flags |= ORGAN_EMP //Starts organ faliure - gonna need replacing soon.
 
-/obj/item/organ/internal/lungs/cybernetic/tier2
+/obj/item/organ/lungs/cybernetic/tier2
 	name = "cybernetic lungs"
 	desc = "A cybernetic version of the lungs found in traditional humanoid entities. Allows for greater intakes of oxygen than organic lungs, requiring slightly less pressure."
 	icon_state = "lungs-c-u"
@@ -926,7 +926,7 @@
 	safe_oxygen_min = 13
 	emp_vulnerability = 40
 
-/obj/item/organ/internal/lungs/cybernetic/tier3
+/obj/item/organ/lungs/cybernetic/tier3
 	name = "upgraded cybernetic lungs"
 	desc = "A more advanced version of the stock cybernetic lungs. Features the ability to filter out lower levels of plasma and carbon dioxide."
 	icon_state = "lungs-c-u2"
@@ -940,7 +940,7 @@
 	cold_level_2_threshold = 140
 	cold_level_3_threshold = 100
 
-/obj/item/organ/internal/lungs/cybernetic/surplus
+/obj/item/organ/lungs/cybernetic/surplus
 	name = "surplus prosthetic lungs"
 	desc = "Two fragile, inflatable sacks of air that only barely mimic the function of human lungs. \
 		Offer no protection against EMPs."
@@ -949,11 +949,11 @@
 	emp_vulnerability = 100
 
 //surplus organs are so awful that they explode when removed, unless failing
-/obj/item/organ/internal/lungs/cybernetic/surplus/Initialize(mapload)
+/obj/item/organ/lungs/cybernetic/surplus/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE)
 
-/obj/item/organ/internal/lungs/lavaland
+/obj/item/organ/lungs/lavaland
 	name = "blackened frilled lungs" // blackened from necropolis exposure
 	desc = "Exposure to the necropolis has mutated these lungs to breathe the air of Indecipheres, the lava-covered moon."
 	icon_state = "lungs-ashwalker"
@@ -962,7 +962,7 @@
 // to 16 kPa. So it follows that ashwalkers, as humanoids, follow the same rules.
 #define GAS_TOLERANCE 5
 
-/obj/item/organ/internal/lungs/lavaland/Initialize(mapload)
+/obj/item/organ/lungs/lavaland/Initialize(mapload)
 	var/datum/gas_mixture/immutable/planetary/mix = SSair.planetary[LAVALAND_DEFAULT_ATMOS]
 
 	if(!mix?.total_moles()) // this typically means we didn't load lavaland, like if we're using the LOWMEMORYMODE define
@@ -1013,7 +1013,7 @@
 
 #undef GAS_TOLERANCE
 
-/obj/item/organ/internal/lungs/ethereal
+/obj/item/organ/lungs/ethereal
 	name = "aeration reticulum"
 	desc = "These exotic lungs seem crunchier than most."
 	icon_state = "lungs_ethereal"
@@ -1021,7 +1021,7 @@
 	heat_level_2_threshold = 473
 	heat_level_3_threshold = 1073
 
-/obj/item/organ/internal/lungs/ethereal/ethereal_smoker
+/obj/item/organ/lungs/ethereal/ethereal_smoker
 	name = "smoker aeration reticulum"
 	desc = "A pair of exotic lungs that look pale and sickly, a result from smoking a lot."
 	icon_state = "lungs_ethereal_smoker"
@@ -1029,12 +1029,12 @@
 	maxHealth = SMOKER_ORGAN_HEALTH
 	healing_factor = SMOKER_LUNG_HEALING
 
-/obj/item/organ/internal/lungs/ethereal/Initialize(mapload)
+/obj/item/organ/lungs/ethereal/Initialize(mapload)
 	. = ..()
 	add_gas_reaction(/datum/gas/water_vapor, while_present = PROC_REF(consume_water))
 
 /// H2O electrolysis
-/obj/item/organ/internal/lungs/ethereal/proc/consume_water(mob/living/carbon/breather, datum/gas_mixture/breath, h2o_pp, old_h2o_pp)
+/obj/item/organ/lungs/ethereal/proc/consume_water(mob/living/carbon/breather, datum/gas_mixture/breath, h2o_pp, old_h2o_pp)
 	var/gas_breathed = breath.gases[/datum/gas/water_vapor][MOLES]
 	breath.gases[/datum/gas/water_vapor][MOLES] -= gas_breathed
 	breath_out.assert_gases(/datum/gas/oxygen, /datum/gas/hydrogen)
diff --git a/code/modules/surgery/organs/internal/stomach/_stomach.dm b/code/modules/surgery/organs/internal/stomach/_stomach.dm
index 45cc12fc32b..4d6ef0cbc40 100644
--- a/code/modules/surgery/organs/internal/stomach/_stomach.dm
+++ b/code/modules/surgery/organs/internal/stomach/_stomach.dm
@@ -1,7 +1,7 @@
 //The contant in the rate of reagent transfer on life ticks
 #define STOMACH_METABOLISM_CONSTANT 0.25
 
-/obj/item/organ/internal/stomach
+/obj/item/organ/stomach
 	name = "stomach"
 	desc = "Onaka ga suite imasu."
 	icon_state = "stomach"
@@ -20,7 +20,7 @@
 	high_threshold_cleared = span_info("The pain in your stomach dies down for now, but food still seems unappealing.")
 	low_threshold_cleared = span_info("The last bouts of pain in your stomach have died out.")
 
-	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5)
+	food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue/stomach_lining = 5)
 	//This is a reagent user and needs more then the 10u from edible component
 	reagent_vol = 1000
 
@@ -35,7 +35,7 @@
 
 	var/operated = FALSE //whether the stomach's been repaired with surgery and can be fixed again or not
 
-/obj/item/organ/internal/stomach/Initialize(mapload)
+/obj/item/organ/stomach/Initialize(mapload)
 	. = ..()
 	//None edible organs do not get a reagent holder by default
 	if(!reagents)
@@ -43,7 +43,7 @@
 	else
 		reagents.flags |= REAGENT_HOLDER_ALIVE
 
-/obj/item/organ/internal/stomach/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/stomach/on_life(seconds_per_tick, times_fired)
 	. = ..()
 
 	//Manage species digestion
@@ -119,7 +119,7 @@
 		body.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = damage)
 		to_chat(body, span_warning("Your stomach reels in pain as you're incapable of holding down all that food!"))
 
-/obj/item/organ/internal/stomach/proc/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired)
+/obj/item/organ/stomach/proc/handle_hunger(mob/living/carbon/human/human, seconds_per_tick, times_fired)
 	if(HAS_TRAIT(human, TRAIT_NOHUNGER))
 		return //hunger is for BABIES
 
@@ -185,22 +185,22 @@
 		handle_hunger_slowdown(human)
 
 ///for when mood is disabled and hunger should handle slowdowns
-/obj/item/organ/internal/stomach/proc/handle_hunger_slowdown(mob/living/carbon/human/human)
+/obj/item/organ/stomach/proc/handle_hunger_slowdown(mob/living/carbon/human/human)
 	var/hungry = (500 - human.nutrition) / 5 //So overeat would be 100 and default level would be 80
 	if(hungry >= 70)
 		human.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (hungry / 50))
 	else
 		human.remove_movespeed_modifier(/datum/movespeed_modifier/hunger)
 
-/obj/item/organ/internal/stomach/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/stomach/get_availability(datum/species/owner_species, mob/living/owner_mob)
 	return owner_species.mutantstomach
 
 ///This gets called after the owner takes a bite of food
-/obj/item/organ/internal/stomach/proc/after_eat(atom/edible)
+/obj/item/organ/stomach/proc/after_eat(atom/edible)
 	SEND_SIGNAL(src, COMSIG_STOMACH_AFTER_EAT, edible) // NOVA EDIT ADDITION - Hemophage Organs
 	return
 
-/obj/item/organ/internal/stomach/proc/handle_disgust(mob/living/carbon/human/disgusted, seconds_per_tick, times_fired)
+/obj/item/organ/stomach/proc/handle_disgust(mob/living/carbon/human/disgusted, seconds_per_tick, times_fired)
 	var/old_disgust = disgusted.old_disgust
 	var/disgust = disgusted.disgust
 
@@ -247,11 +247,11 @@
 			disgusted.throw_alert(ALERT_DISGUST, /atom/movable/screen/alert/disgusted)
 			disgusted.add_mood_event("disgust", /datum/mood_event/disgusted)
 
-/obj/item/organ/internal/stomach/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/stomach/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	. = ..()
 	receiver.hud_used?.hunger?.update_appearance()
 
-/obj/item/organ/internal/stomach/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
+/obj/item/organ/stomach/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags)
 	if(ishuman(stomach_owner))
 		var/mob/living/carbon/human/human_owner = owner
 		human_owner.clear_alert(ALERT_DISGUST)
@@ -259,21 +259,21 @@
 	stomach_owner.hud_used?.hunger?.update_appearance()
 	return ..()
 
-/obj/item/organ/internal/stomach/bone
+/obj/item/organ/stomach/bone
 	name = "mass of bones"
 	desc = "You have no idea what this strange ball of bones does."
 	icon_state = "stomach-bone"
 	metabolism_efficiency = 0.025 //very bad
 	organ_traits = list(TRAIT_NOHUNGER)
 
-/obj/item/organ/internal/stomach/bone/plasmaman
+/obj/item/organ/stomach/bone/plasmaman
 	name = "digestive crystal"
 	desc = "A strange crystal that is responsible for metabolizing the unseen energy force that feeds plasmamen."
 	icon_state = "stomach-p"
 	metabolism_efficiency = 0.06
 	organ_traits = null
 
-/obj/item/organ/internal/stomach/cybernetic
+/obj/item/organ/stomach/cybernetic
 	name = "basic cybernetic stomach"
 	desc = "A basic device designed to mimic the functions of a human stomach"
 	failing_desc = "seems to be broken."
@@ -283,7 +283,7 @@
 	metabolism_efficiency = 0.035 // not as good at digestion
 	var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed.
 
-/obj/item/organ/internal/stomach/cybernetic/emp_act(severity)
+/obj/item/organ/stomach/cybernetic/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF)
 		return
@@ -293,7 +293,7 @@
 	if(prob(emp_vulnerability/severity)) //Chance of permanent effects
 		organ_flags |= ORGAN_EMP //Starts organ faliure - gonna need replacing soon.
 
-/obj/item/organ/internal/stomach/cybernetic/tier2
+/obj/item/organ/stomach/cybernetic/tier2
 	name = "cybernetic stomach"
 	desc = "An electronic device designed to mimic the functions of a human stomach. Handles disgusting food a bit better."
 	icon_state = "stomach-c-u"
@@ -302,7 +302,7 @@
 	emp_vulnerability = 40
 	metabolism_efficiency = 0.07
 
-/obj/item/organ/internal/stomach/cybernetic/tier3
+/obj/item/organ/stomach/cybernetic/tier3
 	name = "upgraded cybernetic stomach"
 	desc = "An upgraded version of the cybernetic stomach, designed to improve further upon organic stomachs. Handles disgusting food very well."
 	icon_state = "stomach-c-u2"
@@ -311,7 +311,7 @@
 	emp_vulnerability = 20
 	metabolism_efficiency = 0.1
 
-/obj/item/organ/internal/stomach/cybernetic/surplus
+/obj/item/organ/stomach/cybernetic/surplus
 	name = "surplus prosthetic stomach"
 	desc = "A mechanical plastic oval that utilizes sulfuric acid instead of stomach acid. \
 		Very fragile, with painfully slow metabolism.\
@@ -322,7 +322,7 @@
 	metabolism_efficiency = 0.025
 
 //surplus organs are so awful that they explode when removed, unless failing
-/obj/item/organ/internal/stomach/cybernetic/surplus/Initialize(mapload)
+/obj/item/organ/stomach/cybernetic/surplus/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/dangerous_organ_removal, /*surgical = */ TRUE)
 
diff --git a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
index ff2c0697f79..0a409d3b531 100644
--- a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
+++ b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/stomach/ethereal
+/obj/item/organ/stomach/ethereal
 	name = "biological battery"
 	icon_state = "stomach-p" //Welp. At least it's more unique in functionaliy.
 	desc = "A crystal-like organ that stores the electric charge of ethereals."
@@ -8,25 +8,25 @@
 	///used to keep ethereals from spam draining power sources
 	var/drain_time = 0
 
-/obj/item/organ/internal/stomach/ethereal/Initialize(mapload)
+/obj/item/organ/stomach/ethereal/Initialize(mapload)
 	. = ..()
 	cell = new /obj/item/stock_parts/power_store/cell/ethereal(src)
 
-/obj/item/organ/internal/stomach/ethereal/Destroy()
+/obj/item/organ/stomach/ethereal/Destroy()
 	QDEL_NULL(cell)
 	return ..()
 
-/obj/item/organ/internal/stomach/ethereal/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/stomach/ethereal/on_life(seconds_per_tick, times_fired)
 	. = ..()
 	adjust_charge(-ETHEREAL_DISCHARGE_RATE * seconds_per_tick)
 	handle_charge(owner, seconds_per_tick, times_fired)
 
-/obj/item/organ/internal/stomach/ethereal/on_mob_insert(mob/living/carbon/stomach_owner)
+/obj/item/organ/stomach/ethereal/on_mob_insert(mob/living/carbon/stomach_owner)
 	. = ..()
 	RegisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge))
 	RegisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT, PROC_REF(on_electrocute))
 
-/obj/item/organ/internal/stomach/ethereal/on_mob_remove(mob/living/carbon/stomach_owner)
+/obj/item/organ/stomach/ethereal/on_mob_remove(mob/living/carbon/stomach_owner)
 	. = ..()
 	UnregisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT)
 	UnregisterSignal(stomach_owner, COMSIG_LIVING_ELECTROCUTE_ACT)
@@ -34,15 +34,15 @@
 	stomach_owner.clear_alert(ALERT_ETHEREAL_CHARGE)
 	stomach_owner.clear_alert(ALERT_ETHEREAL_OVERCHARGE)
 
-/obj/item/organ/internal/stomach/ethereal/handle_hunger_slowdown(mob/living/carbon/human/human)
+/obj/item/organ/stomach/ethereal/handle_hunger_slowdown(mob/living/carbon/human/human)
 	human.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (1.5 * (1 - cell.charge() / 100)))
 
-/obj/item/organ/internal/stomach/ethereal/proc/charge(datum/source, datum/callback/charge_cell, seconds_per_tick)
+/obj/item/organ/stomach/ethereal/proc/charge(datum/source, datum/callback/charge_cell, seconds_per_tick)
 	SIGNAL_HANDLER
 
 	charge_cell.Invoke(cell, seconds_per_tick / 3.5) // Ethereals don't have NT designed charging ports, so they charge slower.
 
-/obj/item/organ/internal/stomach/ethereal/proc/on_electrocute(datum/source, shock_damage, shock_source, siemens_coeff = 1, flags = NONE)
+/obj/item/organ/stomach/ethereal/proc/on_electrocute(datum/source, shock_damage, shock_source, siemens_coeff = 1, flags = NONE)
 	SIGNAL_HANDLER
 	if(flags & SHOCK_ILLUSION)
 		return
@@ -55,11 +55,11 @@
 * - amount: The change of the energy, in joules.
 * Returns: The amount of energy that actually got changed in joules.
 **/
-/obj/item/organ/internal/stomach/ethereal/proc/adjust_charge(amount)
+/obj/item/organ/stomach/ethereal/proc/adjust_charge(amount)
 	var/amount_changed = clamp(amount, ETHEREAL_CHARGE_NONE - cell.charge(), ETHEREAL_CHARGE_DANGEROUS - cell.charge())
 	return cell.change(amount_changed)
 
-/obj/item/organ/internal/stomach/ethereal/proc/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired)
+/obj/item/organ/stomach/ethereal/proc/handle_charge(mob/living/carbon/carbon, seconds_per_tick, times_fired)
 	switch(cell.charge())
 		if(-INFINITY to ETHEREAL_CHARGE_NONE)
 			carbon.add_mood_event("charge", /datum/mood_event/decharged)
@@ -97,7 +97,7 @@
 			carbon.clear_alert(ALERT_ETHEREAL_CHARGE)
 			carbon.clear_alert(ALERT_ETHEREAL_OVERCHARGE)
 
-/obj/item/organ/internal/stomach/ethereal/proc/discharge_process(mob/living/carbon/carbon)
+/obj/item/organ/stomach/ethereal/proc/discharge_process(mob/living/carbon/carbon)
 	to_chat(carbon, span_warning("You begin to lose control over your charge!"))
 	carbon.visible_message(span_danger("[carbon] begins to spark violently!"))
 
diff --git a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm
index a1f5ce6c70e..c4fa888f6cb 100644
--- a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm
+++ b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/stomach/golem
+/obj/item/organ/stomach/golem
 	name = "silicate grinder"
 	icon_state = "stomach-p"
 	desc = "A rocklike organ which grinds and processes nutrition from minerals."
@@ -11,18 +11,18 @@
 	/// How slow are you if you have absolutely nothing in the tank?
 	var/max_hunger_slowdown = 4
 
-/obj/item/organ/internal/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special)
 	. = ..()
 	RegisterSignal(owner, COMSIG_CARBON_ATTEMPT_EAT, PROC_REF(try_eating))
 
-/obj/item/organ/internal/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	UnregisterSignal(organ_owner, COMSIG_CARBON_ATTEMPT_EAT)
 	organ_owner.remove_movespeed_modifier(/datum/movespeed_modifier/golem_hunger)
 	organ_owner.remove_status_effect(/datum/status_effect/golem_statued)
 
 /// Reject food, rocks only
-/obj/item/organ/internal/stomach/golem/proc/try_eating(mob/living/carbon/source, atom/eating)
+/obj/item/organ/stomach/golem/proc/try_eating(mob/living/carbon/source, atom/eating)
 	SIGNAL_HANDLER
 	if(istype(eating, /obj/item/food/golem_food))
 		return
@@ -30,7 +30,7 @@
 	return COMSIG_CARBON_BLOCK_EAT
 
 /// Golem stomach cannot process nutriment except from minerals
-/obj/item/organ/internal/stomach/golem/on_life(delta_time, times_fired)
+/obj/item/organ/stomach/golem/on_life(delta_time, times_fired)
 	for(var/datum/reagent/consumable/food in reagents.reagent_list)
 		if (istype(food, /datum/reagent/consumable/nutriment/mineral))
 			continue
@@ -38,7 +38,7 @@
 	return ..()
 
 /// Slow down based on how full you are
-/obj/item/organ/internal/stomach/golem/handle_hunger(mob/living/carbon/human/human, delta_time, times_fired)
+/obj/item/organ/stomach/golem/handle_hunger(mob/living/carbon/human/human, delta_time, times_fired)
 	// the effects are all negative, so just don't run them if you have the trait
 	. = ..()
 	if(HAS_TRAIT(human, TRAIT_NOHUNGER))
diff --git a/code/modules/surgery/organs/internal/tongue/_tongue.dm b/code/modules/surgery/organs/internal/tongue/_tongue.dm
index 86b29de817e..cf547b027f4 100644
--- a/code/modules/surgery/organs/internal/tongue/_tongue.dm
+++ b/code/modules/surgery/organs/internal/tongue/_tongue.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/tongue
+/obj/item/organ/tongue
 	name = "tongue"
 	desc = "A fleshy muscle mostly used for lying."
 	icon_state = "tongue"
@@ -14,7 +14,7 @@
 	 * Relates to a mob's ability to speak a language - a mob must be able to speak the language
 	 * and have a tongue able to speak the language (or omnitongue) in order to actually speak said language
 	 *
-	 * To modify this list for subtypes, see [/obj/item/organ/internal/tongue/proc/get_possible_languages]. Do not modify directly.
+	 * To modify this list for subtypes, see [/obj/item/organ/tongue/proc/get_possible_languages]. Do not modify directly.
 	 */
 	VAR_PRIVATE/list/languages_possible
 	/**
@@ -44,7 +44,7 @@
 	/// Whether this tongue modifies speech via signal
 	var/modifies_speech = FALSE
 
-/obj/item/organ/internal/tongue/Initialize(mapload)
+/obj/item/organ/tongue/Initialize(mapload)
 	. = ..()
 	// Setup the possible languages list
 	// - get_possible_languages gives us a list of language paths
@@ -52,7 +52,7 @@
 	// this results in tongues with identical possible languages sharing a cached list instance
 	languages_possible = string_list(get_possible_languages())
 
-/obj/item/organ/internal/tongue/examine(mob/user)
+/obj/item/organ/tongue/examine(mob/user)
 	. = ..()
 	if(HAS_MIND_TRAIT(user, TRAIT_ENTRAILS_READER)|| isobserver(user))
 		if(liked_foodtypes)
@@ -71,7 +71,7 @@
  * While a user may be theoretically capable of speaking a language, they cannot physically speak it
  * UNLESS they have a tongue with that language possible, UNLESS UNLESS they have omnitongue enabled.
  */
-/obj/item/organ/internal/tongue/proc/get_possible_languages()
+/obj/item/organ/tongue/proc/get_possible_languages()
 	RETURN_TYPE(/list)
 	// This is the default list of languages most humans should be capable of speaking
 	return list(
@@ -91,13 +91,13 @@
 		/datum/language/nekomimetic,
 	)
 
-/obj/item/organ/internal/tongue/proc/handle_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/proc/handle_speech(datum/source, list/speech_args)
 	SIGNAL_HANDLER
 
 	if(should_modify_speech(source, speech_args))
 		modify_speech(source, speech_args)
 
-/obj/item/organ/internal/tongue/proc/should_modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/proc/should_modify_speech(datum/source, list/speech_args)
 	if(speech_args[SPEECH_LANGUAGE] in languages_native) // Speaking a native language?
 		return FALSE // Don't modify speech
 	if(HAS_TRAIT(source, TRAIT_SIGN_LANG)) // No modifiers for signers - I hate this but I simply cannot get these to combine into one statement
@@ -108,7 +108,7 @@
 	// FLUFFY FRONTIER EDIT END.
 	return TRUE
 
-/obj/item/organ/internal/tongue/proc/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/proc/modify_speech(datum/source, list/speech_args)
 	return speech_args[SPEECH_MESSAGE]
 
 /**
@@ -118,7 +118,7 @@
  * Can be overriden by subtypes for more complex behavior.
  * Does not get called if the owner has ageusia.
  **/
-/obj/item/organ/internal/tongue/proc/get_food_taste_reaction(obj/item/food, foodtypes = NONE)
+/obj/item/organ/tongue/proc/get_food_taste_reaction(obj/item/food, foodtypes = NONE)
 	var/food_taste_reaction
 	if(foodtypes & toxic_foodtypes)
 		food_taste_reaction = FOOD_TOXIC
@@ -128,7 +128,7 @@
 		food_taste_reaction = FOOD_LIKED
 	return food_taste_reaction
 
-/obj/item/organ/internal/tongue/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/tongue/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	. = ..()
 
 	if(modifies_speech)
@@ -144,7 +144,7 @@
 	REMOVE_TRAIT(receiver, TRAIT_AGEUSIA, NO_TONGUE_TRAIT)
 	apply_tongue_effects()
 
-/obj/item/organ/internal/tongue/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/tongue/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 
 	temp_say_mod = ""
@@ -156,14 +156,14 @@
 	ADD_TRAIT(organ_owner, TRAIT_AGEUSIA, NO_TONGUE_TRAIT)
 	organ_owner.voice_filter = initial(organ_owner.voice_filter)
 
-/obj/item/organ/internal/tongue/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag)
+/obj/item/organ/tongue/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag)
 	. = ..()
 	if(!owner)
 		return FALSE
 	apply_tongue_effects()
 
 /// Applies effects to our owner based on how damaged our tongue is
-/obj/item/organ/internal/tongue/proc/apply_tongue_effects()
+/obj/item/organ/tongue/proc/apply_tongue_effects()
 	if(sense_of_taste)
 		//tongues can't taste food when they are failing
 		if(organ_flags & ORGAN_FAILING)
@@ -178,13 +178,13 @@
 	else
 		ADD_TRAIT(owner, TRAIT_SPEAKS_CLEARLY, SPEAKING_FROM_TONGUE)
 
-/obj/item/organ/internal/tongue/could_speak_language(datum/language/language_path)
+/obj/item/organ/tongue/could_speak_language(datum/language/language_path)
 	return (language_path in languages_possible)
 
-/obj/item/organ/internal/tongue/get_availability(datum/species/owner_species, mob/living/owner_mob)
+/obj/item/organ/tongue/get_availability(datum/species/owner_species, mob/living/owner_mob)
 	return owner_species.mutanttongue
 
-/obj/item/organ/internal/tongue/lizard
+/obj/item/organ/tongue/lizard
 	name = "forked tongue"
 	desc = "A thin and long muscle typically found in reptilian races, apparently moonlights as a nose."
 	icon_state = "tonguelizard"
@@ -219,11 +219,11 @@
 	)
 	// NOVA EDIT ADDITION END
 
-/obj/item/organ/internal/tongue/lizard/New(class, timer, datum/mutation/human/copymut)
+/obj/item/organ/tongue/lizard/New(class, timer, datum/mutation/human/copymut)
 	. = ..()
 	AddComponent(/datum/component/speechmod, replacements = CONFIG_GET(flag/russian_text_formation) ? russian_speech_replacements : speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) // NOVA EDIT CHANGE - ORIGINAL: AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech)))
 
-/obj/item/organ/internal/tongue/lizard/silver
+/obj/item/organ/tongue/lizard/silver
 	name = "silver tongue"
 	desc = "A genetic branch of the high society Silver Scales that gives them their silverizing properties. To them, it is everything, and society traitors have their tongue forcibly revoked. Oddly enough, it itself is just blue."
 	icon_state = "silvertongue"
@@ -243,7 +243,7 @@
 
 /datum/action/cooldown/turn_to_statue/New(Target)
 	. = ..()
-	if(!istype(Target, /obj/item/organ/internal/tongue/lizard/silver))
+	if(!istype(Target, /obj/item/organ/tongue/lizard/silver))
 		stack_trace("Non-silverscale tongue initialized a turn to statue action.")
 		qdel(src)
 		return
@@ -261,7 +261,7 @@
 
 	if(!isliving(owner))
 		return FALSE
-	var/obj/item/organ/internal/tongue/lizard/silver/tongue_target = target
+	var/obj/item/organ/tongue/lizard/silver/tongue_target = target
 	if(tongue_target.owner != owner)
 		return FALSE
 
@@ -372,7 +372,7 @@
 	bomb = 50
 	fire = 100
 
-/obj/item/organ/internal/tongue/abductor
+/obj/item/organ/tongue/abductor
 	name = "superlingual matrix"
 	desc = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something."
 	icon_state = "tongueayylmao"
@@ -381,11 +381,11 @@
 	modifies_speech = TRUE
 	var/mothership
 
-/obj/item/organ/internal/tongue/abductor/attack_self(mob/living/carbon/human/tongue_holder)
+/obj/item/organ/tongue/abductor/attack_self(mob/living/carbon/human/tongue_holder)
 	if(!istype(tongue_holder))
 		return
 
-	var/obj/item/organ/internal/tongue/abductor/tongue = tongue_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/abductor/tongue = tongue_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(!istype(tongue))
 		return
 
@@ -397,7 +397,7 @@
 		to_chat(tongue_holder, span_notice("You attune [src] to your own channel."))
 		mothership = tongue.mothership
 
-/obj/item/organ/internal/tongue/abductor/examine(mob/examining_mob)
+/obj/item/organ/tongue/abductor/examine(mob/examining_mob)
 	. = ..()
 	if(HAS_MIND_TRAIT(examining_mob, TRAIT_ABDUCTOR_TRAINING) || isobserver(examining_mob))
 		. += span_notice("It can be attuned to a different channel by using it inhand.")
@@ -406,14 +406,14 @@
 		else
 			. += span_notice("It is attuned to [mothership].")
 
-/obj/item/organ/internal/tongue/abductor/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/abductor/modify_speech(datum/source, list/speech_args)
 	//Hacks
 	var/message = speech_args[SPEECH_MESSAGE]
 	var/mob/living/carbon/human/user = source
 	var/rendered = span_abductor("<b>[user.real_name]:</b> [message]")
 	user.log_talk(message, LOG_SAY, tag="abductor")
 	for(var/mob/living/carbon/human/living_mob in GLOB.alive_mob_list)
-		var/obj/item/organ/internal/tongue/abductor/tongue = living_mob.get_organ_slot(ORGAN_SLOT_TONGUE)
+		var/obj/item/organ/tongue/abductor/tongue = living_mob.get_organ_slot(ORGAN_SLOT_TONGUE)
 		if(!istype(tongue))
 			continue
 		if(mothership == tongue.mothership)
@@ -425,7 +425,7 @@
 
 	speech_args[SPEECH_MESSAGE] = ""
 
-/obj/item/organ/internal/tongue/zombie
+/obj/item/organ/tongue/zombie
 	name = "rotting tongue"
 	desc = "Between the decay and the fact that it's just lying there you doubt a tongue has ever seemed less sexy."
 	icon_state = "tonguezombie"
@@ -438,14 +438,14 @@
 // List of english words that translate to zombie phrases
 GLOBAL_LIST_INIT(english_to_zombie, list())
 
-/obj/item/organ/internal/tongue/zombie/proc/add_word_to_translations(english_word, zombie_word)
+/obj/item/organ/tongue/zombie/proc/add_word_to_translations(english_word, zombie_word)
 	GLOB.english_to_zombie[english_word] = zombie_word
 	// zombies don't care about grammar (any tense or form is all translated to the same word)
 	GLOB.english_to_zombie[english_word + plural_s(english_word)] = zombie_word
 	GLOB.english_to_zombie[english_word + "ing"] = zombie_word
 	GLOB.english_to_zombie[english_word + "ed"] = zombie_word
 
-/obj/item/organ/internal/tongue/zombie/proc/load_zombie_translations()
+/obj/item/organ/tongue/zombie/proc/load_zombie_translations()
 	var/list/zombie_translation = strings("zombie_replacement.json", "zombie")
 	for(var/zombie_word in zombie_translation)
 		// since zombie words are a reverse list, we gotta do this backwards
@@ -454,7 +454,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 			add_word_to_translations(english_word, zombie_word)
 	GLOB.english_to_zombie = sort_list(GLOB.english_to_zombie) // Alphabetizes the list (for debugging)
 
-/obj/item/organ/internal/tongue/zombie/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/zombie/modify_speech(datum/source, list/speech_args)
 	var/message = speech_args[SPEECH_MESSAGE]
 	if(message[1] != "*")
 		// setup the global list for translation if it hasn't already been done
@@ -492,7 +492,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 		message = capitalize(message)
 		speech_args[SPEECH_MESSAGE] = message
 
-/obj/item/organ/internal/tongue/alien
+/obj/item/organ/tongue/alien
 	name = "alien tongue"
 	desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"."
 	icon_state = "tonguexeno"
@@ -501,7 +501,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	modifies_speech = TRUE // not really, they just hiss
 	voice_filter = @{"[0:a] asplit [out0][out2]; [out0] asetrate=%SAMPLE_RATE%*0.8,aresample=%SAMPLE_RATE%,atempo=1/0.8,aformat=channel_layouts=mono [p0]; [out2] asetrate=%SAMPLE_RATE%*1.2,aresample=%SAMPLE_RATE%,atempo=1/1.2,aformat=channel_layouts=mono[p2]; [p0][0][p2] amix=inputs=3"}
 // Aliens can only speak alien and a few other languages.
-/obj/item/organ/internal/tongue/alien/get_possible_languages()
+/obj/item/organ/tongue/alien/get_possible_languages()
 	return list(
 		/datum/language/xenocommon,
 		/datum/language/common,
@@ -510,14 +510,14 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 		/datum/language/monkey,
 	)
 
-/obj/item/organ/internal/tongue/alien/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/alien/modify_speech(datum/source, list/speech_args)
 	var/datum/saymode/xeno/hivemind = speech_args[SPEECH_SAYMODE]
 	if(hivemind)
 		return
 
 	playsound(owner, SFX_HISS, 25, TRUE, TRUE)
 
-/obj/item/organ/internal/tongue/bone
+/obj/item/organ/tongue/bone
 	name = "bone \"tongue\""
 	desc = "Apparently skeletons alter the sounds they produce through oscillation of their teeth, hence their characteristic rattling."
 	icon_state = "tonguebone"
@@ -532,15 +532,15 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	var/phomeme_type = "sans"
 	var/list/phomeme_types = list("sans", "papyrus")
 
-/obj/item/organ/internal/tongue/bone/Initialize(mapload)
+/obj/item/organ/tongue/bone/Initialize(mapload)
 	. = ..()
 	phomeme_type = pick(phomeme_types)
 
 // Bone tongues can speak all default + calcic
-/obj/item/organ/internal/tongue/bone/get_possible_languages()
+/obj/item/organ/tongue/bone/get_possible_languages()
 	return ..() + /datum/language/calcic
 
-/obj/item/organ/internal/tongue/bone/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/bone/modify_speech(datum/source, list/speech_args)
 	if (chattering)
 		chatter(speech_args[SPEECH_MESSAGE], phomeme_type, source)
 	switch(phomeme_type)
@@ -549,7 +549,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 		if("papyrus")
 			speech_args[SPEECH_SPANS] |= SPAN_PAPYRUS
 
-/obj/item/organ/internal/tongue/bone/plasmaman
+/obj/item/organ/tongue/bone/plasmaman
 	name = "plasma bone \"tongue\""
 	desc = "Like animated skeletons, Plasmamen vibrate their teeth in order to produce speech."
 	icon_state = "tongueplasma"
@@ -557,7 +557,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	liked_foodtypes = VEGETABLES
 	disliked_foodtypes = FRUIT | CLOTH
 
-/obj/item/organ/internal/tongue/robot
+/obj/item/organ/tongue/robot
 	name = "robotic voicebox"
 	desc = "A voice synthesizer that can interface with organic lifeforms."
 	failing_desc = "seems to be broken."
@@ -571,13 +571,13 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	organ_traits = list(TRAIT_SILICON_EMOTES_ALLOWED)
 	voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000"
 
-/obj/item/organ/internal/tongue/robot/could_speak_language(datum/language/language_path)
+/obj/item/organ/tongue/robot/could_speak_language(datum/language/language_path)
 	return TRUE // THE MAGIC OF ELECTRONICS
 
-/obj/item/organ/internal/tongue/robot/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/robot/modify_speech(datum/source, list/speech_args)
 	speech_args[SPEECH_SPANS] |= SPAN_ROBOT
 
-/obj/item/organ/internal/tongue/snail
+/obj/item/organ/tongue/snail
 	name = "radula"
 	desc = "A minutely toothed, chitious ribbon, which as a side effect, makes all snails talk IINNCCRREEDDIIBBLLYY SSLLOOWWLLYY."
 	color = "#96DB00" // TODO proper sprite, rather than recoloured pink tongue
@@ -587,7 +587,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	disliked_foodtypes = DAIRY | ORANGES | SUGAR //NOVA EDIT: Roundstart Snails - As it turns out, you can't give a snail processed sugar or citrus.
 
 /* NOVA EDIT START - Roundstart Snails: Less annoying speech.
-/obj/item/organ/internal/tongue/snail/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/snail/modify_speech(datum/source, list/speech_args)
 	var/new_message
 	var/message = speech_args[SPEECH_MESSAGE]
 	for(var/i in 1 to length(message))
@@ -598,7 +598,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	speech_args[SPEECH_MESSAGE] = new_message
 */ // NOVA EDIT END
 
-/obj/item/organ/internal/tongue/ethereal
+/obj/item/organ/tongue/ethereal
 	name = "electric discharger"
 	desc = "A sophisticated ethereal organ, capable of synthesising speech via electrical discharge."
 	icon_state = "electrotongue"
@@ -612,10 +612,10 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	voice_filter = @{"[0:a] asplit [out0][out2]; [out0] asetrate=%SAMPLE_RATE%*0.99,aresample=%SAMPLE_RATE%,volume=0.3 [p0]; [p0][out2] amix=inputs=2"}
 
 // Ethereal tongues can speak all default + voltaic
-/obj/item/organ/internal/tongue/ethereal/get_possible_languages()
+/obj/item/organ/tongue/ethereal/get_possible_languages()
 	return ..() + /datum/language/voltaic
 
-/obj/item/organ/internal/tongue/cat
+/obj/item/organ/tongue/cat
 	name = "felinid tongue"
 	desc = "A fleshy muscle mostly used for meowing."
 	say_mod = "meows"
@@ -623,7 +623,7 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	disliked_foodtypes = GROSS | CLOTH | RAW
 	organ_traits = list(TRAIT_WOUND_LICKER, TRAIT_FISH_EATER)
 
-/obj/item/organ/internal/tongue/jelly
+/obj/item/organ/tongue/jelly
 	name = "jelly tongue"
 	desc = "Ah... That's not the sound I expected it to make. Sounds like a Space Autumn Bird."
 	say_mod = "chirps"
@@ -631,20 +631,20 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	disliked_foodtypes = GROSS
 	toxic_foodtypes = NONE
 
-/obj/item/organ/internal/tongue/jelly/get_food_taste_reaction(obj/item/food, foodtypes = NONE)
+/obj/item/organ/tongue/jelly/get_food_taste_reaction(obj/item/food, foodtypes = NONE)
 	// a silver slime created this? what a delicacy!
 	if(HAS_TRAIT(food, TRAIT_FOOD_SILVER))
 		return FOOD_LIKED
 	return ..()
 
-/obj/item/organ/internal/tongue/monkey
+/obj/item/organ/tongue/monkey
 	name = "primitive tongue"
 	desc = "For aggressively chimpering. And consuming bananas."
 	say_mod = "chimpers"
 	liked_foodtypes = MEAT | FRUIT | BUGS
 	disliked_foodtypes = CLOTH
 
-/obj/item/organ/internal/tongue/moth
+/obj/item/organ/tongue/moth
 	name = "moth tongue"
 	desc = "Moths don't have tongues. Someone get god on the phone, tell them I'm not happy."
 	say_mod = "flutters"
@@ -652,26 +652,26 @@ GLOBAL_LIST_INIT(english_to_zombie, list())
 	disliked_foodtypes = FRUIT | GROSS | BUGS | GORE
 	toxic_foodtypes = MEAT | RAW | SEAFOOD
 
-/obj/item/organ/internal/tongue/zombie
+/obj/item/organ/tongue/zombie
 	name = "rotting tongue"
 	desc = "Makes you speak like you're at the dentist and you just absolutely refuse to spit because you forgot to mention you were allergic to space shellfish."
 	say_mod = "moans"
 
-/obj/item/organ/internal/tongue/mush
+/obj/item/organ/tongue/mush
 	name = "mush-tongue-room"
 	desc = "You poof with this. Got it?"
 	icon = 'icons/obj/service/hydroponics/seeds.dmi'
 	icon_state = "mycelium-angel"
 	say_mod = "poofs"
 
-/obj/item/organ/internal/tongue/pod
+/obj/item/organ/tongue/pod
 	name = "pod tongue"
 	desc = "A plant-like organ used for speaking and eating."
 	say_mod = "whistles"
 	liked_foodtypes = VEGETABLES | FRUIT | GRAIN
 	disliked_foodtypes = GORE | MEAT | DAIRY | SEAFOOD | BUGS
 
-/obj/item/organ/internal/tongue/golem
+/obj/item/organ/tongue/golem
 	name = "golem tongue"
 	desc = "This silicate plate doesn't seem particularly mobile, but golems use it to form sounds."
 	color = COLOR_WEBSAFE_DARK_GRAY
diff --git a/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm b/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm
index f6fed86a90d..8dfee796937 100644
--- a/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm
+++ b/code/modules/surgery/organs/internal/vocal_cords/_vocal_cords.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/vocal_cords //organs that are activated through speech with the :x/MODE_KEY_VOCALCORDS channel
+/obj/item/organ/vocal_cords //organs that are activated through speech with the :x/MODE_KEY_VOCALCORDS channel
 	name = "vocal cords"
 	icon_state = "appendix"
 	zone = BODY_ZONE_PRECISE_MOUTH
@@ -8,17 +8,17 @@
 	healing_factor = 0
 	var/list/spans = null
 
-/obj/item/organ/internal/vocal_cords/proc/can_speak_with() //if there is any limitation to speaking with these cords
+/obj/item/organ/vocal_cords/proc/can_speak_with() //if there is any limitation to speaking with these cords
 	return TRUE
 
-/obj/item/organ/internal/vocal_cords/proc/speak_with(message) //do what the organ does
+/obj/item/organ/vocal_cords/proc/speak_with(message) //do what the organ does
 	return
 
-/obj/item/organ/internal/vocal_cords/proc/handle_speech(message) //actually say the message
+/obj/item/organ/vocal_cords/proc/handle_speech(message) //actually say the message
 	owner.say(message, spans = spans, sanitize = FALSE)
 
 //Colossus drop, forces the listeners to obey certain commands
-/obj/item/organ/internal/vocal_cords/colossus
+/obj/item/organ/vocal_cords/colossus
 	name = "divine vocal cords"
 	desc = "They carry the voice of an ancient god."
 	icon_state = "voice_of_god"
@@ -30,7 +30,7 @@
 
 /datum/action/item_action/organ_action/colossus
 	name = "Voice of God"
-	var/obj/item/organ/internal/vocal_cords/colossus/cords = null
+	var/obj/item/organ/vocal_cords/colossus/cords = null
 
 /datum/action/item_action/organ_action/colossus/New()
 	..()
@@ -67,7 +67,7 @@
 		return
 	owner.say(".x[command]")
 
-/obj/item/organ/internal/vocal_cords/colossus/can_speak_with()
+/obj/item/organ/vocal_cords/colossus/can_speak_with()
 	if(!owner)
 		return FALSE
 
@@ -77,22 +77,22 @@
 
 	return owner.can_speak()
 
-/obj/item/organ/internal/vocal_cords/colossus/handle_speech(message)
+/obj/item/organ/vocal_cords/colossus/handle_speech(message)
 	playsound(get_turf(owner), 'sound/effects/magic/clockwork/invoke_general.ogg', 300, TRUE, 5)
 	return //voice of god speaks for us
 
-/obj/item/organ/internal/vocal_cords/colossus/speak_with(message)
+/obj/item/organ/vocal_cords/colossus/speak_with(message)
 	var/cooldown = voice_of_god(uppertext(message), owner, spans, base_multiplier)
 	next_command = world.time + (cooldown * cooldown_mod)
 
-/obj/item/organ/internal/adamantine_resonator
+/obj/item/organ/adamantine_resonator
 	name = "adamantine resonator"
 	desc = "Fragments of adamantine exist in all golems, stemming from their origins as purely magical constructs. These are used to \"hear\" messages from their leaders."
 	zone = BODY_ZONE_HEAD
 	slot = ORGAN_SLOT_ADAMANTINE_RESONATOR
 	icon_state = "adamantine_resonator"
 
-/obj/item/organ/internal/vocal_cords/adamantine
+/obj/item/organ/vocal_cords/adamantine
 	name = "adamantine vocal cords"
 	desc = "When adamantine resonates, it causes all nearby pieces of adamantine to resonate as well. Golems containing these formations use this to broadcast messages to nearby golems."
 	actions_types = list(/datum/action/item_action/organ_action/use/adamantine_vocal_cords)
@@ -108,7 +108,7 @@
 		return
 	owner.say(".x[message]")
 
-/obj/item/organ/internal/vocal_cords/adamantine/handle_speech(message)
+/obj/item/organ/vocal_cords/adamantine/handle_speech(message)
 	var/msg = span_resonate("[span_name("[owner.real_name]")] resonates, \"[message]\"")
 	for(var/player in GLOB.player_list)
 		if(iscarbon(player))
diff --git a/code/modules/surgery/revival.dm b/code/modules/surgery/revival.dm
index 3a8ddcf1421..575f94d7bfb 100644
--- a/code/modules/surgery/revival.dm
+++ b/code/modules/surgery/revival.dm
@@ -153,7 +153,7 @@
 	surgery_flags = parent_type::surgery_flags | SURGERY_REQUIRE_LIMB
 
 /datum/surgery/revival/carbon/is_valid_target(mob/living/carbon/patient)
-	var/obj/item/organ/internal/brain/target_brain = patient.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = patient.get_organ_slot(ORGAN_SLOT_BRAIN)
 	return !isnull(target_brain)
 
 /datum/surgery_step/revive/carbon
diff --git a/code/modules/surgery/sleeper_protocol.dm b/code/modules/surgery/sleeper_protocol.dm
index 23b02aeda80..fd697240eed 100644
--- a/code/modules/surgery/sleeper_protocol.dm
+++ b/code/modules/surgery/sleeper_protocol.dm
@@ -37,7 +37,7 @@
 	. = ..()
 	if(!.)
 		return FALSE
-	var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!target_brain)
 		return FALSE
 	return TRUE
diff --git a/code/modules/surgery/stomachpump.dm b/code/modules/surgery/stomachpump.dm
index 4880f932964..47f25074c3a 100644
--- a/code/modules/surgery/stomachpump.dm
+++ b/code/modules/surgery/stomachpump.dm
@@ -23,7 +23,7 @@
 	)
 
 /datum/surgery/stomach_pump/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/target_stomach = target.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(HAS_TRAIT(target, TRAIT_HUSK))
 		return FALSE
 	if(!target_stomach)
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index e6d75cd8d89..2f14388fd49 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -535,7 +535,7 @@
 		return
 
 	var/candidate_name
-	var/obj/item/organ/external/tail_snip_candidate
+	var/obj/item/organ/tail_snip_candidate
 	var/obj/item/bodypart/limb_snip_candidate
 
 	if(user.zone_selected == BODY_ZONE_PRECISE_GROIN)
diff --git a/code/modules/unit_tests/blindness.dm b/code/modules/unit_tests/blindness.dm
index 88f5eece575..1d1093b7581 100644
--- a/code/modules/unit_tests/blindness.dm
+++ b/code/modules/unit_tests/blindness.dm
@@ -105,7 +105,7 @@
 
 /datum/unit_test/eye_damage/Run()
 	var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent)
-	var/obj/item/organ/internal/eyes/eyes = dummy.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = dummy.get_organ_slot(ORGAN_SLOT_EYES)
 	TEST_ASSERT_NOTNULL(eyes, "Eye damage unit test spawned a dummy without eyes!")
 
 	// Test blindness due to eye damage
diff --git a/code/modules/unit_tests/fish_unit_tests.dm b/code/modules/unit_tests/fish_unit_tests.dm
index 8ed2b999e7f..e21b3fec4c0 100644
--- a/code/modules/unit_tests/fish_unit_tests.dm
+++ b/code/modules/unit_tests/fish_unit_tests.dm
@@ -455,7 +455,7 @@
 
 	TEST_ASSERT_EQUAL(fish.status, FISH_DEAD, "The fish is not dead, despite having sustained enough damage that it should. health: [fish.health]")
 
-	var/obj/item/organ/internal/stomach/belly = gourmet.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/belly = gourmet.get_organ_slot(ORGAN_SLOT_STOMACH)
 	belly.reagents.clear_reagents()
 
 	fish.set_status(FISH_ALIVE)
diff --git a/code/modules/unit_tests/full_heal.dm b/code/modules/unit_tests/full_heal.dm
index f5d247d7a10..7449d2aeb4c 100644
--- a/code/modules/unit_tests/full_heal.dm
+++ b/code/modules/unit_tests/full_heal.dm
@@ -4,12 +4,12 @@
 /datum/unit_test/full_heal_heals_organs/Run()
 	var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent)
 
-	for(var/obj/item/organ/internal/organ in dummy.organs)
+	for(var/obj/item/organ/organ in dummy.organs)
 		organ.apply_organ_damage(50)
 
 	dummy.fully_heal(HEAL_ORGANS)
 
-	for(var/obj/item/organ/internal/organ in dummy.organs)
+	for(var/obj/item/organ/organ in dummy.organs)
 		if(organ.damage <= 0)
 			continue
 		TEST_FAIL("Organ [organ] did not get healed by fullyheal flag HEAL_ORGANS.")
@@ -22,7 +22,7 @@
 
 	var/list/we_started_with = list()
 
-	for(var/obj/item/organ/internal/organ in dummy.organs)
+	for(var/obj/item/organ/organ in dummy.organs)
 		if(organ.organ_flags & ORGAN_VITAL) // leave this for now
 			continue
 		we_started_with += organ.type
diff --git a/code/modules/unit_tests/ling_decap.dm b/code/modules/unit_tests/ling_decap.dm
index 4c8c7e4e031..d6c8d244a8d 100644
--- a/code/modules/unit_tests/ling_decap.dm
+++ b/code/modules/unit_tests/ling_decap.dm
@@ -9,12 +9,12 @@
 	var/obj/item/bodypart/head/noggin = ling.get_bodypart(BODY_ZONE_HEAD)
 	noggin.dismember()
 	TEST_ASSERT_NULL(ling.get_bodypart(BODY_ZONE_HEAD), "Changeling failed to be decapitated.")
-	var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in noggin
+	var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in noggin
 	TEST_ASSERT_NULL(brain.brainmob.mind, "Changeling's mind was moved to their brain after decapitation, but it should have remained in their body.")
 
-	var/obj/item/organ/internal/brain/oldbrain = locate(/obj/item/organ/internal/brain) in noggin
+	var/obj/item/organ/brain/oldbrain = locate(/obj/item/organ/brain) in noggin
 	noggin.drop_organs()
-	TEST_ASSERT_NULL(locate(/obj/item/organ/internal/brain) in noggin, "Changeling's head failed to drop its brain.")
+	TEST_ASSERT_NULL(locate(/obj/item/organ/brain) in noggin, "Changeling's head failed to drop its brain.")
 	TEST_ASSERT_NULL(oldbrain.brainmob.mind, "Changeling's mind was moved to their brain after decapitation and organ dropping, but it should have remained in their body.")
 
 	TEST_ASSERT_EQUAL(ling.stat, CONSCIOUS, "Changeling was not conscious after losing their head.")
@@ -34,10 +34,10 @@
 
 	var/obj/item/bodypart/head/noggin = normal_guy.get_bodypart(BODY_ZONE_HEAD)
 	noggin.dismember()
-	var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in noggin
+	var/obj/item/organ/brain/brain = locate(/obj/item/organ/brain) in noggin
 	TEST_ASSERT_EQUAL(brain.brainmob.mind, my_guys_mind, "Dummy's mind was not moved to their brain after decapitation.")
 
-	var/obj/item/organ/internal/brain/oldbrain = locate(/obj/item/organ/internal/brain) in noggin
+	var/obj/item/organ/brain/oldbrain = locate(/obj/item/organ/brain) in noggin
 	noggin.drop_organs()
 	TEST_ASSERT_EQUAL(oldbrain.brainmob.mind, my_guys_mind, "Dummy's mind was not moved to their brain after being removed from their head.")
 
diff --git a/code/modules/unit_tests/liver.dm b/code/modules/unit_tests/liver.dm
index 80c3ecf35b9..f2f5dcfd00f 100644
--- a/code/modules/unit_tests/liver.dm
+++ b/code/modules/unit_tests/liver.dm
@@ -12,7 +12,7 @@
 	var/datum/reagent/toxin/bonehurtingjuice/bonehurting = /datum/reagent/toxin/bonehurtingjuice
 	var/datum/reagent/consumable/milk/calcium = /datum/reagent/consumable/milk
 
-	TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/internal/liver/bone)), "Skeleton does not have a bone liver")
+	TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/liver/bone)), "Skeleton does not have a bone liver")
 	TEST_ASSERT_EQUAL(mrbones.has_reagent(/datum/reagent/toxin/bonehurtingjuice), FALSE, "Skeleton somehow has bone hurting juice before drinking")
 	TEST_ASSERT_EQUAL(mrbones.has_reagent(/datum/reagent/consumable/milk), FALSE, "Skeleton somehow has milk before drinking")
 
@@ -67,7 +67,7 @@
 
 	// Testing plasma/hot ice healing on wounds
 
-	TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/internal/liver/bone/plasmaman)), "Plasmaman does not have a plasmaman bone liver")
+	TEST_ASSERT(!isnull(mrbones.get_organ_by_type(/obj/item/organ/liver/bone/plasmaman)), "Plasmaman does not have a plasmaman bone liver")
 	TEST_ASSERT_EQUAL(mrbones.has_reagent(plasma), FALSE, "Plasmaman somehow has plasma before drinking")
 	TEST_ASSERT_EQUAL(mrbones.has_reagent(hot_ice), FALSE, "Plasmaman somehow has hot ice before drinking")
 
diff --git a/code/modules/unit_tests/lungs.dm b/code/modules/unit_tests/lungs.dm
index 4f9b7ceb442..c8338b6dec8 100644
--- a/code/modules/unit_tests/lungs.dm
+++ b/code/modules/unit_tests/lungs.dm
@@ -13,27 +13,27 @@
 	// 2500 Litres of O2/N2 gas mix, ideal for life.
 	var/datum/gas_mixture/test_mix = create_standard_mix()
 	var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent)
-	var/obj/item/organ/internal/lungs/test_lungs = allocate(/obj/item/organ/internal/lungs)
+	var/obj/item/organ/lungs/test_lungs = allocate(/obj/item/organ/lungs)
 	// Test one breath of O2/N2 mix.
 	lungs_test_check_breath("standard gas mixture", lab_rat, test_lungs, test_mix)
 
 	// Suffocation with an empty gas mix.
 	var/datum/gas_mixture/empty_test_mix = allocate(/datum/gas_mixture)
 	lab_rat = allocate(/mob/living/carbon/human/consistent)
-	test_lungs = allocate(/obj/item/organ/internal/lungs)
+	test_lungs = allocate(/obj/item/organ/lungs)
 	// Test one breath of nothing. Suffocate due to the breath being empty.
 	lungs_test_check_breath("empty gas mixture", lab_rat, test_lungs, empty_test_mix, expect_failure = TRUE)
 
 	// Suffocation with null. This does indeed happen normally.
 	lab_rat = allocate(/mob/living/carbon/human/consistent)
-	test_lungs = allocate(/obj/item/organ/internal/lungs)
+	test_lungs = allocate(/obj/item/organ/lungs)
 	// Test one breath of nothing. Suffocate due to the breath being null.
 	lungs_test_check_breath("null", lab_rat, test_lungs, null, expect_failure = TRUE)
 
 	// Suffocation with Nitrogen.
 	var/datum/gas_mixture/nitro_test_mix = create_nitrogen_mix()
 	lab_rat = allocate(/mob/living/carbon/human/consistent)
-	test_lungs = allocate(/obj/item/organ/internal/lungs)
+	test_lungs = allocate(/obj/item/organ/lungs)
 	// Test one breath of Nitrogen. Suffocate due to the breath being 100% N2.
 	lungs_test_check_breath("pure Nitrogen", lab_rat, test_lungs, nitro_test_mix, expect_failure = TRUE)
 
@@ -44,14 +44,14 @@
 	// 2500 Litres of pure Plasma.
 	var/datum/gas_mixture/plasma_test_mix = create_plasma_mix()
 	var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent)
-	var/obj/item/organ/internal/lungs/plasmaman/test_lungs = allocate(/obj/item/organ/internal/lungs/plasmaman)
+	var/obj/item/organ/lungs/plasmaman/test_lungs = allocate(/obj/item/organ/lungs/plasmaman)
 	// Test one breath of Plasma on Plasmaman lungs.
 	lungs_test_check_breath("pure Plasma", lab_rat, test_lungs, plasma_test_mix)
 
 	// Tests suffocation with Nitrogen.
 	var/datum/gas_mixture/nitro_test_mix = create_nitrogen_mix()
 	lab_rat = allocate(/mob/living/carbon/human/consistent)
-	test_lungs = allocate(/obj/item/organ/internal/lungs/plasmaman)
+	test_lungs = allocate(/obj/item/organ/lungs/plasmaman)
 	// Test one breath of Nitrogen on Plasmaman lungs.
 	lungs_test_check_breath("pure Nitrogen", lab_rat, test_lungs, nitro_test_mix, expect_failure = TRUE)
 
@@ -62,15 +62,15 @@
 /datum/unit_test/lungs/lungs_sanity_ashwalker/Run()
 	// Gas mix resembling one cell of lavaland's atmosphere.
 	var/datum/gas_mixture/lavaland_test_mix = create_lavaland_mix()
-	var/obj/item/organ/internal/lungs/lavaland/test_lungs = allocate(/obj/item/organ/internal/lungs/lavaland)
+	var/obj/item/organ/lungs/lavaland/test_lungs = allocate(/obj/item/organ/lungs/lavaland)
 	var/mob/living/carbon/human/lab_rat = allocate(/mob/living/carbon/human/consistent)
 	// Test one breath of Lavaland gas mix on Ashwalker lungs.
 	lungs_test_check_breath("Lavaland air mixture", lab_rat, test_lungs, lavaland_test_mix)
 
-/// Comprehensive unit test for [/obj/item/organ/internal/lungs/proc/check_breath()]
+/// Comprehensive unit test for [/obj/item/organ/lungs/proc/check_breath()]
 /// If "expect_failure" is set to TRUE, the test ensures the given Human suffocated.
 /// A "test_name" string is required to contextualize test logs. Describe the gas you're testing.
-/datum/unit_test/lungs/proc/lungs_test_check_breath(test_name, mob/living/carbon/human/lab_rat, obj/item/organ/internal/lungs/test_lungs, datum/gas_mixture/test_mix, expect_failure = FALSE)
+/datum/unit_test/lungs/proc/lungs_test_check_breath(test_name, mob/living/carbon/human/lab_rat, obj/item/organ/lungs/test_lungs, datum/gas_mixture/test_mix, expect_failure = FALSE)
 	// Setup a small volume of gas which represents one "breath" from test_mix.
 	var/datum/gas_mixture/test_breath
 
@@ -155,14 +155,14 @@
 		TEST_ASSERT(molar_cmp_equals(GET_MOLES(test_breath, /datum/gas/carbon_dioxide), expected_co2), TEST_CHECK_BREATH_MESSAGE(test_lungs, "should convert Plasma into an equivalent volume of CO2."))
 
 /// Tests minimum gas alerts by comparing gas pressure.
-/datum/unit_test/lungs/proc/lungs_test_alert_min(mob/living/carbon/human/lab_rat, obj/item/organ/internal/lungs/test_lungs, alert_name, min_pressure, pressure)
+/datum/unit_test/lungs/proc/lungs_test_alert_min(mob/living/carbon/human/lab_rat, obj/item/organ/lungs/test_lungs, alert_name, min_pressure, pressure)
 	var/alert_thrown = lab_rat.has_alert(alert_name)
 	var/pressure_safe = (pressure >= min_pressure) || (min_pressure == 0)
 	TEST_ASSERT(!pressure_safe && alert_thrown || pressure_safe, TEST_ALERT_THROW_MESSAGE(test_lungs, alert_name))
 	TEST_ASSERT(pressure_safe && !alert_thrown || !pressure_safe, TEST_ALERT_INHIBIT_MESSAGE(test_lungs, alert_name))
 
 /// Tests maximum gas alerts by comparing gas pressure.
-/datum/unit_test/lungs/proc/lungs_test_alert_max(mob/living/carbon/human/lab_rat, obj/item/organ/internal/lungs/test_lungs, alert_name, max_pressure, pressure)
+/datum/unit_test/lungs/proc/lungs_test_alert_max(mob/living/carbon/human/lab_rat, obj/item/organ/lungs/test_lungs, alert_name, max_pressure, pressure)
 	var/alert_thrown = lab_rat.has_alert(alert_name)
 	var/pressure_safe = (pressure <= max_pressure) || (max_pressure == 0)
 	TEST_ASSERT(!pressure_safe && alert_thrown || pressure_safe, TEST_ALERT_THROW_MESSAGE(test_lungs, alert_name))
diff --git a/code/modules/unit_tests/metabolizing.dm b/code/modules/unit_tests/metabolizing.dm
index 53250def309..53bd3277dc4 100644
--- a/code/modules/unit_tests/metabolizing.dm
+++ b/code/modules/unit_tests/metabolizing.dm
@@ -80,7 +80,7 @@
 	pill.attack(pill_user, pill_user)
 
 	// Set the metabolism efficiency to 1.0 so it transfers all reagents to the body in one go.
-	var/obj/item/organ/internal/stomach/pill_belly = pill_user.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/pill_belly = pill_user.get_organ_slot(ORGAN_SLOT_STOMACH)
 	pill_belly.metabolism_efficiency = 1
 
 	pill_user.Life()
diff --git a/code/modules/unit_tests/organs.dm b/code/modules/unit_tests/organs.dm
index 1da3808ba39..8f05a284058 100644
--- a/code/modules/unit_tests/organs.dm
+++ b/code/modules/unit_tests/organs.dm
@@ -8,20 +8,20 @@
 	// List of organ typepaths which cause species change.
 	// Species change swaps out all the organs, making test_organ un-usable after insertion.
 	var/static/list/species_changing_organs = typecacheof(list(
-		/obj/item/organ/internal/brain/shadow/nightmare,
+		/obj/item/organ/brain/shadow/nightmare,
 	))
 	// List of organ typepaths which are not test-able, such as certain class prototypes.
 	var/static/list/test_organ_blacklist = typecacheof(list(
-		/obj/item/organ/internal,
-		/obj/item/organ/external,
-		/obj/item/organ/external/wings,
-		/obj/item/organ/internal/cyberimp,
-		/obj/item/organ/internal/cyberimp/brain,
-		/obj/item/organ/internal/cyberimp/mouth,
-		/obj/item/organ/internal/cyberimp/arm,
-		/obj/item/organ/internal/cyberimp/chest,
-		/obj/item/organ/internal/cyberimp/eyes,
-		/obj/item/organ/internal/alien,
+		/obj/item/organ,
+		/obj/item/organ,
+		/obj/item/organ/wings,
+		/obj/item/organ/cyberimp,
+		/obj/item/organ/cyberimp/brain,
+		/obj/item/organ/cyberimp/mouth,
+		/obj/item/organ/cyberimp/arm,
+		/obj/item/organ/cyberimp/chest,
+		/obj/item/organ/cyberimp/eyes,
+		/obj/item/organ/alien,
 	))
 
 /datum/unit_test/organ_sanity/Run()
@@ -85,10 +85,10 @@
 
 /datum/unit_test/organ_damage/Run()
 	var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent)
-	for(var/obj/item/organ/internal/organ_to_test in dummy.organs)
+	for(var/obj/item/organ/organ_to_test in dummy.organs)
 		test_organ(dummy, organ_to_test)
 
-/datum/unit_test/organ_damage/proc/test_organ(mob/living/carbon/human/dummy, obj/item/organ/internal/test_organ)
+/datum/unit_test/organ_damage/proc/test_organ(mob/living/carbon/human/dummy, obj/item/organ/test_organ)
 	var/slot_to_use = test_organ.slot
 
 	// Tests [mob/living/proc/adjustOrganLoss]
diff --git a/code/modules/unit_tests/reagent_mob_expose.dm b/code/modules/unit_tests/reagent_mob_expose.dm
index 844b863c037..d6ed81292a9 100644
--- a/code/modules/unit_tests/reagent_mob_expose.dm
+++ b/code/modules/unit_tests/reagent_mob_expose.dm
@@ -58,6 +58,13 @@
 	syringe.melee_attack_chain(human, human)
 	TEST_ASSERT_EQUAL(human.health, 80, "Human health did not update after injection from syringe")
 
+	// INHALE
+	TEST_ASSERT_NULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is drowsy at the start of testing")
+	drink.reagents.clear_reagents()
+	drink.reagents.add_reagent(/datum/reagent/nitrous_oxide, 10)
+	drink.reagents.trans_to(human, 10, methods = INHALE)
+	TEST_ASSERT_NOTNULL(human.has_status_effect(/datum/status_effect/hallucination), "Human is not drowsy after exposure to vapors")
+
 /datum/unit_test/reagent_mob_expose/Destroy()
 	SSmobs.ignite()
 	return ..()
diff --git a/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm b/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm
index 1e2c10c2f29..85c557b1810 100644
--- a/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm
+++ b/code/modules/unit_tests/screenshot_high_luminosity_eyes.dm
@@ -4,7 +4,7 @@
 /// Tests to make sure no punks have broken high luminosity eyes
 /datum/unit_test/screenshot_high_luminosity_eyes
 	var/mob/living/carbon/human/test_subject
-	var/obj/item/organ/internal/eyes/robotic/glow/test_eyes
+	var/obj/item/organ/eyes/robotic/glow/test_eyes
 
 /datum/unit_test/screenshot_high_luminosity_eyes/Run()
 	// Create a mob with red and blue eyes. This is to test that high luminosity eyes properly default to the old eye color.
@@ -14,7 +14,7 @@
 	test_subject.eye_color_right = COLOR_BLUE
 
 	// Create our eyes, and insert them into the mob
-	test_eyes = allocate(/obj/item/organ/internal/eyes/robotic/glow)
+	test_eyes = allocate(/obj/item/organ/eyes/robotic/glow)
 	test_eyes.Insert(test_subject)
 
 	// This should be 4, but just in case it ever changes in the future
diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png
similarity index 100%
rename from code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png
rename to code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png
diff --git a/code/modules/unit_tests/species_change_organs.dm b/code/modules/unit_tests/species_change_organs.dm
index 41d55047f03..96ade09bf62 100644
--- a/code/modules/unit_tests/species_change_organs.dm
+++ b/code/modules/unit_tests/species_change_organs.dm
@@ -11,10 +11,10 @@
 	// Give a trauma
 	dummy.gain_trauma(/datum/brain_trauma/severe/blindness)
 	// Give a cyber heart
-	var/obj/item/organ/internal/heart/cybernetic/cyber_heart = allocate(/obj/item/organ/internal/heart/cybernetic)
+	var/obj/item/organ/heart/cybernetic/cyber_heart = allocate(/obj/item/organ/heart/cybernetic)
 	cyber_heart.Insert(dummy, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 	// Give one of their organs a bit of damage
-	var/obj/item/organ/internal/appendix/existing_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX)
+	var/obj/item/organ/appendix/existing_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX)
 	existing_appendix.set_organ_damage(25)
 
 	// Changing species should
@@ -36,7 +36,7 @@
 
 	// Grab the lizard's appendix for comparison later
 	// They should've been given a new one, but our damage should also have transferred over
-	var/obj/item/organ/internal/appendix/lizard_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX)
+	var/obj/item/organ/appendix/lizard_appendix = dummy.get_organ_slot(ORGAN_SLOT_APPENDIX)
 
 	// They should have the trauma still
 	TEST_ASSERT(dummy.has_trauma_type(/datum/brain_trauma/severe/blindness), "Dummy, upon changing species, did not carry over their brain trauma!")
diff --git a/code/modules/unit_tests/stomach.dm b/code/modules/unit_tests/stomach.dm
index 782e74788a6..5d2b948e82b 100644
--- a/code/modules/unit_tests/stomach.dm
+++ b/code/modules/unit_tests/stomach.dm
@@ -5,7 +5,7 @@
 
 	var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human/consistent)
 	var/obj/item/food/hotdog/debug/fooditem = allocate(/obj/item/food/hotdog/debug)
-	var/obj/item/organ/internal/stomach/belly = human.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/belly = human.get_organ_slot(ORGAN_SLOT_STOMACH)
 	var/obj/item/reagent_containers/pill/pill = allocate(/obj/item/reagent_containers/pill)
 	var/datum/reagent/drug/methamphetamine/meth = /datum/reagent/drug/methamphetamine
 
diff --git a/code/modules/unit_tests/tail_wag.dm b/code/modules/unit_tests/tail_wag.dm
index cd82dfdfd50..595e3189521 100644
--- a/code/modules/unit_tests/tail_wag.dm
+++ b/code/modules/unit_tests/tail_wag.dm
@@ -5,7 +5,7 @@
 
 /datum/unit_test/tail_wag/Run()
 	var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent)
-	var/obj/item/organ/external/tail/cat/dummy_tail = allocate(/obj/item/organ/external/tail/cat)
+	var/obj/item/organ/tail/cat/dummy_tail = allocate(/obj/item/organ/tail/cat)
 	dummy_tail.Insert(dummy, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 
 	// SANITY TEST
diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm
index eca29e8d008..be7815b749f 100644
--- a/code/modules/unit_tests/unit_test.dm
+++ b/code/modules/unit_tests/unit_test.dm
@@ -253,9 +253,8 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests())
 		/obj/merge_conflict_marker,
 		//briefcase launchpads erroring
 		/obj/machinery/launchpad/briefcase,
-		//Both are abstract types meant to scream bloody murder if spawned in raw
-		/obj/item/organ/external,
-		/obj/item/organ/external/wings,
+		//Wings abstract path
+		/obj/item/organ/wings,
 		//Not meant to spawn without the machine wand
 		/obj/effect/bug_moving,
 	)
@@ -349,10 +348,10 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests())
 	//Baseturf editors can only go up to ten, stop this.
 	returnable_list += typesof(/obj/effect/baseturf_helper)
 	// It's the abstract base type, it shouldn't be spawned.
-	returnable_list += /obj/item/organ/external/genital
+	returnable_list += /obj/item/organ/genital
 	// These two are locked to one type only, and shouldn't be widely available, hence why they runtime otherwise.
 	// Can't be bothered adding more to them.
-	returnable_list += list(/obj/item/organ/external/neck_accessory, /obj/item/organ/external/head_accessory)
+	returnable_list += list(/obj/item/organ/neck_accessory, /obj/item/organ/head_accessory)
 	//NOVA EDIT ADDITION END
 
 	return returnable_list
diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
index 287c9e3cf0e..b29c5501a79 100644
--- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
+++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
@@ -211,7 +211,7 @@
 		to_chat(M, "<font color='red' size='7'>HONK</font>")
 		M.SetSleeping(0)
 		M.adjust_stutter(40 SECONDS)
-		var/obj/item/organ/internal/ears/ears = M.get_organ_slot(ORGAN_SLOT_EARS)
+		var/obj/item/organ/ears/ears = M.get_organ_slot(ORGAN_SLOT_EARS)
 		if(ears)
 			ears.adjustEarDamage(0, 30)
 		M.Paralyze(60)
diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm
index 58373ef2c74..4b71e629be3 100644
--- a/code/modules/vending/wardrobes.dm
+++ b/code/modules/vending/wardrobes.dm
@@ -243,7 +243,7 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE)
 	contraband = list(
 		/obj/item/clothing/under/costume/mech_suit = 2,
 		/obj/item/clothing/suit/hooded/techpriest = 2,
-		/obj/item/organ/internal/tongue/robot = 2,
+		/obj/item/organ/tongue/robot = 2,
 	)
 	refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe
 	extra_price = PAYCHECK_COMMAND * 1.2
diff --git a/code/modules/wiremod/components/action/equpiment_action.dm b/code/modules/wiremod/components/action/equpiment_action.dm
index 641722c595b..f313d1f4870 100644
--- a/code/modules/wiremod/components/action/equpiment_action.dm
+++ b/code/modules/wiremod/components/action/equpiment_action.dm
@@ -1,7 +1,7 @@
 /obj/item/circuit_component/equipment_action
 	display_name = "Equipment Action"
 	desc = "Represents an action the user can take when using supported shells."
-	required_shells = list(/obj/item/organ/internal/cyberimp/bci, /obj/item/mod/module/circuit)
+	required_shells = list(/obj/item/organ/cyberimp/bci, /obj/item/mod/module/circuit)
 
 	/// The icon of the button
 	var/datum/port/input/option/icon_options
diff --git a/code/modules/wiremod/components/atom/remotecam.dm b/code/modules/wiremod/components/atom/remotecam.dm
index d5a8506c5cf..bbbab6043af 100644
--- a/code/modules/wiremod/components/atom/remotecam.dm
+++ b/code/modules/wiremod/components/atom/remotecam.dm
@@ -281,7 +281,7 @@
 	desc = "Digitizes user's sight for surveillance-on-the-go. User must have fully functional eyes for digitizer to work. Camera range input is either 0 (near) or 1 (far). Network field is used for camera network."
 	category = "BCI"
 	camera_prefix = "BCI"
-	required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+	required_shells = list(/obj/item/organ/cyberimp/bci)
 
 	/// BCIs are organs, and thus the signal must be assigned ONLY when the shell has been installed in a mob - otherwise the camera will never update position
 	camera_signal_move_override = TRUE
@@ -314,13 +314,13 @@
 
 /obj/item/circuit_component/remotecam/bci/register_shell(atom/movable/shell)
 	. = ..()
-	if(!istype(shell_parent, /obj/item/organ/internal/cyberimp/bci))
+	if(!istype(shell_parent, /obj/item/organ/cyberimp/bci))
 		return
 	shell_camera = new /obj/machinery/camera (shell_parent)
 	init_camera()
 	RegisterSignal(shell_parent, COMSIG_ORGAN_IMPLANTED, PROC_REF(on_organ_implanted))
 	RegisterSignal(shell_parent, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
-	var/obj/item/organ/internal/cyberimp/bci/bci = shell_parent
+	var/obj/item/organ/cyberimp/bci/bci = shell_parent
 	if(bci.owner) //If somehow the camera was added while shell is already installed inside a mob, assign signals
 		if(bciuser) //This should never happen... But if it does, unassign move signal from old mob
 			UnregisterSignal(bciuser, COMSIG_MOVABLE_MOVED, PROC_REF(update_camera_location))
@@ -388,7 +388,7 @@
 	if (current_camera_emp)
 		close_camera()
 		return
-	var/obj/item/organ/internal/cyberimp/bci/bci = shell_parent
+	var/obj/item/organ/cyberimp/bci/bci = shell_parent
 	//If shell is not currently inside a head, or user is currently blind, or user is dead
 	if(!bci.owner || bci.owner.is_blind() || bci.owner.stat >= UNCONSCIOUS)
 		close_camera()
diff --git a/code/modules/wiremod/components/bci/hud/counter_overlay.dm b/code/modules/wiremod/components/bci/hud/counter_overlay.dm
index a0f83b6f72e..aaf70826f4b 100644
--- a/code/modules/wiremod/components/bci/hud/counter_overlay.dm
+++ b/code/modules/wiremod/components/bci/hud/counter_overlay.dm
@@ -10,7 +10,7 @@
 	desc = "A component that shows an three digit counter. Requires a BCI shell."
 	category = "BCI"
 
-	required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+	required_shells = list(/obj/item/organ/cyberimp/bci)
 
 	var/datum/port/input/counter_number
 
@@ -19,7 +19,7 @@
 
 	var/datum/port/input/signal_update
 
-	var/obj/item/organ/internal/cyberimp/bci/bci
+	var/obj/item/organ/cyberimp/bci/bci
 	var/list/numbers = list()
 	var/datum/weakref/counter_appearance
 
@@ -32,7 +32,7 @@
 	image_pixel_y = add_input_port("Y-Axis Shift", PORT_TYPE_NUMBER)
 
 /obj/item/circuit_component/counter_overlay/register_shell(atom/movable/shell)
-	if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+	if(istype(shell, /obj/item/organ/cyberimp/bci))
 		bci = shell
 		RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
 
diff --git a/code/modules/wiremod/components/bci/hud/object_overlay.dm b/code/modules/wiremod/components/bci/hud/object_overlay.dm
index 07e0f76761e..4f09a4d9fab 100644
--- a/code/modules/wiremod/components/bci/hud/object_overlay.dm
+++ b/code/modules/wiremod/components/bci/hud/object_overlay.dm
@@ -12,7 +12,7 @@
 	desc = "Requires a BCI shell. A component that shows an overlay on top of an object."
 	category = "BCI"
 
-	required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+	required_shells = list(/obj/item/organ/cyberimp/bci)
 
 	var/datum/port/input/option/object_overlay_options
 
@@ -28,7 +28,7 @@
 	var/datum/port/input/signal_off
 
 	/// Reference to the BCI we're implanted inside
-	var/obj/item/organ/internal/cyberimp/bci/bci
+	var/obj/item/organ/cyberimp/bci/bci
 
 	/// Assoc list of REF to the target atom to the overlay alt appearance it is using
 	var/list/active_overlays = list()
@@ -66,7 +66,7 @@
 	options_map = component_options
 
 /obj/item/circuit_component/object_overlay/register_shell(atom/movable/shell)
-	if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+	if(istype(shell, /obj/item/organ/cyberimp/bci))
 		bci = shell
 		RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
 
diff --git a/code/modules/wiremod/components/bci/hud/target_intercept.dm b/code/modules/wiremod/components/bci/hud/target_intercept.dm
index 2ee37e8ff4f..016f677f10e 100644
--- a/code/modules/wiremod/components/bci/hud/target_intercept.dm
+++ b/code/modules/wiremod/components/bci/hud/target_intercept.dm
@@ -10,11 +10,11 @@
 	desc = "Requires a BCI shell. When activated, this component will allow user to target an object using their brain and will output the reference to said object."
 	category = "BCI"
 
-	required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+	required_shells = list(/obj/item/organ/cyberimp/bci)
 
 	var/datum/port/output/clicked_atom
 
-	var/obj/item/organ/internal/cyberimp/bci/bci
+	var/obj/item/organ/cyberimp/bci/bci
 	var/intercept_cooldown = 1 SECONDS
 
 /obj/item/circuit_component/target_intercept/populate_ports()
@@ -23,7 +23,7 @@
 	clicked_atom = add_output_port("Targeted Object", PORT_TYPE_ATOM)
 
 /obj/item/circuit_component/target_intercept/register_shell(atom/movable/shell)
-	if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+	if(istype(shell, /obj/item/organ/cyberimp/bci))
 		bci = shell
 		RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
 
diff --git a/code/modules/wiremod/components/bci/install_detector.dm b/code/modules/wiremod/components/bci/install_detector.dm
index 0d39e01214e..123ff9d5162 100644
--- a/code/modules/wiremod/components/bci/install_detector.dm
+++ b/code/modules/wiremod/components/bci/install_detector.dm
@@ -10,13 +10,13 @@
 	desc = "A component that detects when a BCI is installed or removed from its user."
 	category = "BCI"
 
-	required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+	required_shells = list(/obj/item/organ/cyberimp/bci)
 
 	var/datum/port/output/implanted
 	var/datum/port/output/removed
 	var/datum/port/output/current_state
 
-	var/obj/item/organ/internal/cyberimp/bci/bci
+	var/obj/item/organ/cyberimp/bci/bci
 
 /obj/item/circuit_component/install_detector/populate_ports()
 	. = ..()
@@ -26,7 +26,7 @@
 
 /obj/item/circuit_component/install_detector/register_shell(atom/movable/shell)
 	. = ..()
-	if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+	if(istype(shell, /obj/item/organ/cyberimp/bci))
 		bci = shell
 		RegisterSignal(shell, COMSIG_ORGAN_IMPLANTED, PROC_REF(on_organ_implanted))
 		RegisterSignal(shell, COMSIG_ORGAN_REMOVED, PROC_REF(on_organ_removed))
diff --git a/code/modules/wiremod/components/bci/reagent_injector.dm b/code/modules/wiremod/components/bci/reagent_injector.dm
index ef9188d7bdc..73b685a39db 100644
--- a/code/modules/wiremod/components/bci/reagent_injector.dm
+++ b/code/modules/wiremod/components/bci/reagent_injector.dm
@@ -11,12 +11,12 @@
 	category = "BCI"
 	circuit_flags = CIRCUIT_NO_DUPLICATES
 
-	required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+	required_shells = list(/obj/item/organ/cyberimp/bci)
 
 	var/datum/port/input/inject
 	var/datum/port/output/injected
 
-	var/obj/item/organ/internal/cyberimp/bci/bci
+	var/obj/item/organ/cyberimp/bci/bci
 
 /obj/item/circuit_component/reagent_injector/Initialize(mapload)
 	. = ..()
@@ -41,7 +41,7 @@
 
 /obj/item/circuit_component/reagent_injector/register_shell(atom/movable/shell)
 	. = ..()
-	if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+	if(istype(shell, /obj/item/organ/cyberimp/bci))
 		bci = shell
 		bci.create_reagents(15, OPENCONTAINER)
 		if(reagents.total_volume)
diff --git a/code/modules/wiremod/components/bci/thought_listener.dm b/code/modules/wiremod/components/bci/thought_listener.dm
index ed6226a4e49..f76f53b6ba2 100644
--- a/code/modules/wiremod/components/bci/thought_listener.dm
+++ b/code/modules/wiremod/components/bci/thought_listener.dm
@@ -10,7 +10,7 @@
 	desc = "A component that allows the user to input a string using their mind. Requires a BCI shell."
 	category = "BCI"
 
-	required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+	required_shells = list(/obj/item/organ/cyberimp/bci)
 
 	var/datum/port/input/input_name
 	var/datum/port/input/input_desc
@@ -20,7 +20,7 @@
 
 	circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL
 
-	var/obj/item/organ/internal/cyberimp/bci/bci
+	var/obj/item/organ/cyberimp/bci/bci
 	var/ready = TRUE
 
 /obj/item/circuit_component/thought_listener/populate_ports()
@@ -31,7 +31,7 @@
 	failure = add_output_port("On Failure", PORT_TYPE_SIGNAL)
 
 /obj/item/circuit_component/thought_listener/register_shell(atom/movable/shell)
-	if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+	if(istype(shell, /obj/item/organ/cyberimp/bci))
 		bci = shell
 
 /obj/item/circuit_component/thought_listener/unregister_shell(atom/movable/shell)
diff --git a/code/modules/wiremod/components/bci/vox.dm b/code/modules/wiremod/components/bci/vox.dm
index 420140a7fde..8749d1b72b6 100644
--- a/code/modules/wiremod/components/bci/vox.dm
+++ b/code/modules/wiremod/components/bci/vox.dm
@@ -10,7 +10,7 @@
 	desc = "A component that plays a local VOX Announcement for the user. Requires a BCI shell."
 	category = "BCI"
 
-	required_shells = list(/obj/item/organ/internal/cyberimp/bci)
+	required_shells = list(/obj/item/organ/cyberimp/bci)
 
 	var/datum/port/input/option/type_option
 	var/current_type
@@ -19,7 +19,7 @@
 
 	circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL
 
-	var/obj/item/organ/internal/cyberimp/bci/bci
+	var/obj/item/organ/cyberimp/bci/bci
 
 /obj/item/circuit_component/vox/populate_options()
 	type_option = add_option_port("VOX Type", list(PORT_TYPE_LIST(PORT_TYPE_STRING), PORT_TYPE_STRING))
@@ -28,7 +28,7 @@
 	word_list = add_input_port("Word List", PORT_TYPE_LIST(PORT_TYPE_STRING))
 
 /obj/item/circuit_component/vox/register_shell(atom/movable/shell)
-	if(istype(shell, /obj/item/organ/internal/cyberimp/bci))
+	if(istype(shell, /obj/item/organ/cyberimp/bci))
 		bci = shell
 
 /obj/item/circuit_component/vox/unregister_shell(atom/movable/shell)
diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm
index e3ddf54135a..29147aefa94 100644
--- a/code/modules/wiremod/shell/brain_computer_interface.dm
+++ b/code/modules/wiremod/shell/brain_computer_interface.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/bci
+/obj/item/organ/cyberimp/bci
 	name = "brain-computer interface"
 	desc = "An implant that can be placed in a user's head to control circuits using their brain."
 	icon = 'icons/obj/science/circuits.dmi'
@@ -6,7 +6,7 @@
 	zone = BODY_ZONE_HEAD
 	w_class = WEIGHT_CLASS_TINY
 
-/obj/item/organ/internal/cyberimp/bci/Initialize(mapload)
+/obj/item/organ/cyberimp/bci/Initialize(mapload)
 	. = ..()
 
 	RegisterSignal(src, COMSIG_CIRCUIT_ACTION_COMPONENT_REGISTERED, PROC_REF(action_comp_registered))
@@ -19,7 +19,7 @@
 		new /obj/item/circuit_component/bci_core,
 	), SHELL_CAPACITY_SMALL, starting_circuit = circuit)
 
-/obj/item/organ/internal/cyberimp/bci/say(
+/obj/item/organ/cyberimp/bci/say(
 	message,
 	bubble_type,
 	list/spans = list(),
@@ -43,11 +43,11 @@
 
 	return ..()
 
-/obj/item/organ/internal/cyberimp/bci/proc/action_comp_registered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
+/obj/item/organ/cyberimp/bci/proc/action_comp_registered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
 	SIGNAL_HANDLER
 	LAZYADD(actions, new/datum/action/innate/bci_action(src, action_comp))
 
-/obj/item/organ/internal/cyberimp/bci/proc/action_comp_unregistered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
+/obj/item/organ/cyberimp/bci/proc/action_comp_unregistered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
 	SIGNAL_HANDLER
 	var/datum/action/innate/bci_action/action = action_comp.granted_to[REF(src)]
 	if(!istype(action))
@@ -61,10 +61,10 @@
 	check_flags = AB_CHECK_CONSCIOUS
 	button_icon_state = "bci_power"
 
-	var/obj/item/organ/internal/cyberimp/bci/bci
+	var/obj/item/organ/cyberimp/bci/bci
 	var/obj/item/circuit_component/equipment_action/circuit_component
 
-/datum/action/innate/bci_action/New(obj/item/organ/internal/cyberimp/bci/_bci, obj/item/circuit_component/equipment_action/circuit_component)
+/datum/action/innate/bci_action/New(obj/item/organ/cyberimp/bci/_bci, obj/item/circuit_component/equipment_action/circuit_component)
 	..()
 	bci = _bci
 	circuit_component.granted_to[REF(_bci)] = src
@@ -95,7 +95,7 @@
 
 	var/datum/weakref/user
 
-	var/obj/item/organ/internal/cyberimp/bci/bci
+	var/obj/item/organ/cyberimp/bci/bci
 
 /obj/item/circuit_component/bci_core/populate_ports()
 
@@ -290,7 +290,7 @@
 	var/busy_icon_state
 	var/locked = FALSE
 
-	var/obj/item/organ/internal/cyberimp/bci/bci_to_implant
+	var/obj/item/organ/cyberimp/bci/bci_to_implant
 
 	COOLDOWN_DECLARE(message_cooldown)
 
@@ -365,13 +365,13 @@
 	return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
 
 /obj/machinery/bci_implanter/attackby(obj/item/weapon, mob/user, params)
-	var/obj/item/organ/internal/cyberimp/bci/new_bci = weapon
+	var/obj/item/organ/cyberimp/bci/new_bci = weapon
 	if (istype(new_bci))
 		if (!(locate(/obj/item/integrated_circuit) in new_bci))
 			balloon_alert(user, "bci has no circuit!")
 			return
 
-		var/obj/item/organ/internal/cyberimp/bci/previous_bci_to_implant = bci_to_implant
+		var/obj/item/organ/cyberimp/bci/previous_bci_to_implant = bci_to_implant
 
 		user.transferItemToLoc(weapon, src)
 		bci_to_implant = weapon
@@ -428,7 +428,7 @@
 
 	playsound(loc, 'sound/machines/ping.ogg', 30, FALSE)
 
-	var/obj/item/organ/internal/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/internal/cyberimp/bci)
+	var/obj/item/organ/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/cyberimp/bci)
 
 	if (bci_organ)
 		bci_organ.Remove(carbon_occupant)
@@ -460,7 +460,7 @@
 
 	var/mob/living/carbon/carbon_occupant = occupant
 	if (istype(occupant))
-		var/obj/item/organ/internal/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/internal/cyberimp/bci)
+		var/obj/item/organ/cyberimp/bci/bci_organ = carbon_occupant.get_organ_by_type(/obj/item/organ/cyberimp/bci)
 		if (isnull(bci_organ) && isnull(bci_to_implant))
 			say("No brain-computer interface inserted, and occupant does not have one. Insert a BCI to implant one.")
 			playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 30, TRUE)
diff --git a/code/modules/wiremod/shell/shell_items.dm b/code/modules/wiremod/shell/shell_items.dm
index bad787033f9..0db08ab7bb8 100644
--- a/code/modules/wiremod/shell/shell_items.dm
+++ b/code/modules/wiremod/shell/shell_items.dm
@@ -63,7 +63,7 @@
 /obj/item/shell/bci
 	name = "brain-computer interface assembly"
 	icon_state = "bci-open"
-	shell_to_spawn = /obj/item/organ/internal/cyberimp/bci
+	shell_to_spawn = /obj/item/organ/cyberimp/bci
 	w_class = WEIGHT_CLASS_TINY
 
 /obj/item/shell/scanner_gate
diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm
index 894eeeeeb21..db7257dc957 100644
--- a/code/modules/zombie/items.dm
+++ b/code/modules/zombie/items.dm
@@ -51,7 +51,7 @@
 	if(limb_armor > limb_damage)
 		return
 
-	var/obj/item/organ/internal/zombie_infection/infection
+	var/obj/item/organ/zombie_infection/infection
 	infection = target.get_organ_slot(ORGAN_SLOT_ZOMBIE)
 	if(!infection)
 		infection = new()
diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm
index bd8646ccb78..f6f21b7e1ee 100644
--- a/code/modules/zombie/organs.dm
+++ b/code/modules/zombie/organs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/zombie_infection
+/obj/item/organ/zombie_infection
 	name = "festering ooze"
 	desc = "A black web of pus and viscera."
 	zone = BODY_ZONE_HEAD
@@ -13,22 +13,22 @@
 	var/revive_time_max = 700
 	var/timer_id
 
-/obj/item/organ/internal/zombie_infection/Initialize(mapload)
+/obj/item/organ/zombie_infection/Initialize(mapload)
 	. = ..()
 	if(iscarbon(loc))
 		Insert(loc)
 	GLOB.zombie_infection_list += src
 
-/obj/item/organ/internal/zombie_infection/Destroy()
+/obj/item/organ/zombie_infection/Destroy()
 	GLOB.zombie_infection_list -= src
 	. = ..()
 
-/obj/item/organ/internal/zombie_infection/on_mob_insert(mob/living/carbon/M, special = FALSE, movement_flags)
+/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/M, special = FALSE, movement_flags)
 	. = ..()
 
 	START_PROCESSING(SSobj, src)
 
-/obj/item/organ/internal/zombie_infection/on_mob_remove(mob/living/carbon/M, special = FALSE)
+/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/M, special = FALSE)
 	. = ..()
 	STOP_PROCESSING(SSobj, src)
 	if(iszombie(M) && old_species && !special)
@@ -36,25 +36,25 @@
 	if(timer_id)
 		deltimer(timer_id)
 
-/obj/item/organ/internal/zombie_infection/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/organ_owner, special)
 	. = ..()
 	RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(organ_owner_died))
 
-/obj/item/organ/internal/zombie_infection/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH)
 
-/obj/item/organ/internal/zombie_infection/proc/organ_owner_died(mob/living/carbon/source, gibbed)
+/obj/item/organ/zombie_infection/proc/organ_owner_died(mob/living/carbon/source, gibbed)
 	SIGNAL_HANDLER
 	if(iszombie(source))
 		qdel(src) // Congrats you somehow died so hard you stopped being a zombie
 
-/obj/item/organ/internal/zombie_infection/on_find(mob/living/finder)
+/obj/item/organ/zombie_infection/on_find(mob/living/finder)
 	to_chat(finder, span_warning("Inside the head is a disgusting black \
 		web of pus and viscera, bound tightly around the brain like some \
 		biological harness."))
 
-/obj/item/organ/internal/zombie_infection/process(seconds_per_tick, times_fired)
+/obj/item/organ/zombie_infection/process(seconds_per_tick, times_fired)
 	if(!owner)
 		return
 	if(!(src in owner.organs))
@@ -65,7 +65,7 @@
 		owner.adjustToxLoss(0.5 * seconds_per_tick)
 		if (SPT_PROB(5, seconds_per_tick))
 			to_chat(owner, span_danger("You feel sick..."))
-	if(timer_id || HAS_TRAIT(owner, TRAIT_SUICIDED) || !owner.get_organ_by_type(/obj/item/organ/internal/brain))
+	if(timer_id || HAS_TRAIT(owner, TRAIT_SUICIDED) || !owner.get_organ_by_type(/obj/item/organ/brain))
 		return
 	if(owner.stat != DEAD && !converts_living)
 		return
@@ -77,7 +77,7 @@
 	var/flags = TIMER_STOPPABLE
 	timer_id = addtimer(CALLBACK(src, PROC_REF(zombify), owner), revive_time, flags)
 
-/obj/item/organ/internal/zombie_infection/proc/zombify(mob/living/carbon/target)
+/obj/item/organ/zombie_infection/proc/zombify(mob/living/carbon/target)
 	timer_id = null
 
 	if(!converts_living && owner.stat != DEAD)
@@ -99,5 +99,5 @@
 	target.do_jitter_animation(living_transformation_time)
 	target.Stun(living_transformation_time)
 
-/obj/item/organ/internal/zombie_infection/nodamage
+/obj/item/organ/zombie_infection/nodamage
 	causes_damage = FALSE
diff --git a/html/changelogs/AutoChangeLog-pr-87306.yml b/html/changelogs/AutoChangeLog-pr-87306.yml
new file mode 100644
index 00000000000..5117e29fac8
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87306.yml
@@ -0,0 +1,5 @@
+author: "necromanceranne"
+delete-after: True
+changes:
+  - code_imp: "Introduces a INHALE method for reagent transfer. Cigarettes and smoke reactions use this new method."
+  - balance: "Nitrous oxide now brain damage if you inhale it. So don't do that."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87329.yml b/html/changelogs/AutoChangeLog-pr-87329.yml
new file mode 100644
index 00000000000..703c0b9fdb9
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87329.yml
@@ -0,0 +1,16 @@
+author: "00-Steven"
+delete-after: True
+changes:
+  - refactor: "Refactored tasting code. Please report any jank tasting behaviours."
+  - bugfix: "You taste what you eat instead of the contents of your own stomach."
+  - bugfix: "Other basic nutriment subtypes also carry food flavours, instead of outweighing the food flavours with their lack of flavour."
+  - bugfix: "Basic nutriment subtypes have a flavour they default to, in case of not carrying any food flavours."
+  - bugfix: "Oils taste like oil instead of tasting indescribable."
+  - bugfix: "Clothing eaten by moths actually carries its flavours instead of tasting indescribable."
+  - bugfix: "Organs use organ tissue instead of nutriment."
+  - bugfix: "You can actually taste organ tissue."
+  - qol: "Mineral slurry tastes like minerals instead of tasting indescribable."
+  - bugfix: "Tasted flavours can actually be \"strong\" in addition to mild or \"a hint of\", as intended."
+  - qol: "Flavours are only strong when their percentage of what you're tasting is more than 4x taste sensitivity instead of 3x, for most default tongues being 60% and lizards 40% of the drink."
+  - qol: "Tasted flavours are sorted by strength, stronger flavours coming first."
+  - qol: "Tasted flavours are grouped into \"strong\", \"mild\", and \"hint\" in the message, replacing \"You can taste a hint of bitterness, alcohol, a hint of sweetness, and a hint of cola\" with \"You can taste alcohol and a hint of bitterness, sweetness, and cola\"."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87434.yml b/html/changelogs/AutoChangeLog-pr-87434.yml
new file mode 100644
index 00000000000..a59dd32cdf1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87434.yml
@@ -0,0 +1,7 @@
+author: "Ghommie"
+delete-after: True
+changes:
+  - code_imp: "Removed internal/external pathing from organs in favor of a bit flag. Hopefully this shouldn't break anything about organs."
+  - bugfix: "Fixed invisible fox ears."
+  - bugfix: "Fixed mushpeople caps not being colored red by default."
+  - rscadd: "You can now dye most tails, podpeople hair, mushpeople caps etc. with a hair dye spray."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87622.yml b/html/changelogs/AutoChangeLog-pr-87622.yml
new file mode 100644
index 00000000000..03a06eab36c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87622.yml
@@ -0,0 +1,4 @@
+author: "carlarctg"
+delete-after: True
+changes:
+  - bugfix: "vampires are a human subtype & have stomachs/lungs"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87726.yml b/html/changelogs/AutoChangeLog-pr-87726.yml
new file mode 100644
index 00000000000..a61ff714127
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87726.yml
@@ -0,0 +1,10 @@
+author: "Fikou"
+delete-after: True
+changes:
+  - bugfix: "a modsuit being deleted will delete its parts correctly"
+  - bugfix: "a modsuit needs its boots out to be moved by an AI"
+  - qol: "you can extend or retract a modsuits parts from the ui panel"
+  - qol: "modsuit cores have colorcoded charge bars in the ui panel"
+  - qol: "weapon recall module makes you pick up the weapon if its on your tile"
+  - code_imp: "tether module has its own button for cutting tethers instead of stealing it from pins"
+  - bugfix: "armor booster doesnt protect from head injury without the helmet on"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87782.yml b/html/changelogs/AutoChangeLog-pr-87782.yml
new file mode 100644
index 00000000000..1e83a98093d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87782.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+  - refactor: "Eye color effects are now controlled via a new overrides system, which should prevent conflicts between different sources."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87789.yml b/html/changelogs/AutoChangeLog-pr-87789.yml
new file mode 100644
index 00000000000..062e7ea55b1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87789.yml
@@ -0,0 +1,4 @@
+author: "larentoun"
+delete-after: True
+changes:
+  - bugfix: "Fixes a runtime when wingless creature flaps their wings"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87792.yml b/html/changelogs/AutoChangeLog-pr-87792.yml
new file mode 100644
index 00000000000..e8ff0af1935
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87792.yml
@@ -0,0 +1,4 @@
+author: "GremlinSeeker"
+delete-after: True
+changes:
+  - bugfix: "Syndicate Biodome fixes"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87869.yml b/html/changelogs/AutoChangeLog-pr-87869.yml
new file mode 100644
index 00000000000..41532da0005
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87869.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+  - bugfix: "Fixed ayylmao's brain examine lines"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87898.yml b/html/changelogs/AutoChangeLog-pr-87898.yml
new file mode 100644
index 00000000000..aa4f5a81aa9
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-87898.yml
@@ -0,0 +1,4 @@
+author: "xPokee"
+delete-after: True
+changes:
+  - bugfix: "fixed brains turning invisible after being washed"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-88326.yml b/html/changelogs/AutoChangeLog-pr-88326.yml
new file mode 100644
index 00000000000..7059d4747e1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-88326.yml
@@ -0,0 +1,4 @@
+author: "SmArtKar"
+delete-after: True
+changes:
+  - sound: "Modsuits no longer horrifically screech when taken off"
\ No newline at end of file
diff --git a/modular_nova/master_files/code/datums/components/damage_tracker.dm b/modular_nova/master_files/code/datums/components/damage_tracker.dm
index 58538f5ebfc..3012a1b1413 100644
--- a/modular_nova/master_files/code/datums/components/damage_tracker.dm
+++ b/modular_nova/master_files/code/datums/components/damage_tracker.dm
@@ -86,13 +86,13 @@
 	if(length(current_trauma_list))
 		trauma_list = current_trauma_list.Copy()
 
-	heart_damage = human_parent.check_organ_damage(/obj/item/organ/internal/heart)
-	liver_damage = human_parent.check_organ_damage(/obj/item/organ/internal/liver)
-	lung_damage = human_parent.check_organ_damage(/obj/item/organ/internal/lungs)
-	stomach_damage = human_parent.check_organ_damage(/obj/item/organ/internal/stomach)
-	brain_damage = human_parent.check_organ_damage(/obj/item/organ/internal/brain)
-	eye_damage = human_parent.check_organ_damage(/obj/item/organ/internal/eyes)
-	ear_damage = human_parent.check_organ_damage(/obj/item/organ/internal/ears)
+	heart_damage = human_parent.check_organ_damage(/obj/item/organ/heart)
+	liver_damage = human_parent.check_organ_damage(/obj/item/organ/liver)
+	lung_damage = human_parent.check_organ_damage(/obj/item/organ/lungs)
+	stomach_damage = human_parent.check_organ_damage(/obj/item/organ/stomach)
+	brain_damage = human_parent.check_organ_damage(/obj/item/organ/brain)
+	eye_damage = human_parent.check_organ_damage(/obj/item/organ/eyes)
+	ear_damage = human_parent.check_organ_damage(/obj/item/organ/ears)
 
 	return TRUE
 
@@ -110,7 +110,7 @@
 	human_parent.setOrganLoss(ORGAN_SLOT_EARS, ear_damage)
 	human_parent.setOrganLoss(ORGAN_SLOT_BRAIN, brain_damage)
 
-	var/obj/item/organ/internal/brain/human_brain = human_parent.get_organ_by_type(/obj/item/organ/internal/brain)
+	var/obj/item/organ/brain/human_brain = human_parent.get_organ_by_type(/obj/item/organ/brain)
 	if(!human_brain)
 		return FALSE
 
diff --git a/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm b/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm
index a4224b926a7..6591bddd8cf 100644
--- a/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm
+++ b/modular_nova/master_files/code/datums/quirks/negative_quirks/photophobia.dm
@@ -10,7 +10,7 @@
 			severity = 2
 		if ("Sensitive")
 			severity = 1
-	var/obj/item/organ/internal/eyes/holder_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/holder_eyes = quirk_holder.get_organ_slot(ORGAN_SLOT_EYES)
 	restore_eyes(holder_eyes) // add_unique() happens after add() so we need to jank reset this to ensure sensitivity is properly applied at roundstart
 	check_eyes(holder_eyes)
 
diff --git a/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm b/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm
index a0f3a8536c6..aed6524f27d 100644
--- a/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm
+++ b/modular_nova/master_files/code/datums/quirks/neutral_quirks/lungs.dm
@@ -1,9 +1,9 @@
 /datum/quirk/equipping/lungs
 	abstract_parent_type = /datum/quirk/equipping/lungs
 	icon = FA_ICON_LUNGS
-	var/obj/item/organ/internal/lungs/lungs_holding
-	var/obj/item/organ/internal/lungs/lungs_added
-	var/lungs_typepath = /obj/item/organ/internal/lungs
+	var/obj/item/organ/lungs/lungs_holding
+	var/obj/item/organ/lungs/lungs_added
+	var/lungs_typepath = /obj/item/organ/lungs
 	items = list(/obj/item/clothing/accessory/breathing = list(ITEM_SLOT_BACKPACK))
 	var/breath_type = "oxygen"
 
@@ -26,7 +26,7 @@
 	var/mob/living/carbon/carbon_holder = quirk_holder
 	if (!istype(carbon_holder) || !istype(lungs_holding))
 		return
-	var/obj/item/organ/internal/lungs/lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/lungs = carbon_holder.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if (lungs != lungs_added && lungs != lungs_holding)
 		qdel(lungs_holding)
 		return
@@ -80,7 +80,7 @@
 	forced_items = list(
 		/obj/item/clothing/mask/breath = list(ITEM_SLOT_MASK),
 		/obj/item/tank/internals/nitrogen/belt/full = list(ITEM_SLOT_HANDS, ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET))
-	lungs_typepath = /obj/item/organ/internal/lungs/nitrogen
+	lungs_typepath = /obj/item/organ/lungs/nitrogen
 	breath_type = "nitrogen"
 
 /datum/quirk/equipping/lungs/nitrogen/on_equip_item(obj/item/equipped, success)
diff --git a/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm b/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm
index 2c3d0e06766..1fe14205615 100644
--- a/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm
+++ b/modular_nova/master_files/code/datums/quirks/positive_quirks/night_vision.dm
@@ -21,7 +21,7 @@
 	var/mob/living/carbon/human/target = quirk_holder
 
 	// if we have more sensitive eyes, increase the power
-	var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
 	if (!istype(target_eyes))
 		return
 	var/infravision_multiplier = max(0, (-(target_eyes.flash_protect) * NOVA_NIGHT_VISION_SENSITIVITY_MULT)) + 1
diff --git a/modular_nova/master_files/code/datums/traits/good.dm b/modular_nova/master_files/code/datums/traits/good.dm
index e201c61710f..6574c220540 100644
--- a/modular_nova/master_files/code/datums/traits/good.dm
+++ b/modular_nova/master_files/code/datums/traits/good.dm
@@ -138,7 +138,7 @@
 	lose_text = span_danger("Your appendix has magically.. regrown?")
 	medical_record_text = "Patient had appendicitis in the past and has had their appendix surgically removed."
 	/// The mob's original appendix
-	var/obj/item/organ/internal/appendix/old_appendix
+	var/obj/item/organ/appendix/old_appendix
 
 /datum/quirk/no_appendix/post_add()
 	var/mob/living/carbon/carbon_quirk_holder = quirk_holder
@@ -158,7 +158,7 @@
 	if(isnull(old_appendix))
 		return
 
-	var/obj/item/organ/internal/appendix/current_appendix = carbon_quirk_holder.get_organ_slot(ORGAN_SLOT_APPENDIX)
+	var/obj/item/organ/appendix/current_appendix = carbon_quirk_holder.get_organ_slot(ORGAN_SLOT_APPENDIX)
 
 	// if we have not gained an appendix already, put the old one back
 	if(isnull(current_appendix))
diff --git a/modular_nova/master_files/code/datums/traits/neutral.dm b/modular_nova/master_files/code/datums/traits/neutral.dm
index 4609bc80997..3e3365dd259 100644
--- a/modular_nova/master_files/code/datums/traits/neutral.dm
+++ b/modular_nova/master_files/code/datums/traits/neutral.dm
@@ -238,7 +238,7 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
 
 /datum/quirk/feline_aspect/add_unique(client/client_source)
 	var/mob/living/carbon/human/human_holder = quirk_holder
-	var/obj/item/organ/internal/tongue/cat/new_tongue = new(get_turf(human_holder))
+	var/obj/item/organ/tongue/cat/new_tongue = new(get_turf(human_holder))
 
 	ADD_TRAIT(human_holder, TRAIT_WATER_HATER, QUIRK_TRAIT)
 
@@ -247,7 +247,7 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
 
 /datum/quirk/feline_aspect/remove()
 	var/mob/living/carbon/human/human_holder = quirk_holder
-	var/obj/item/organ/internal/tongue/new_tongue = new human_holder.dna.species.mutanttongue
+	var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue
 
 	REMOVE_TRAIT(human_holder, TRAIT_WATER_HATER, QUIRK_TRAIT)
 
@@ -266,14 +266,14 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
 
 /datum/quirk/canine_aspect/add_unique(client/client_source)
 	var/mob/living/carbon/human/human_holder = quirk_holder
-	var/obj/item/organ/internal/tongue/dog/new_tongue = new(get_turf(human_holder))
+	var/obj/item/organ/tongue/dog/new_tongue = new(get_turf(human_holder))
 
 	new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE))
 	new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 
 /datum/quirk/canine_aspect/remove()
 	var/mob/living/carbon/human/human_holder = quirk_holder
-	var/obj/item/organ/internal/tongue/new_tongue = new human_holder.dna.species.mutanttongue
+	var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue
 
 	new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE))
 	new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
@@ -290,14 +290,14 @@ GLOBAL_VAR_INIT(DNR_trait_overlay, generate_DNR_trait_overlay())
 
 /datum/quirk/avian_aspect/add_unique(client/client_source)
 	var/mob/living/carbon/human/human_holder = quirk_holder
-	var/obj/item/organ/internal/tongue/avian/new_tongue = new(get_turf(human_holder))
+	var/obj/item/organ/tongue/avian/new_tongue = new(get_turf(human_holder))
 
 	new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE))
 	new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
 
 /datum/quirk/avian_aspect/remove()
 	var/mob/living/carbon/human/human_holder = quirk_holder
-	var/obj/item/organ/internal/tongue/new_tongue = new human_holder.dna.species.mutanttongue
+	var/obj/item/organ/tongue/new_tongue = new human_holder.dna.species.mutanttongue
 
 	new_tongue.copy_traits_from(human_holder.get_organ_slot(ORGAN_SLOT_TONGUE))
 	new_tongue.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED)
diff --git a/modular_nova/master_files/code/modules/client/preferences/brain.dm b/modular_nova/master_files/code/modules/client/preferences/brain.dm
index 5f515577c8a..3a83bd0b191 100644
--- a/modular_nova/master_files/code/modules/client/preferences/brain.dm
+++ b/modular_nova/master_files/code/modules/client/preferences/brain.dm
@@ -14,8 +14,8 @@
 	if(!issynthetic(target))
 		return
 
-	var/obj/item/organ/internal/brain/new_brain = target.prefs_get_brain_to_use(value)
-	var/obj/item/organ/internal/brain/old_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/new_brain = target.prefs_get_brain_to_use(value)
+	var/obj/item/organ/brain/old_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 
 	if(!new_brain || new_brain == old_brain.type)
 		return
diff --git a/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm b/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm
index 39e9193fe3e..bfd2876ffe7 100644
--- a/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm
+++ b/modular_nova/master_files/code/modules/client/preferences/middleware/food.dm
@@ -26,7 +26,7 @@ GLOBAL_DATUM_INIT(food_prefs_menu, /datum/food_prefs_menu, new)
 		to_chat(preferences.parent, span_announce("Your food preferences can't be set because of [fail_reason] choices! Please check your preferences!")) // Sorry, but I don't want folk sleeping on this.
 		return
 
-	var/obj/item/organ/internal/tongue/target_tongue = target.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/target_tongue = target.get_organ_slot(ORGAN_SLOT_TONGUE)
 
 	if(isnull(target_tongue) || !preferences.food_preferences["enabled"])
 		return
diff --git a/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm b/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm
index b6cc2339a1e..607a22e95ae 100644
--- a/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm
+++ b/modular_nova/master_files/code/modules/client/preferences/mutant_parts.dm
@@ -64,7 +64,7 @@
 /datum/preference/toggle/eye_emissives/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
 	value = value && preferences && is_allowed(preferences)
 
-	var/obj/item/organ/internal/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/eyes_organ = target.get_organ_by_type(/obj/item/organ/eyes)
 	target.emissive_eyes = value
 	if (istype(eyes_organ))
 		eyes_organ.is_emissive = value
diff --git a/modular_nova/master_files/code/modules/client/preferences_savefile.dm b/modular_nova/master_files/code/modules/client/preferences_savefile.dm
index 772dfbd2c56..9a0ef4002b7 100644
--- a/modular_nova/master_files/code/modules/client/preferences_savefile.dm
+++ b/modular_nova/master_files/code/modules/client/preferences_savefile.dm
@@ -3,7 +3,7 @@
  * You can't really use the non-modular version, least you eventually want asinine merge
  * conflicts and/or potentially disastrous issues to arise, so here's your own.
  */
-#define MODULAR_SAVEFILE_VERSION_MAX 6
+#define MODULAR_SAVEFILE_VERSION_MAX 7
 
 #define MODULAR_SAVEFILE_UP_TO_DATE -1
 
@@ -13,6 +13,7 @@
 #define VERSION_UNDERSHIRT_BRA_SPLIT 4
 #define VERSION_CHRONOLOGICAL_AGE 5
 #define VERSION_TG_LOADOUT 6
+#define VERSION_INTERNAL_EXTERNAL_ORGANS 7
 
 #define INDEX_UNDERWEAR 1
 #define INDEX_BRA 2
@@ -35,18 +36,7 @@
 	if(!save_data)
 		save_data = list()
 
-	var/list/save_augments = SANITIZE_LIST(save_data["augments"])
-	for(var/aug_slot in save_augments)
-		var/aug_entry = save_augments[aug_slot]
-		save_augments -= aug_slot
-
-		if(istext(aug_entry))
-			aug_entry = _text2path(aug_entry)
-
-		var/datum/augment_item/aug = GLOB.augment_items[aug_entry]
-		if(aug)
-			save_augments[aug_slot] = aug_entry
-	augments = save_augments
+	load_augments(SANITIZE_LIST(save_data["augments"]))
 
 	augment_limb_styles = SANITIZE_LIST(save_data["augment_limb_styles"])
 	for(var/key in augment_limb_styles)
@@ -260,12 +250,24 @@
 			if(istext(loadout))
 				loadout = _text2path(loadout)
 			save_loadout[loadout] = entry
-
 		var/loadout_list = sanitize_loadout_list(save_loadout)
 
 		if (length(loadout_list)) // We only want to write these changes down if we're certain that there was anything in that.
 			write_preference(GLOB.preference_entries[/datum/preference/loadout], loadout_list)
 
+	if(current_version < VERSION_INTERNAL_EXTERNAL_ORGANS)
+		var/list/save_augments = SANITIZE_LIST(save_data["augments"])
+		var/prefix_length = length("/obj/item/organ/internal") // Shouldn't be any external augments, but if there are, it's the same length
+		for(var/augment_name in save_augments)
+			var/augment_path_string = save_augments[augment_name]
+			if(!(findtext(augment_path_string, "/obj/item/organ/internal") || findtext(augment_path_string, "/obj/item/organ/external")))
+				continue // Make sure we don't strip something that isn't there
+			var/augment_path_string_stripped = copytext(save_augments[augment_name], prefix_length + 1)
+			save_augments[augment_name] = "/obj/item/organ[augment_path_string_stripped]"
+		load_augments(save_augments)
+
+
+
 
 /datum/preferences/proc/check_migration()
 	if(!tgui_prefs_migration)
@@ -324,6 +326,20 @@
 					markings[marking][title] = list(sanitize_hexcolor(markings[marking][title]), FALSE)
 	return markings
 
+/datum/preferences/proc/load_augments(list/augments_prefs)
+	var/list/augments_sanitized = list()
+	for(var/aug_slot in augments_prefs)
+		var/aug_entry = augments_prefs[aug_slot]
+
+		if(istext(aug_entry))
+			aug_entry = _text2path(aug_entry)
+
+		var/datum/augment_item/aug = GLOB.augment_items[aug_entry]
+		if(aug)
+			augments_sanitized[aug_slot] = aug_entry
+	augments = augments_sanitized
+
+
 
 #undef MODULAR_SAVEFILE_VERSION_MAX
 #undef MODULAR_SAVEFILE_UP_TO_DATE
@@ -333,3 +349,5 @@
 #undef VERSION_SYNTH_REFACTOR
 #undef VERSION_UNDERSHIRT_BRA_SPLIT
 #undef VERSION_CHRONOLOGICAL_AGE
+#undef VERSION_TG_LOADOUT
+#undef VERSION_INTERNAL_EXTERNAL_ORGANS
diff --git a/modular_nova/master_files/code/modules/jobs/prisoner.dm b/modular_nova/master_files/code/modules/jobs/prisoner.dm
index 0b9a4c40bd2..a6b29a39e3c 100644
--- a/modular_nova/master_files/code/modules/jobs/prisoner.dm
+++ b/modular_nova/master_files/code/modules/jobs/prisoner.dm
@@ -4,7 +4,7 @@
 	var/implants_removed = 0
 	var/implants_total = 0
 
-	for(var/obj/item/organ/internal/cyberimp/cybernetic in new_prisoner.organs)
+	for(var/obj/item/organ/cyberimp/cybernetic in new_prisoner.organs)
 		implants_total += 1
 		if (cybernetic.cannot_confiscate)
 			continue
diff --git a/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm b/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm
index 08995e8be21..266f525dc98 100644
--- a/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm
+++ b/modular_nova/master_files/code/modules/mining/equipment/monster_organs/monster_organ.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/monster_core/try_apply(atom/target, mob/user)
+/obj/item/organ/monster_core/try_apply(atom/target, mob/user)
 	if (istype(target, /obj/structure/lavaland/ash_walker))
 		target.attackby(src, user)
 		return
diff --git a/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm b/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm
index 85028e2a910..b605cae46d0 100644
--- a/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm
+++ b/modular_nova/master_files/code/modules/mob/dead/new_player/preferences_setup.dm
@@ -34,7 +34,7 @@
 		if(PREVIEW_PREF_NAKED)
 			mannequin.underwear_visibility = UNDERWEAR_HIDE_UNDIES | UNDERWEAR_HIDE_SHIRT | UNDERWEAR_HIDE_SOCKS | UNDERWEAR_HIDE_BRA
 			for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS))
-				var/obj/item/organ/external/genital/gent = mannequin.get_organ_slot(organ_key)
+				var/obj/item/organ/genital/gent = mannequin.get_organ_slot(organ_key)
 				if(gent)
 					gent.aroused = AROUSAL_NONE
 					gent.update_sprite_suffix()
@@ -42,7 +42,7 @@
 		if(PREVIEW_PREF_NAKED_AROUSED)
 			mannequin.underwear_visibility = UNDERWEAR_HIDE_UNDIES | UNDERWEAR_HIDE_SHIRT | UNDERWEAR_HIDE_SOCKS | UNDERWEAR_HIDE_BRA
 			for(var/organ_key in list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_ANUS))
-				var/obj/item/organ/external/genital/gent = mannequin.get_organ_slot(organ_key)
+				var/obj/item/organ/genital/gent = mannequin.get_organ_slot(organ_key)
 				if(gent)
 					gent.aroused = AROUSAL_FULL
 					gent.update_sprite_suffix()
diff --git a/modular_nova/master_files/code/modules/mob/living/carbon/death.dm b/modular_nova/master_files/code/modules/mob/living/carbon/death.dm
index b96b7ce57c3..6e31008fec3 100644
--- a/modular_nova/master_files/code/modules/mob/living/carbon/death.dm
+++ b/modular_nova/master_files/code/modules/mob/living/carbon/death.dm
@@ -7,7 +7,7 @@
 			organs.Remove(organ)
 
 	// synth brains always drop when gibbed, by default
-	var/obj/item/organ/internal/brain/synth/synth_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/synth/synth_brain = get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(istype(synth_brain))
 		drop_bitflags |= DROP_BRAIN
 
diff --git a/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm b/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm
index 92412c82785..7e416865a7a 100644
--- a/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm
+++ b/modular_nova/master_files/code/modules/mob/living/carbon/human/species_type/snail.dm
@@ -1,8 +1,8 @@
 #define SHELL_TRANSPARENCY_ALPHA 90
 
 /datum/species/snail
-	mutantliver = /obj/item/organ/internal/liver/snail //This is just a better liver to deal with toxins, it's a thematic thing.
-	mutantheart = /obj/item/organ/internal/heart/snail //This gives them the shell buff where they take less damage from behind, and their heart's more durable.
+	mutantliver = /obj/item/organ/liver/snail //This is just a better liver to deal with toxins, it's a thematic thing.
+	mutantheart = /obj/item/organ/heart/snail //This gives them the shell buff where they take less damage from behind, and their heart's more durable.
 	exotic_blood = null
 
 /datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load)
diff --git a/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm b/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm
index d7b16d45d49..1e787fdfc15 100644
--- a/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm
+++ b/modular_nova/master_files/code/modules/mob/living/carbon/human_helpers.dm
@@ -4,7 +4,7 @@
 	var/t_He = p_They()
 	var/t_is = p_are()
 	//This checks to see if the body is revivable
-	if((key || !get_organ_by_type(/obj/item/organ/internal/brain) || ghost?.can_reenter_corpse) && (!HAS_TRAIT(src, TRAIT_DNR)))
+	if((key || !get_organ_by_type(/obj/item/organ/brain) || ghost?.can_reenter_corpse) && (!HAS_TRAIT(src, TRAIT_DNR)))
 		return span_deadsay("[t_He] [t_is] limp and unresponsive; they're still twitching on occasion, perhaps [p_they()] can still be saved..!")
 	else
 		return span_deadsay("[t_He] [t_is] limp and unresponsive; there are no signs of life and they've degraded beyond revival...")
diff --git a/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm b/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm
index 9a3dd0e95a3..bab02052a8f 100644
--- a/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm
+++ b/modular_nova/master_files/code/modules/research/designs/limbgrower_designs.dm
@@ -17,7 +17,7 @@
 /datum/design/tongue/snail
 	name = "Snail Tongue"
 	id = "snailtongue"
-	build_path = /obj/item/organ/internal/tongue/snail
+	build_path = /obj/item/organ/tongue/snail
 	category = list(
 		SPECIES_SNAIL,
 		RND_CATEGORY_INITIAL,
@@ -26,7 +26,7 @@
 /datum/design/liver/snail
 	name = "Snail Liver"
 	id = "snailliver"
-	build_path = /obj/item/organ/internal/liver/snail
+	build_path = /obj/item/organ/liver/snail
 	category = list(
 		SPECIES_SNAIL,
 		RND_CATEGORY_INITIAL,
@@ -35,7 +35,7 @@
 /datum/design/heart/snail
 	name = "Snail Heart"
 	id = "snailheart"
-	build_path = /obj/item/organ/internal/heart/snail
+	build_path = /obj/item/organ/heart/snail
 	category = list(
 		SPECIES_SNAIL,
 		RND_CATEGORY_INITIAL,
diff --git a/modular_nova/master_files/code/modules/research/designs/medical_designs.dm b/modular_nova/master_files/code/modules/research/designs/medical_designs.dm
index c2beb545386..ad1d985ef18 100644
--- a/modular_nova/master_files/code/modules/research/designs/medical_designs.dm
+++ b/modular_nova/master_files/code/modules/research/designs/medical_designs.dm
@@ -9,7 +9,7 @@
 		/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2,
 		/datum/material/silver = SMALL_MATERIAL_AMOUNT * 2,
 	)
-	build_path = /obj/item/organ/internal/tongue/cybernetic
+	build_path = /obj/item/organ/tongue/cybernetic
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_1,
 	)
@@ -19,4 +19,4 @@
 	name = "Forked Cybernetic Tongue"
 	desc = "A forked cybernetic tongue."
 	id = "cybernetic_tongue_lizard"
-	build_path = /obj/item/organ/internal/tongue/lizard/cybernetic
+	build_path = /obj/item/organ/tongue/lizard/cybernetic
diff --git a/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm b/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm
index 61851d2eba1..c6cfcda79c7 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/external/antennae.dm
@@ -1,11 +1,11 @@
-/obj/item/organ/external/antennae
+/obj/item/organ/antennae
 
-/obj/item/organ/external/antennae/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/antennae/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 	if(ismoth(organ_owner))
 		ADD_TRAIT(organ_owner, TRAIT_REAGENT_SCANNER, ORGAN_TRAIT)
 
-/obj/item/organ/external/antennae/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/antennae/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	REMOVE_TRAIT(organ_owner, TRAIT_REAGENT_SCANNER, ORGAN_TRAIT)
 
diff --git a/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm b/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm
index 49d2bf5c752..1fe2fce11f4 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/external/wings/functional_wings.dm
@@ -1,3 +1,3 @@
 // No free fall softening for everyone - but functional wings get it
-/obj/item/organ/external/wings/functional/can_soften_fall()
+/obj/item/organ/wings/functional/can_soften_fall()
 	return TRUE
diff --git a/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm b/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm
index b975cac1d6b..0f6afee5ae9 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/external/wings/wings.dm
@@ -1,3 +1,3 @@
 // No free fall softening for everyone
-/obj/item/organ/external/wings/functional/can_soften_fall()
+/obj/item/organ/wings/functional/can_soften_fall()
 	return FALSE
diff --git a/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm b/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm
index 0e82f86e4d0..a078228dcff 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/appendix/become_inflamed()
+/obj/item/organ/appendix/become_inflamed()
 	if(!engaged_role_play_check(owner, station = TRUE, dorms = TRUE))
 		return
 
diff --git a/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
index c17bd25da42..239f2155d30 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
@@ -1,3 +1,3 @@
-/obj/item/organ/internal/cyberimp
+/obj/item/organ/cyberimp
 	/// If TRUE, this augment cannot be confiscated at roundstart for roles like prisoner, etc.
 	var/cannot_confiscate
diff --git a/modular_nova/master_files/code/modules/surgery/organs/tongue.dm b/modular_nova/master_files/code/modules/surgery/organs/tongue.dm
index 301247b5e51..b749c42433c 100644
--- a/modular_nova/master_files/code/modules/surgery/organs/tongue.dm
+++ b/modular_nova/master_files/code/modules/surgery/organs/tongue.dm
@@ -1,3 +1,3 @@
 // Remove the could_speak_language check from the tongue code. This is a much better solution than trying to grant omnitongue on prefs load, and prevents any funny breakages.
-/obj/item/organ/internal/tongue/could_speak_language(datum/language/language_path)
+/obj/item/organ/tongue/could_speak_language(datum/language/language_path)
 	return TRUE
diff --git a/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm b/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm
index 1ade5dc4be4..97bdb284f0f 100644
--- a/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm
+++ b/modular_nova/modules/ashwalkers/code/buildings/ash_tendril.dm
@@ -3,14 +3,14 @@
 
 //this is for revitalizing/preserving regen cores
 /obj/structure/lavaland/ash_walker/attackby(obj/item/attacking_item, mob/living/user, params)
-	if(!istype(attacking_item, /obj/item/organ/internal/monster_core/regenerative_core))
+	if(!istype(attacking_item, /obj/item/organ/monster_core/regenerative_core))
 		return ..()
 
 	if(!user.mind.has_antag_datum(/datum/antagonist/ashwalker))
 		balloon_alert(user, "must be an ashwalker!")
 		return
 
-	var/obj/item/organ/internal/monster_core/regenerative_core/regen_core = attacking_item
+	var/obj/item/organ/monster_core/regenerative_core/regen_core = attacking_item
 
 	if(!regen_core.decay_timer)
 		balloon_alert(user, "organ already revitalized!")
diff --git a/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm b/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm
index 284e052bfc5..5a71966fb0e 100644
--- a/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm
+++ b/modular_nova/modules/ashwalkers/code/effects/ash_rituals.dm
@@ -96,11 +96,11 @@
 	desc = "Summon a staff that is imbued with the power of the tendril. Requires permission from the mother tendril."
 	required_components = list(
 		"north" = /obj/item/stack/sheet/mineral/wood,
-		"south" = /obj/item/organ/internal/monster_core/regenerative_core,
+		"south" = /obj/item/organ/monster_core/regenerative_core,
 	)
 	consumed_components = list(
 		/obj/item/stack/sheet/mineral/wood,
-		/obj/item/organ/internal/monster_core/regenerative_core,
+		/obj/item/organ/monster_core/regenerative_core,
 	)
 	ritual_success_items = list(
 		/obj/item/ash_staff,
@@ -112,13 +112,13 @@
 	desc = "Summons a necklace that imbues the wearer with the knowledge of our tongue."
 	required_components = list(
 		"north" = /obj/item/stack/sheet/bone,
-		"south" = /obj/item/organ/internal/monster_core/regenerative_core,
+		"south" = /obj/item/organ/monster_core/regenerative_core,
 		"east" = /obj/item/stack/sheet/sinew,
 		"west" = /obj/item/stack/sheet/sinew,
 	)
 	consumed_components = list(
 		/obj/item/stack/sheet/bone,
-		/obj/item/organ/internal/monster_core/regenerative_core,
+		/obj/item/organ/monster_core/regenerative_core,
 		/obj/item/stack/sheet/sinew,
 	)
 	ritual_success_items = list(
@@ -147,13 +147,13 @@
 	name = "Summon Cursed Ash Knife"
 	desc = "Summons a knife that places a tracking curse on unsuspecting miners who destroy our marked tendrils."
 	required_components = list(
-		"north" = /obj/item/organ/internal/monster_core/regenerative_core,
+		"north" = /obj/item/organ/monster_core/regenerative_core,
 		"south" = /obj/item/forging/reagent_weapon/dagger,
 		"east" = /obj/item/stack/sheet/bone,
 		"west" = /obj/item/stack/sheet/sinew,
 	)
 	consumed_components = list(
-		/obj/item/organ/internal/monster_core/regenerative_core,
+		/obj/item/organ/monster_core/regenerative_core,
 		/obj/item/forging/reagent_weapon/dagger,
 		/obj/item/stack/sheet/bone,
 		/obj/item/stack/sheet/sinew,
@@ -167,13 +167,13 @@
 	name = "Summon Tendril Seed"
 	desc = "Summons a seed that, when used in the hand, will cause a tendril to come through at your location."
 	required_components = list(
-		"north" = /obj/item/organ/internal/monster_core/regenerative_core,
+		"north" = /obj/item/organ/monster_core/regenerative_core,
 		"south" = /obj/item/cursed_dagger,
 		"east" = /obj/item/crusher_trophy/goliath_tentacle,
 		"west" = /obj/item/crusher_trophy/watcher_wing,
 	)
 	consumed_components = list(
-		/obj/item/organ/internal/monster_core/regenerative_core,
+		/obj/item/organ/monster_core/regenerative_core,
 		/obj/item/cursed_dagger,
 		/obj/item/crusher_trophy/goliath_tentacle,
 		/obj/item/crusher_trophy/watcher_wing,
@@ -237,13 +237,13 @@
 	desc = "Those who partake in the ceremony and are ready will age, increasing their value to the kin."
 	required_components = list(
 		"north" = /mob/living/carbon/human,
-		"south" = /obj/item/organ/internal/monster_core/regenerative_core,
+		"south" = /obj/item/organ/monster_core/regenerative_core,
 		"east" = /obj/item/stack/sheet/bone,
 		"west" = /obj/item/stack/sheet/sinew,
 	)
 	consumed_components = list(
 		/mob/living/carbon/human,
-		/obj/item/organ/internal/monster_core/regenerative_core,
+		/obj/item/organ/monster_core/regenerative_core,
 		/obj/item/stack/sheet/bone,
 		/obj/item/stack/sheet/sinew,
 	)
@@ -258,13 +258,13 @@
 	name = "Summon Lavaland Creature"
 	desc = "Summons a random, wild monster from another region in space."
 	required_components = list(
-		"north" = /obj/item/organ/internal/monster_core/regenerative_core,
+		"north" = /obj/item/organ/monster_core/regenerative_core,
 		"south" = /mob/living/basic/mining/ice_whelp,
 		"east" = /obj/item/stack/ore/bluespace_crystal,
 		"west" = /obj/item/stack/ore/bluespace_crystal,
 	)
 	consumed_components = list(
-		/obj/item/organ/internal/monster_core/regenerative_core,
+		/obj/item/organ/monster_core/regenerative_core,
 		/mob/living/basic/mining/ice_whelp,
 		/obj/item/stack/ore/bluespace_crystal,
 	)
@@ -285,13 +285,13 @@
 	name = "Summon Icemoon Creature"
 	desc = "Summons a random, wild monster from another region in space."
 	required_components = list(
-		"north" = /obj/item/organ/internal/monster_core/regenerative_core,
+		"north" = /obj/item/organ/monster_core/regenerative_core,
 		"south" = /obj/item/food/grown/surik,
 		"east" = /obj/item/stack/ore/bluespace_crystal,
 		"west" = /obj/item/stack/ore/bluespace_crystal,
 	)
 	consumed_components = list(
-		/obj/item/organ/internal/monster_core/regenerative_core,
+		/obj/item/organ/monster_core/regenerative_core,
 		/obj/item/food/grown/surik,
 		/obj/item/stack/ore/bluespace_crystal,
 	)
@@ -422,13 +422,13 @@
 	name = "Revive Animal"
 	desc = "Revives a simple animal that will then become friendly."
 	required_components = list(
-		"north" = /obj/item/organ/internal/monster_core/regenerative_core,
-		"south" = /obj/item/organ/internal/monster_core/regenerative_core,
+		"north" = /obj/item/organ/monster_core/regenerative_core,
+		"south" = /obj/item/organ/monster_core/regenerative_core,
 		"east" = /obj/item/stack/sheet/bone,
 		"west" = /obj/item/stack/sheet/sinew,
 	)
 	consumed_components = list(
-		/obj/item/organ/internal/monster_core/regenerative_core,
+		/obj/item/organ/monster_core/regenerative_core,
 		/obj/item/stack/sheet/bone,
 		/obj/item/stack/sheet/sinew,
 	)
@@ -486,13 +486,13 @@
 	desc = "Pacifies creatures in the wastes to come to your aide instead, the tradeoff being your ability to fight."
 	required_components = list(
 		"north" = /obj/item/food/grown/ash_flora/fireblossom,
-		"south" = /obj/item/organ/internal/monster_core/regenerative_core,
+		"south" = /obj/item/organ/monster_core/regenerative_core,
 		"east" = /obj/item/stack/sheet/sinew,
 		"west" = /obj/item/stack/sheet/sinew,
 	)
 	consumed_components = list(
 		/obj/item/food/grown/ash_flora/fireblossom,
-		/obj/item/organ/internal/monster_core/regenerative_core,
+		/obj/item/organ/monster_core/regenerative_core,
 		/obj/item/stack/sheet/sinew,
 	)
 
diff --git a/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm b/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm
index 88c255a8f2d..aa76162c67d 100644
--- a/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm
+++ b/modular_nova/modules/ashwalkers/code/species/Ashwalkers.dm
@@ -1,5 +1,5 @@
 /datum/species/lizard/ashwalker
-	mutanteyes = /obj/item/organ/internal/eyes/night_vision/ashwalker
+	mutanteyes = /obj/item/organ/eyes/night_vision/ashwalker
 	bodypart_overrides = list(
 		BODY_ZONE_HEAD = /obj/item/bodypart/head/lizard/ashwalker,
 		BODY_ZONE_CHEST = /obj/item/bodypart/chest/lizard/ashwalker,
diff --git a/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm b/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm
index 24395e3e0f1..1b4f6d2c87c 100644
--- a/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm
+++ b/modular_nova/modules/awaymissions_nova/mothership_astrum/spawners.dm
@@ -41,10 +41,10 @@
 
 /obj/effect/spawner/random/astrum/agent_loot
 	name = "abductor agent loot"
-	loot = list(/obj/item/organ/internal/heart/cybernetic/tier3 = 10,
+	loot = list(/obj/item/organ/heart/cybernetic/tier3 = 10,
 				/obj/item/clothing/suit/armor/abductor/astrum = 10,
 				/obj/item/clothing/head/helmet/astrum = 10,
-				/obj/item/organ/internal/cyberimp/arm/armblade = 5,
+				/obj/item/organ/cyberimp/arm/armblade = 5,
 				/obj/effect/gibspawner/generic = 10,
-				/obj/item/organ/internal/eyes/alien = 5,
+				/obj/item/organ/eyes/alien = 5,
 				)
diff --git a/modular_nova/modules/better_vox/code/vox_species.dm b/modular_nova/modules/better_vox/code/vox_species.dm
index 7c708b68616..bdc2f510041 100644
--- a/modular_nova/modules/better_vox/code/vox_species.dm
+++ b/modular_nova/modules/better_vox/code/vox_species.dm
@@ -11,11 +11,11 @@
 		TRAIT_MUTANT_COLORS,
 	)
 	inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID
-	mutantlungs = /obj/item/organ/internal/lungs/nitrogen/vox
-	mutantbrain = /obj/item/organ/internal/brain/vox
+	mutantlungs = /obj/item/organ/lungs/nitrogen/vox
+	mutantbrain = /obj/item/organ/brain/vox
 	breathid = "n2"
 	mutant_bodyparts = list()
-	mutanttongue = /obj/item/organ/internal/tongue/vox
+	mutanttongue = /obj/item/organ/tongue/vox
 	payday_modifier = 1.0
 	outfit_important_for_life = /datum/outfit/vox
 	species_language_holder = /datum/language_holder/vox
diff --git a/modular_nova/modules/bodyparts/code/moth_bodyparts.dm b/modular_nova/modules/bodyparts/code/moth_bodyparts.dm
index 6fff98d0a7d..1f870b0a9d2 100644
--- a/modular_nova/modules/bodyparts/code/moth_bodyparts.dm
+++ b/modular_nova/modules/bodyparts/code/moth_bodyparts.dm
@@ -14,7 +14,7 @@
 	icon_state = "moth_chest_m"
 	limb_id = SPECIES_MOTH
 	is_dimorphic = TRUE
-	wing_types = list(/obj/item/organ/external/wings/functional/moth/megamoth, /obj/item/organ/external/wings/functional/moth/mothra)
+	wing_types = list(/obj/item/organ/wings/functional/moth/megamoth, /obj/item/organ/wings/functional/moth/mothra)
 	bodypart_traits = list(TRAIT_TACKLING_WINGED_ATTACKER)
 
 /obj/item/bodypart/chest/moth/get_butt_sprite()
diff --git a/modular_nova/modules/cargo/code/goodies.dm b/modular_nova/modules/cargo/code/goodies.dm
index 96ac565db88..43e19cdfbde 100644
--- a/modular_nova/modules/cargo/code/goodies.dm
+++ b/modular_nova/modules/cargo/code/goodies.dm
@@ -142,7 +142,7 @@
 	desc = "Contains a single standard NIF by itself, surgery is required."
 	cost = CARGO_CRATE_VALUE * 15
 	contains = list(
-		/obj/item/organ/internal/cyberimp/brain/nif/standard,
+		/obj/item/organ/cyberimp/brain/nif/standard,
 	)
 
 /datum/supply_pack/goody/cheap_nif
@@ -150,7 +150,7 @@
 	desc = "Contains a single Econo-Deck NIF by itself, surgery is required."
 	cost = CARGO_CRATE_VALUE * 7.5
 	contains = list(
-		/obj/item/organ/internal/cyberimp/brain/nif/roleplay_model,
+		/obj/item/organ/cyberimp/brain/nif/roleplay_model,
 	)
 
 /datum/supply_pack/goody/nif_repair_kit
diff --git a/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm b/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm
index e165fd476cd..bc6d28aea04 100644
--- a/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm
+++ b/modular_nova/modules/company_imports/code/armament_datums/deforest_medical.dm
@@ -253,20 +253,20 @@
 
 /datum/armament_entry/company_import/deforest/cyber_implants/razorwire
 	name = "Razorwire Spool Implant"
-	item_type = /obj/item/organ/internal/cyberimp/arm/razorwire
+	item_type = /obj/item/organ/cyberimp/arm/razorwire
 
 /datum/armament_entry/company_import/deforest/cyber_implants/shell_launcher
 	name = "Shell Launch System Implant"
-	item_type = /obj/item/organ/internal/cyberimp/arm/shell_launcher
+	item_type = /obj/item/organ/cyberimp/arm/shell_launcher
 
 /datum/armament_entry/company_import/deforest/cyber_implants/sandy
 	name = "Qani-Laaca Sensory Computer Implant"
-	item_type = /obj/item/organ/internal/cyberimp/sensory_enhancer
+	item_type = /obj/item/organ/cyberimp/sensory_enhancer
 	cost = PAYCHECK_COMMAND * 5
 
 /datum/armament_entry/company_import/deforest/cyber_implants/hackerman
 	name = "Binyat Wireless Hacking System Implant"
-	item_type = /obj/item/organ/internal/cyberimp/hackerman_deck
+	item_type = /obj/item/organ/cyberimp/hackerman_deck
 	cost = PAYCHECK_COMMAND * 10
 
 // Modsuit Modules from the medical category, here instead of in Nakamura because nobody buys from this company
diff --git a/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm b/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm
index 0298696b7ef..7dfffbc3394 100644
--- a/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm
+++ b/modular_nova/modules/company_imports/code/objects/deforest/filled_organ_boxes.dm
@@ -1,29 +1,29 @@
 /obj/item/storage/organbox/advanced_cyber_eyes
 
 /obj/item/storage/organbox/advanced_cyber_eyes/PopulateContents()
-	new /obj/item/organ/internal/eyes/robotic/shield(src)
+	new /obj/item/organ/eyes/robotic/shield(src)
 
 /obj/item/storage/organbox/advanced_cyber_ears
 
 /obj/item/storage/organbox/advanced_cyber_ears/PopulateContents()
-	new /obj/item/organ/internal/ears/cybernetic/upgraded(src)
+	new /obj/item/organ/ears/cybernetic/upgraded(src)
 
 /obj/item/storage/organbox/advanced_cyber_heart
 
 /obj/item/storage/organbox/advanced_cyber_heart/PopulateContents()
-	new /obj/item/organ/internal/heart/cybernetic/tier3(src)
+	new /obj/item/organ/heart/cybernetic/tier3(src)
 
 /obj/item/storage/organbox/advanced_cyber_liver
 
 /obj/item/storage/organbox/advanced_cyber_liver/PopulateContents()
-	new /obj/item/organ/internal/liver/cybernetic/tier3(src)
+	new /obj/item/organ/liver/cybernetic/tier3(src)
 
 /obj/item/storage/organbox/advanced_cyber_lungs
 
 /obj/item/storage/organbox/advanced_cyber_lungs/PopulateContents()
-	new /obj/item/organ/internal/lungs/cybernetic/tier3(src)
+	new /obj/item/organ/lungs/cybernetic/tier3(src)
 
 /obj/item/storage/organbox/advanced_cyber_stomach
 
 /obj/item/storage/organbox/advanced_cyber_stomach/PopulateContents()
-	new /obj/item/organ/internal/stomach/cybernetic/tier3(src)
+	new /obj/item/organ/stomach/cybernetic/tier3(src)
diff --git a/modular_nova/modules/cortical_borer/code/cortical_borer.dm b/modular_nova/modules/cortical_borer/code/cortical_borer.dm
index f754f62de3b..c88aa15e135 100644
--- a/modular_nova/modules/cortical_borer/code/cortical_borer.dm
+++ b/modular_nova/modules/cortical_borer/code/cortical_borer.dm
@@ -32,27 +32,27 @@ GLOBAL_LIST_EMPTY(cortical_borers)
 	return FALSE
 
 //so if a person is debrained, the borer is removed
-/obj/item/organ/internal/brain/Remove(mob/living/carbon/target, special = FALSE, movement_flags)
+/obj/item/organ/brain/Remove(mob/living/carbon/target, special = FALSE, movement_flags)
 	. = ..()
 	var/mob/living/basic/cortical_borer/cb_inside = target.has_borer()
 	if(cb_inside)
 		cb_inside.leave_host()
 
 //borers also create an organ, so you dont need to debrain someone
-/obj/item/organ/internal/borer_body
+/obj/item/organ/borer_body
 	name = "engorged cortical borer"
 	desc = "the body of a cortical borer, full of human viscera, blood, and more."
 	zone = BODY_ZONE_HEAD
 	/// Ref to the borer who this organ belongs to
 	var/mob/living/basic/cortical_borer/borer
 
-/obj/item/organ/internal/borer_body/Destroy()
+/obj/item/organ/borer_body/Destroy()
 	borer = null
 	if(owner && HAS_TRAIT_FROM(owner, TRAIT_WEATHER_IMMUNE, "borer_in_host"))
 		REMOVE_TRAIT(owner, TRAIT_WEATHER_IMMUNE, "borer_in_host")
 	return ..()
 
-/obj/item/organ/internal/borer_body/mob_insert(mob/living/carbon/carbon_target, special, movement_flags)
+/obj/item/organ/borer_body/mob_insert(mob/living/carbon/carbon_target, special, movement_flags)
 	. = ..()
 	for(var/datum/borer_focus/body_focus as anything in borer.body_focuses)
 		body_focus.on_add()
@@ -60,7 +60,7 @@ GLOBAL_LIST_EMPTY(cortical_borers)
 	ADD_TRAIT(carbon_target, TRAIT_WEATHER_IMMUNE, "borer_in_host")
 
 //on removal, force the borer out
-/obj/item/organ/internal/borer_body/mob_remove(mob/living/carbon/carbon_target, special)
+/obj/item/organ/borer_body/mob_remove(mob/living/carbon/carbon_target, special)
 	. = ..()
 	var/mob/living/basic/cortical_borer/cb_inside = carbon_target.has_borer()
 	for(var/datum/borer_focus/body_focus as anything in cb_inside.body_focuses)
@@ -251,7 +251,7 @@ GLOBAL_LIST_EMPTY(cortical_borers)
 /mob/living/basic/cortical_borer/Destroy()
 	if(human_host)
 		if(human_host.organs)
-			var/obj/item/organ/internal/borer_body/borer_organ = locate() in human_host.organs
+			var/obj/item/organ/borer_body/borer_organ = locate() in human_host.organs
 			borer_organ.Remove(human_host)
 		if(HAS_TRAIT_FROM(human_host, TRAIT_WEATHER_IMMUNE, "borer_in_host"))
 			REMOVE_TRAIT(human_host, TRAIT_WEATHER_IMMUNE, "borer_in_host")
@@ -378,7 +378,7 @@ GLOBAL_LIST_EMPTY(cortical_borers)
 /mob/living/basic/cortical_borer/proc/leave_host()
 	if(!human_host)
 		return
-	var/obj/item/organ/internal/borer_body/borer_organ = locate() in human_host.organs
+	var/obj/item/organ/borer_body/borer_organ = locate() in human_host.organs
 	if(borer_organ)
 		borer_organ.Remove(human_host)
 	var/turf/human_turf = get_turf(human_host)
diff --git a/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm b/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm
index 96eeba9e478..4006e93c13b 100644
--- a/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm
+++ b/modular_nova/modules/cortical_borer/code/cortical_borer_abilities.dm
@@ -298,7 +298,7 @@
 	cortical_owner.chemical_evolution -= chemical_evo_points
 	cortical_owner.known_chemicals += reagent_choice.type
 	cortical_owner.blood_chems_learned++
-	var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(victim_brain)
 		cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5 * cortical_owner.host_harm_multiplier)
 	if(cortical_owner.blood_chems_learned == BLOOD_CHEM_OBJECTIVE)
@@ -335,7 +335,7 @@
 	cortical_owner.chemical_evolution -= chemical_evo_points
 	cortical_owner.known_chemicals += reagent_choice
 	cortical_owner.potential_chemicals -= reagent_choice
-	var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(victim_brain)
 		cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5 * cortical_owner.host_harm_multiplier)
 	owner.balloon_alert(owner, "[initial(reagent_choice.name)] learned")
@@ -366,7 +366,7 @@
 	cortical_owner.max_chemical_storage += cortical_owner.chem_storage_per_level
 	cortical_owner.chemical_regen += cortical_owner.chem_regen_per_level
 	cortical_owner.level += 1
-	var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(victim_brain)
 		cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10 * cortical_owner.host_harm_multiplier)
 	cortical_owner.human_host.adjust_eye_blur(6 SECONDS * cortical_owner.host_harm_multiplier) //about 12 seconds' worth by default
@@ -499,7 +499,7 @@
 		owner.balloon_alert(owner, "detached from host")
 		if(!(cortical_owner.upgrade_flags & BORER_STEALTH_MODE))
 			to_chat(cortical_owner.human_host, span_notice("Something carefully tickles your inner ear..."))
-		var/obj/item/organ/internal/borer_body/borer_organ = locate() in cortical_owner.human_host.organs
+		var/obj/item/organ/borer_body/borer_organ = locate() in cortical_owner.human_host.organs
 		//log the interaction
 		var/turf/human_turfone = get_turf(cortical_owner.human_host)
 		var/logging_text = "[key_name(cortical_owner)] left [key_name(cortical_owner.human_host)] at [loc_name(human_turfone)]"
@@ -567,7 +567,7 @@
 	if(!(cortical_owner.upgrade_flags & BORER_STEALTH_MODE))
 		to_chat(cortical_owner.human_host, span_notice("A chilling sensation goes down your spine..."))
 	cortical_owner.copy_languages(cortical_owner.human_host)
-	var/obj/item/organ/internal/borer_body/borer_organ = new(cortical_owner.human_host)
+	var/obj/item/organ/borer_body/borer_organ = new(cortical_owner.human_host)
 	borer_organ.borer = owner
 	borer_organ.Insert(cortical_owner.human_host)
 	var/turf/human_turftwo = get_turf(cortical_owner.human_host)
@@ -615,7 +615,7 @@
 	borer_message = sanitize(borer_message)
 	var/mob/living/carbon/human/cortical_host = cortical_owner.human_host
 	to_chat(cortical_host, span_boldwarning("Your voice moves without your permission!"))
-	var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(victim_brain)
 		cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * cortical_owner.host_harm_multiplier)
 	cortical_host.say(message = borer_message, forced = TRUE)
@@ -646,7 +646,7 @@
 		StartCooldown()
 		return
 	produce_egg()
-	var/obj/item/organ/internal/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/victim_brain = cortical_owner.human_host.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(victim_brain)
 		cortical_owner.human_host.adjustOrganLoss(ORGAN_SLOT_BRAIN, 25 * cortical_owner.host_harm_multiplier)
 		var/eggroll = rand(1,100)
@@ -718,8 +718,9 @@
 		cortical_owner.human_host.adjustOxyLoss(-(cortical_owner.human_host.getOxyLoss()*0.5))
 	if(cortical_owner.human_host.blood_volume < BLOOD_VOLUME_BAD)
 		cortical_owner.human_host.blood_volume = BLOOD_VOLUME_BAD
-	for(var/obj/item/organ/internal/internal_target in cortical_owner.human_host.organs)
-		internal_target.apply_organ_damage(-internal_target.damage * 0.5)
+	for(var/obj/item/organ/internal_target in cortical_owner.human_host.organs)
+		if(!(internal_target.organ_flags & ORGAN_EXTERNAL))
+			internal_target.apply_organ_damage(-internal_target.damage * 0.5)
 	cortical_owner.human_host.revive()
 	to_chat(cortical_owner.human_host, span_boldwarning("Your heart jumpstarts!"))
 	owner.balloon_alert(owner, "host revived")
@@ -813,8 +814,8 @@
 	cortical_owner.chemical_storage -= chemical_cost
 	var/turf/borer_turf = get_turf(cortical_owner)
 	var/obj/item/bodypart/chest/chest = cortical_owner.human_host.get_bodypart(BODY_ZONE_CHEST)
-	if((!chest || IS_ORGANIC_LIMB(chest)) && !cortical_owner.human_host.get_organ_by_type(/obj/item/organ/internal/empowered_borer_egg))
-		var/obj/item/organ/internal/empowered_borer_egg/spawned_egg = new(cortical_owner.human_host)
+	if((!chest || IS_ORGANIC_LIMB(chest)) && !cortical_owner.human_host.get_organ_by_type(/obj/item/organ/empowered_borer_egg))
+		var/obj/item/organ/empowered_borer_egg/spawned_egg = new(cortical_owner.human_host)
 		spawned_egg.generation = (cortical_owner.generation + 1)
 
 	cortical_owner.children_produced += 1
diff --git a/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm b/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm
index 25f8bae9f0e..03fb02548e5 100644
--- a/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm
+++ b/modular_nova/modules/cortical_borer/code/evolution/evolution_things/empowered_egg.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/empowered_borer_egg
+/obj/item/organ/empowered_borer_egg
 	name = "strange egg"
 	desc = "All slimy and yuck."
 	icon_state = "innards" // not like you'll be seeing this anyway
@@ -10,26 +10,26 @@
 	/// What generation the egg will be
 	var/generation = 1
 
-/obj/item/organ/internal/empowered_borer_egg/on_find(mob/living/finder)
+/obj/item/organ/empowered_borer_egg/on_find(mob/living/finder)
 	..()
 	to_chat(finder, span_warning("You found an unknown egg in [owner]'s [zone]!"))
 
-/obj/item/organ/internal/empowered_borer_egg/Initialize(mapload)
+/obj/item/organ/empowered_borer_egg/Initialize(mapload)
 	. = ..()
 	if(iscarbon(loc))
 		Insert(loc)
 
-/obj/item/organ/internal/empowered_borer_egg/mob_insert(mob/living/carbon/M, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/empowered_borer_egg/mob_insert(mob/living/carbon/M, special = FALSE, movement_flags = DELETE_IF_REPLACED)
 	..()
 	addtimer(CALLBACK(src, PROC_REF(try_burst)), burst_time)
 
-/obj/item/organ/internal/empowered_borer_egg/mob_remove(mob/living/carbon/M, special = FALSE)
+/obj/item/organ/empowered_borer_egg/mob_remove(mob/living/carbon/M, special = FALSE)
 	. = ..()
 	visible_message(span_warning(span_italics("As [src] is cut out of [M], it quickly vibrates and shatters, leaving nothing but some goop!")))
 	new/obj/effect/decal/cleanable/food/egg_smudge(get_turf(src))
 	qdel(src)
 
-/obj/item/organ/internal/empowered_borer_egg/proc/try_burst()
+/obj/item/organ/empowered_borer_egg/proc/try_burst()
 	if(!owner)
 		qdel(src)
 		return
diff --git a/modular_nova/modules/cryosleep/code/cryopod.dm b/modular_nova/modules/cryosleep/code/cryopod.dm
index 410b01fa061..84fb9f562b2 100644
--- a/modular_nova/modules/cryosleep/code/cryopod.dm
+++ b/modular_nova/modules/cryosleep/code/cryopod.dm
@@ -415,7 +415,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod, 32)
 
 // Allows players to cryo others. Checks if they have been AFK for 30 minutes.
 	if(target.key && user != target)
-		if (target.get_organ_by_type(/obj/item/organ/internal/brain) ) //Target the Brain
+		if (target.get_organ_by_type(/obj/item/organ/brain) ) //Target the Brain
 			if(!target.mind || target.ssd_indicator ) // Is the character empty / AI Controlled
 				if(target.lastclienttime + ssd_time >= world.time)
 					to_chat(user, span_notice("You can't put [target] into [src] for another [round(((ssd_time - (world.time - target.lastclienttime)) / (1 MINUTES)), 1)] minutes."))
diff --git a/modular_nova/modules/customization/datums/components/crafting/recipes.dm b/modular_nova/modules/customization/datums/components/crafting/recipes.dm
index 9d88e61442a..fcc9f2665c2 100644
--- a/modular_nova/modules/customization/datums/components/crafting/recipes.dm
+++ b/modular_nova/modules/customization/datums/components/crafting/recipes.dm
@@ -1,10 +1,10 @@
 /datum/crafting_recipe/food/haggis
 	name = "Haggis"
 	reqs = list(
-		/obj/item/organ/internal/heart = 1,
-		/obj/item/organ/internal/liver = 1,
-		/obj/item/organ/internal/lungs = 1,
-		/obj/item/organ/internal/stomach = 1,
+		/obj/item/organ/heart = 1,
+		/obj/item/organ/liver = 1,
+		/obj/item/organ/lungs = 1,
+		/obj/item/organ/stomach = 1,
 		/obj/item/food/grown/onion = 1,
 		/obj/item/food/grown/oat = 1,
 		/datum/reagent/consumable/salt = 1,
diff --git a/modular_nova/modules/customization/datums/dna.dm b/modular_nova/modules/customization/datums/dna.dm
index f504fa1ced6..8882b93ebd6 100644
--- a/modular_nova/modules/customization/datums/dna.dm
+++ b/modular_nova/modules/customization/datums/dna.dm
@@ -201,11 +201,8 @@ GLOBAL_LIST_EMPTY(total_uf_len_by_block)
 	set_facial_haircolor(sanitize_hexcolor(get_uni_identity_block(structure, DNA_FACIAL_HAIR_COLOR_BLOCK)), update = FALSE)
 
 	if(eyeorgancolor_update)
-		var/obj/item/organ/internal/eyes/eye_organ = get_organ_slot(ORGAN_SLOT_EYES)
-		eye_organ.eye_color_left = eye_color_left
-		eye_organ.eye_color_right = eye_color_right
-		eye_organ.old_eye_color_left = eye_color_left
-		eye_organ.old_eye_color_right = eye_color_right
+		add_eye_color_left(eye_color_left, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
+		add_eye_color_right(eye_color_right, EYE_COLOR_ORGAN_PRIORITY, update_body = FALSE)
 
 	if(HAS_TRAIT(src, TRAIT_SHAVED))
 		set_facial_hairstyle("Shaved", update = FALSE)
diff --git a/modular_nova/modules/customization/modules/client/augment/implants.dm b/modular_nova/modules/customization/modules/client/augment/implants.dm
index 2f9db87a664..3ae6450845a 100644
--- a/modular_nova/modules/customization/modules/client/augment/implants.dm
+++ b/modular_nova/modules/customization/modules/client/augment/implants.dm
@@ -18,7 +18,7 @@
 /datum/augment_item/implant/chest/nutriment_pump
 	name = "Nutriment Pump"
 	cost = 4
-	path = /obj/item/organ/internal/cyberimp/chest/nutriment
+	path = /obj/item/organ/cyberimp/chest/nutriment
 
 //LEFT ARM IMPLANTS
 /datum/augment_item/implant/l_arm
@@ -26,62 +26,62 @@
 
 /datum/augment_item/implant/l_arm/charging_implant
 	name = "Left Charging Cord Implant"
-	path = /obj/item/organ/internal/cyberimp/arm/power_cord/left_arm
+	path = /obj/item/organ/cyberimp/arm/power_cord/left_arm
 
 /datum/augment_item/implant/l_arm/civilian_lighter
 	name = "Left Thumbtip Lighter"
 	cost = 2
-	path = /obj/item/organ/internal/cyberimp/arm/civilian_lighter/left_arm
+	path = /obj/item/organ/cyberimp/arm/civilian_lighter/left_arm
 
 /datum/augment_item/implant/l_arm/razor_claws
     name = "Left Razor Claws (Knife + Wirecutters)"
     cost = 4
-    path = /obj/item/organ/internal/cyberimp/arm/razor_claws/left_arm
+    path = /obj/item/organ/cyberimp/arm/razor_claws/left_arm
 
 /datum/augment_item/implant/l_arm/adjuster
 	name = "Left Adjuster Implant (Screwdriver + Wrench)"
 	cost = 4
-	path = /obj/item/organ/internal/cyberimp/arm/adjuster/left_arm
+	path = /obj/item/organ/cyberimp/arm/adjuster/left_arm
 
 /datum/augment_item/implant/l_arm/bureaucracy
 	name = "Left Bureaucrat's 'Jacent' Toolset Implant (4-colour Pen + Small Paper Bin + Approve/Deny Stamps)"
 	cost = 4
-	path = /obj/item/organ/internal/cyberimp/arm/bureaucracy/left_arm
+	path = /obj/item/organ/cyberimp/arm/bureaucracy/left_arm
 
 /datum/augment_item/implant/l_arm/cargo
 	name = "Left FTU 'Deckhand' toolset implant (Universal Scanner + Boxcutter)"
 	cost = 4
-	path = /obj/item/organ/internal/cyberimp/arm/cargo/left_arm
+	path = /obj/item/organ/cyberimp/arm/cargo/left_arm
 
 /datum/augment_item/implant/l_arm/civilian_barstaff
 	name = "Left Waitstaff's Toolset Implant (Serving Tray + Rag)"
 	cost = 4
-	path = /obj/item/organ/internal/cyberimp/arm/civilian_barstaff/left_arm
+	path = /obj/item/organ/cyberimp/arm/civilian_barstaff/left_arm
 
 /datum/augment_item/implant/l_arm/emt_triage
 	name = "Left Triage Actuator Implant (Drapes + Retractor + Hemostat)"
 	cost = 6
-	path = /obj/item/organ/internal/cyberimp/arm/emt_triage/left_arm
+	path = /obj/item/organ/cyberimp/arm/emt_triage/left_arm
 
 /datum/augment_item/implant/l_arm/blacksteel_forging
 	name = "Left Blacksteel 'Starforge' Toolset Implant (Forging Hammer + Tongs + Bellows)"
 	cost = 6
-	path = /obj/item/organ/internal/cyberimp/arm/blacksteel_forging/left_arm
+	path = /obj/item/organ/cyberimp/arm/blacksteel_forging/left_arm
 
 /datum/augment_item/implant/l_arm/arc_welder
 	name = "Left Shipbreaker's Toolset Implant (Arc Welder + Crowbar + Wrench)"
 	cost = 6
-	path = /obj/item/organ/internal/cyberimp/arm/arc_welder/left_arm
+	path = /obj/item/organ/cyberimp/arm/arc_welder/left_arm
 
 /datum/augment_item/implant/l_arm/electrical_toolset
 	name = "Left Electrical Toolset Implant (Screwdriver + Multitool + Wirecutters)"
 	cost = 8
-	path = /obj/item/organ/internal/cyberimp/arm/electrical_toolset/left_arm
+	path = /obj/item/organ/cyberimp/arm/electrical_toolset/left_arm
 
 /datum/augment_item/implant/l_arm/mining_drill
 	name = "Left Daiba Masterworks 'Burrower' Drill"
 	cost = 8
-	path = /obj/item/organ/internal/cyberimp/arm/mining_drill/left_arm
+	path = /obj/item/organ/cyberimp/arm/mining_drill/left_arm
 
 //RIGHT ARM IMPLANTS
 /datum/augment_item/implant/r_arm
@@ -89,62 +89,62 @@
 
 /datum/augment_item/implant/r_arm/charging_implant
 	name = "Right Charging Cord Implant"
-	path = /obj/item/organ/internal/cyberimp/arm/power_cord/right_arm
+	path = /obj/item/organ/cyberimp/arm/power_cord/right_arm
 
 /datum/augment_item/implant/r_arm/civilian_lighter
 	name = "Right Thumbtip Lighter"
 	cost = 2
-	path = /obj/item/organ/internal/cyberimp/arm/civilian_lighter/right_arm
+	path = /obj/item/organ/cyberimp/arm/civilian_lighter/right_arm
 
 /datum/augment_item/implant/r_arm/razor_claws
     name = "Right Razor Claws (Knife + Wirecutters)"
     cost = 4
-    path = /obj/item/organ/internal/cyberimp/arm/razor_claws/right_arm
+    path = /obj/item/organ/cyberimp/arm/razor_claws/right_arm
 
 /datum/augment_item/implant/r_arm/adjuster
 	name = "Right Adjuster Implant (Screwdriver + Wrench)"
 	cost = 4
-	path = /obj/item/organ/internal/cyberimp/arm/adjuster/right_arm
+	path = /obj/item/organ/cyberimp/arm/adjuster/right_arm
 
 /datum/augment_item/implant/r_arm/bureaucracy
 	name = "Right Bureaucrat's 'Jacent' Toolset Implant (4-colour Pen + Small Paper Bin + Approve/Deny Stamps)"
 	cost = 4
-	path = /obj/item/organ/internal/cyberimp/arm/bureaucracy/right_arm
+	path = /obj/item/organ/cyberimp/arm/bureaucracy/right_arm
 
 /datum/augment_item/implant/r_arm/cargo
 	name = "Right FTU 'Deckhand' toolset implant (Universal Scanner + Boxcutter)"
 	cost = 4
-	path = /obj/item/organ/internal/cyberimp/arm/cargo/right_arm
+	path = /obj/item/organ/cyberimp/arm/cargo/right_arm
 
 /datum/augment_item/implant/r_arm/civilian_barstaff
 	name = "Right Waitstaff's Toolset Implant (Serving Tray + Rag)"
 	cost = 4
-	path = /obj/item/organ/internal/cyberimp/arm/civilian_barstaff/right_arm
+	path = /obj/item/organ/cyberimp/arm/civilian_barstaff/right_arm
 
 /datum/augment_item/implant/r_arm/emt_triage
 	name = "Right Triage Actuator Implant (Drapes + Retractor + Hemostat)"
 	cost = 6
-	path = /obj/item/organ/internal/cyberimp/arm/emt_triage/right_arm
+	path = /obj/item/organ/cyberimp/arm/emt_triage/right_arm
 
 /datum/augment_item/implant/r_arm/blacksteel_forging
 	name = "Right Blacksteel 'Starforge' Toolset Implant (Forging Hammer + Tongs + Bellows)"
 	cost = 6
-	path = /obj/item/organ/internal/cyberimp/arm/blacksteel_forging/right_arm
+	path = /obj/item/organ/cyberimp/arm/blacksteel_forging/right_arm
 
 /datum/augment_item/implant/r_arm/arc_welder
 	name = "Right Shipbreaker's Toolset Implant (Arc Welder + Crowbar + Wrench)"
 	cost = 6
-	path = /obj/item/organ/internal/cyberimp/arm/arc_welder/right_arm
+	path = /obj/item/organ/cyberimp/arm/arc_welder/right_arm
 
 /datum/augment_item/implant/r_arm/electrical_toolset
 	name = "Right Electrical Toolset Implant (Screwdriver + Multitool + Wirecutters)"
 	cost = 8
-	path = /obj/item/organ/internal/cyberimp/arm/electrical_toolset/right_arm
+	path = /obj/item/organ/cyberimp/arm/electrical_toolset/right_arm
 
 /datum/augment_item/implant/r_arm/mining_drill
 	name = "Right Daiba Masterworks 'Burrower' Drill"
 	cost = 8
-	path = /obj/item/organ/internal/cyberimp/arm/mining_drill/right_arm
+	path = /obj/item/organ/cyberimp/arm/mining_drill/right_arm
 
 //EYES IMPLANTS
 /datum/augment_item/implant/eyes
@@ -157,4 +157,4 @@
 /datum/augment_item/implant/mouth/breathing_tube
 	name = "Breathing Tube"
 	cost = 2
-	path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube
+	path = /obj/item/organ/cyberimp/mouth/breathing_tube
diff --git a/modular_nova/modules/customization/modules/client/augment/organs.dm b/modular_nova/modules/customization/modules/client/augment/organs.dm
index f36feeca16a..42451d497d9 100644
--- a/modular_nova/modules/customization/modules/client/augment/organs.dm
+++ b/modular_nova/modules/customization/modules/client/augment/organs.dm
@@ -17,15 +17,15 @@
 
 /datum/augment_item/organ/heart/normal
 	name = "Organic heart"
-	path = /obj/item/organ/internal/heart
+	path = /obj/item/organ/heart
 
 /datum/augment_item/organ/heart/cybernetic
 	name = "Cybernetic heart"
-	path = /obj/item/organ/internal/heart/cybernetic
+	path = /obj/item/organ/heart/cybernetic
 
 /datum/augment_item/organ/heart/synth
 	name = "Hydraulic pump engine"
-	path =/obj/item/organ/internal/heart/synth
+	path =/obj/item/organ/heart/synth
 
 //LUNGS
 /datum/augment_item/organ/lungs
@@ -34,28 +34,28 @@
 
 /datum/augment_item/organ/lungs/normal
 	name = "Organic lungs"
-	path = /obj/item/organ/internal/lungs
+	path = /obj/item/organ/lungs
 
 /datum/augment_item/organ/lungs/hot
 	name = "Lungs Adapted to Heat"
-	path = /obj/item/organ/internal/lungs/hot
+	path = /obj/item/organ/lungs/hot
 	cost = 1
 
 /datum/augment_item/organ/lungs/cold
 	name = "Cold-Adapted Lungs"
-	path = /obj/item/organ/internal/lungs/cold
+	path = /obj/item/organ/lungs/cold
 	cost = 1
 /datum/augment_item/organ/lungs/toxin
 	name = "Lungs Adapted to Toxins"
-	path = /obj/item/organ/internal/lungs/toxin
+	path = /obj/item/organ/lungs/toxin
 	cost = 1
 /datum/augment_item/organ/lungs/oxy
 	name = "Low-Pressure Adapted Lungs"
-	path = /obj/item/organ/internal/lungs/oxy
+	path = /obj/item/organ/lungs/oxy
 	cost = 1
 /datum/augment_item/organ/lungs/cybernetic
 	name = "Cybernetic lungs"
-	path = /obj/item/organ/internal/lungs/cybernetic
+	path = /obj/item/organ/lungs/cybernetic
 
 //LIVERS
 /datum/augment_item/organ/liver
@@ -64,15 +64,15 @@
 
 /datum/augment_item/organ/liver/normal
 	name = "Organic Liver"
-	path = /obj/item/organ/internal/liver
+	path = /obj/item/organ/liver
 
 /datum/augment_item/organ/liver/cybernetic
 	name = "Cybernetic liver"
-	path = /obj/item/organ/internal/liver/cybernetic
+	path = /obj/item/organ/liver/cybernetic
 
 /datum/augment_item/organ/liver/synth
 	name = "Reagent processing unit"
-	path = /obj/item/organ/internal/liver/synth
+	path = /obj/item/organ/liver/synth
 
 //STOMACHES
 /datum/augment_item/organ/stomach
@@ -81,19 +81,19 @@
 
 /datum/augment_item/organ/stomach/normal
 	name = "Organic stomach"
-	path = /obj/item/organ/internal/stomach
+	path = /obj/item/organ/stomach
 
 /datum/augment_item/organ/stomach/cybernetic
 	name = "Cybernetic stomach"
-	path = /obj/item/organ/internal/stomach/cybernetic
+	path = /obj/item/organ/stomach/cybernetic
 
 /datum/augment_item/organ/stomach/lithovore
 	name = "Lithovore Stomach"
-	path = /obj/item/organ/internal/stomach/lithovore
+	path = /obj/item/organ/stomach/lithovore
 
 /datum/augment_item/organ/stomach/lithovore/apply(mob/living/carbon/human/H, character_setup = FALSE, datum/preferences/prefs)
 	if(prefs && ("Oversized" in prefs.all_quirks))
-		path = /obj/item/organ/internal/stomach/lithovore/oversized
+		path = /obj/item/organ/stomach/lithovore/oversized
 	return ..()
 
 //EYES
@@ -103,30 +103,30 @@
 
 /datum/augment_item/organ/eyes/normal
 	name = "Organic eyes"
-	path = /obj/item/organ/internal/eyes
+	path = /obj/item/organ/eyes
 
 /datum/augment_item/organ/eyes/cybernetic
 	name = "Cybernetic eyes"
-	path = /obj/item/organ/internal/eyes/robotic
+	path = /obj/item/organ/eyes/robotic
 
 /datum/augment_item/organ/eyes/cybernetic/moth
 	name = "Cybernetic moth eyes"
-	path = /obj/item/organ/internal/eyes/robotic/moth
+	path = /obj/item/organ/eyes/robotic/moth
 
 /datum/augment_item/organ/eyes/highlumi
 	name = "High-luminosity eyes"
-	path = /obj/item/organ/internal/eyes/robotic/glow
+	path = /obj/item/organ/eyes/robotic/glow
 	cost = 1
 
 /datum/augment_item/organ/eyes/highlumi/moth
 	name = "High Luminosity Moth Eyes"
-	path = /obj/item/organ/internal/eyes/robotic/glow/moth
+	path = /obj/item/organ/eyes/robotic/glow/moth
 	cost = 1
 
 /datum/augment_item/organ/eyes/binoculars
 	name = "Digital Magnification Optics (x3)"
 	cost = 4
-	path = /obj/item/organ/internal/eyes/robotic/binoculars
+	path = /obj/item/organ/eyes/robotic/binoculars
 
 //TONGUES
 /datum/augment_item/organ/tongue
@@ -135,40 +135,40 @@
 
 /datum/augment_item/organ/tongue/normal
 	name = "Organic tongue"
-	path = /obj/item/organ/internal/tongue/human
+	path = /obj/item/organ/tongue/human
 
 /datum/augment_item/organ/tongue/robo
 	name = "Robotic voicebox"
-	path = /obj/item/organ/internal/tongue/robot
+	path = /obj/item/organ/tongue/robot
 
 /datum/augment_item/organ/tongue/robo/forked
 	name = "Robotic lizard voicebox"
-	path = /obj/item/organ/internal/tongue/lizard/robot
+	path = /obj/item/organ/tongue/lizard/robot
 
 /datum/augment_item/organ/tongue/cybernetic
 	name = "Cybernetic tongue"
-	path = /obj/item/organ/internal/tongue/cybernetic
+	path = /obj/item/organ/tongue/cybernetic
 
 /datum/augment_item/organ/tongue/cybernetic/forked
 	name = "Forked cybernetic tongue"
-	path = /obj/item/organ/internal/tongue/lizard/cybernetic
+	path = /obj/item/organ/tongue/lizard/cybernetic
 
 /datum/augment_item/organ/tongue/forked
 	name = "Forked tongue"
-	path = /obj/item/organ/internal/tongue/lizard
+	path = /obj/item/organ/tongue/lizard
 
 /datum/augment_item/organ/tongue/forked/filterless
 	name = "Forked tongue (Without TTS Filter)"
-	path = /obj/item/organ/internal/tongue/lizard/filterless
+	path = /obj/item/organ/tongue/lizard/filterless
 
 //FF add, for auto-accent for anthropomorphs
 /datum/augment_item/organ/tongue/cat
 	name = "Cat tongue"
-	path = /obj/item/organ/internal/tongue/cat
+	path = /obj/item/organ/tongue/cat
 
 /datum/augment_item/organ/tongue/dog
 	name = "Dog tongue"
-	path = /obj/item/organ/internal/tongue/dog
+	path = /obj/item/organ/tongue/dog
 //FF add ends.
 
 //EARS
@@ -178,8 +178,8 @@
 
 /datum/augment_item/organ/ears/normal
 	name = "Organic ears"
-	path = /obj/item/organ/internal/ears
+	path = /obj/item/organ/ears
 
 /datum/augment_item/organ/ears/cybernetic
 	name = "Cybernetic ears"
-	path = /obj/item/organ/internal/ears/cybernetic
+	path = /obj/item/organ/ears/cybernetic
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm
index a4a198bad7a..cc8df2056ff 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories.dm
@@ -119,7 +119,7 @@
 /datum/sprite_accessory/moth_markings
 	key = "moth_markings"
 	generic = "Moth markings"
-	// organ_type = /obj/item/organ/external/moth_markings // UNCOMMENT THIS IF THEY EVER FIX IT UPSTREAM, CAN'T BE BOTHERED TO FIX IT MYSELF
+	// organ_type = /obj/item/organ/moth_markings // UNCOMMENT THIS IF THEY EVER FIX IT UPSTREAM, CAN'T BE BOTHERED TO FIX IT MYSELF
 
 /datum/sprite_accessory/moth_markings/is_hidden(mob/living/carbon/human/owner)
 	return FALSE
@@ -132,7 +132,7 @@
 	icon = 'modular_nova/master_files/icons/mob/species/podperson_hair.dmi'
 	key = "pod_hair"
 	recommended_species = list(SPECIES_PODPERSON, SPECIES_PODPERSON_WEAK)
-	organ_type = /obj/item/organ/external/pod_hair
+	organ_type = /obj/item/organ/pod_hair
 
 /datum/sprite_accessory/pod_hair/none
 	name = SPRITE_ACCESSORY_NONE
@@ -145,7 +145,7 @@
 	icon = 'icons/mob/human/species/mush_cap.dmi'
 	relevent_layers = list(BODY_ADJ_LAYER)
 	color_src = USE_ONE_COLOR
-	organ_type = /obj/item/organ/external/mushroom_cap
+	organ_type = /obj/item/organ/mushroom_cap
 	genetic = TRUE
 
 /datum/sprite_accessory/caps/is_hidden(mob/living/carbon/human/human)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm
index 912387a2406..0331162d5a4 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ears.dm
@@ -1,7 +1,7 @@
 /datum/sprite_accessory/ears
 	key = "ears"
 	generic = "Ears"
-	organ_type = /obj/item/organ/internal/ears/mutant
+	organ_type = /obj/item/organ/ears/mutant
 	relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER)
 	color_src = USE_MATRIXED_COLORS
 	genetic = TRUE
@@ -42,7 +42,7 @@
 
 /datum/sprite_accessory/ears/mutant
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/ears.dmi'
-	organ_type = /obj/item/organ/internal/ears/mutant
+	organ_type = /obj/item/organ/ears/mutant
 	color_src = USE_MATRIXED_COLORS
 	recommended_species = list(SPECIES_MAMMAL, SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_HUMANOID, SPECIES_GHOUL)
 	uses_emissives = TRUE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm
index cc1ca739b28..657041a02c8 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/fluff.dm
@@ -6,7 +6,7 @@
 	recommended_species = list(SPECIES_MOTH, SPECIES_MAMMAL, SPECIES_INSECT)
 	relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/fluff
+	organ_type = /obj/item/organ/fluff
 
 /datum/sprite_accessory/fluff/moth/none
 	name = SPRITE_ACCESSORY_NONE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm
index eebdc5cf6aa..5e4d7333a4f 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/frills.dm
@@ -4,7 +4,7 @@
 	default_color = DEFAULT_SECONDARY
 	relevent_layers = list(BODY_ADJ_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/frills
+	organ_type = /obj/item/organ/frills
 
 /datum/sprite_accessory/frills/is_hidden(mob/living/carbon/human/human)
 	if((human.head?.flags_inv & HIDEEARS) || (key in human.try_hide_mutant_parts))
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm
index 901cb572bd3..cef6945101b 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm
@@ -9,7 +9,7 @@
 	var/genital_location = GROIN
 
 /datum/sprite_accessory/genital/is_hidden(mob/living/carbon/human/target_mob)
-	var/obj/item/organ/external/genital/badonkers = target_mob?.get_organ_slot(associated_organ_slot)
+	var/obj/item/organ/genital/badonkers = target_mob?.get_organ_slot(associated_organ_slot)
 	if(!badonkers)
 		return TRUE
 	switch(badonkers.visibility_preference)
@@ -57,7 +57,7 @@
 
 /datum/sprite_accessory/genital/penis
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/penis_onmob.dmi'
-	organ_type = /obj/item/organ/external/genital/penis
+	organ_type = /obj/item/organ/genital/penis
 	associated_organ_slot = ORGAN_SLOT_PENIS
 	key = ORGAN_SLOT_PENIS
 	color_src = USE_MATRIXED_COLORS
@@ -133,7 +133,7 @@
 
 /datum/sprite_accessory/genital/testicles
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/testicles_onmob.dmi'
-	organ_type = /obj/item/organ/external/genital/testicles
+	organ_type = /obj/item/organ/genital/testicles
 	associated_organ_slot = ORGAN_SLOT_TESTICLES
 	key = ORGAN_SLOT_TESTICLES
 	always_color_customizable = TRUE
@@ -178,7 +178,7 @@
 
 /datum/sprite_accessory/genital/vagina
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/vagina_onmob.dmi'
-	organ_type = /obj/item/organ/external/genital/vagina
+	organ_type = /obj/item/organ/genital/vagina
 	associated_organ_slot = ORGAN_SLOT_VAGINA
 	key = ORGAN_SLOT_VAGINA
 	always_color_customizable = TRUE
@@ -229,7 +229,7 @@
 	name = "Cloaca"
 
 /datum/sprite_accessory/genital/womb
-	organ_type = /obj/item/organ/external/genital/womb
+	organ_type = /obj/item/organ/genital/womb
 	associated_organ_slot = ORGAN_SLOT_WOMB
 	key = ORGAN_SLOT_WOMB
 	genetic = TRUE
@@ -246,7 +246,7 @@
 	color_src = null
 
 /datum/sprite_accessory/genital/anus
-	organ_type = /obj/item/organ/external/genital/anus
+	organ_type = /obj/item/organ/genital/anus
 	associated_organ_slot = ORGAN_SLOT_ANUS
 	key = ORGAN_SLOT_ANUS
 	genetic = TRUE
@@ -264,7 +264,7 @@
 
 /datum/sprite_accessory/genital/breasts
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/genitals/breasts_onmob.dmi'
-	organ_type = /obj/item/organ/external/genital/breasts
+	organ_type = /obj/item/organ/genital/breasts
 	associated_organ_slot = ORGAN_SLOT_BREASTS
 	key = ORGAN_SLOT_BREASTS
 	always_color_customizable = TRUE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm
index bbf4187fe16..b3d2be38f42 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/head_accessory.dm
@@ -4,7 +4,7 @@
 	generic = "Head Accessory"
 	relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/head_accessory
+	organ_type = /obj/item/organ/head_accessory
 
 /datum/sprite_accessory/head_accessory/none
 	name = SPRITE_ACCESSORY_NONE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm
index eeea4204e80..6e460d035d9 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/horns.dm
@@ -5,7 +5,7 @@
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/horns.dmi'
 	default_color = "#555555"
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/horns
+	organ_type = /obj/item/organ/horns
 
 /datum/sprite_accessory/horns/is_hidden(mob/living/carbon/human/wearer)
 	if(!wearer.head && !wearer.wear_mask)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm
index e75940fb25b..fc5551307bd 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/ipc.dm
@@ -8,7 +8,7 @@
 	key = MUTANT_SYNTH_SCREEN
 	generic = "Screen"
 	relevent_layers = list(BODY_FRONT_UNDER_CLOTHES)
-	organ_type = /obj/item/organ/external/synth_screen
+	organ_type = /obj/item/organ/synth_screen
 
 /datum/sprite_accessory/screen/none
 	name = SPRITE_ACCESSORY_NONE
@@ -151,7 +151,7 @@
 	generic = "Antenna"
 	relevent_layers = list(BODY_ADJ_LAYER)
 	genetic = FALSE
-	organ_type = /obj/item/organ/external/synth_antenna
+	organ_type = /obj/item/organ/synth_antenna
 
 /datum/sprite_accessory/antenna/is_hidden(mob/living/carbon/human/wearer)
 	if(!wearer.head)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm
index 9d0102a7ece..823be356de3 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/moth_antennae.dm
@@ -3,7 +3,7 @@
 	key = "moth_antennae"
 	relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/antennae
+	organ_type = /obj/item/organ/antennae
 
 /datum/sprite_accessory/moth_antennae/is_hidden(mob/living/carbon/human/wearer)
 	if(!wearer.head)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm
index 4d8a2168b63..9ca2eb48970 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/neck_accessory.dm
@@ -4,7 +4,7 @@
 	generic = "Neck Accessory"
 	relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/neck_accessory
+	organ_type = /obj/item/organ/neck_accessory
 
 /datum/sprite_accessory/neck_accessory/none
 	name = SPRITE_ACCESSORY_NONE
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm
index 37d2f3d78a5..d56ec101489 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm
@@ -5,7 +5,7 @@
 	color_src = USE_ONE_COLOR
 	relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/skrell_hair
+	organ_type = /obj/item/organ/skrell_hair
 
 /datum/sprite_accessory/skrell_hair/is_hidden(mob/living/carbon/human/wearer)
 	if((wearer.head?.flags_inv & HIDEHAIR) || (wearer.wear_mask?.flags_inv & HIDEHAIR))
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm
index f71a65adb36..937d515399b 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/snout.dm
@@ -3,7 +3,7 @@
 	generic = "Snout"
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/lizard_snouts.dmi'
 	flags_for_organ = SPRITE_ACCESSORY_USE_MUZZLED_SPRITE
-	organ_type = /obj/item/organ/external/snout
+	organ_type = /obj/item/organ/snout
 	recommended_species = list(SPECIES_MAMMAL, SPECIES_LIZARD, SPECIES_UNATHI, SPECIES_LIZARD_ASH, SPECIES_LIZARD_SILVER)
 	relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
 	genetic = TRUE
@@ -14,7 +14,7 @@
 
 	return FALSE
 
-/obj/item/organ/external/snout
+/obj/item/organ/snout
 	mutantpart_key = "snout"
 	mutantpart_info = list(MUTANT_INDEX_NAME = "None", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF"))
 	external_bodyshapes = NONE // We don't actually want this to have  by default, since some of them don't apply that.
@@ -30,7 +30,7 @@
 	return !sprite_datum.is_hidden(human)
 
 
-/obj/item/organ/external/snout/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/snout/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	if(sprite_accessory_flags & SPRITE_ACCESSORY_USE_MUZZLED_SPRITE)
 		external_bodyshapes |= BODYSHAPE_SNOUTED
 	if(sprite_accessory_flags & SPRITE_ACCESSORY_USE_ALT_FACEWEAR_LAYER)
@@ -38,14 +38,14 @@
 
 	return ..()
 
-/obj/item/organ/external/snout/top
+/obj/item/organ/snout/top
 	bodypart_overlay = /datum/bodypart_overlay/mutant/snout/top
 
 /datum/bodypart_overlay/mutant/snout/top
 	layers = EXTERNAL_FRONT
 
 
-/obj/item/organ/external/snout/top_adj
+/obj/item/organ/snout/top_adj
 	bodypart_overlay = /datum/bodypart_overlay/mutant/snout/top_adj
 
 /datum/bodypart_overlay/mutant/snout/top_adj
@@ -117,28 +117,28 @@
 	icon_state = "bug"
 	flags_for_organ = NONE
 	color_src = USE_MATRIXED_COLORS
-	organ_type = /obj/item/organ/external/snout/top_adj
+	organ_type = /obj/item/organ/snout/top_adj
 
 /datum/sprite_accessory/snouts/mammal/bug_low_eyes
 	name = "Bug (Eyes Below Hair)"
 	icon_state = "bug_low_eyes"
 	flags_for_organ = NONE
 	color_src = USE_MATRIXED_COLORS
-	organ_type = /obj/item/organ/external/snout/top_adj
+	organ_type = /obj/item/organ/snout/top_adj
 
 /datum/sprite_accessory/snouts/mammal/bug_no_ant
 	name = "Bug (No Antennae, Below Hair)"
 	icon_state = "bug_no_ant"
 	flags_for_organ = NONE
 	color_src = USE_MATRIXED_COLORS
-	organ_type = /obj/item/organ/external/snout/top_adj
+	organ_type = /obj/item/organ/snout/top_adj
 
 /datum/sprite_accessory/snouts/mammal/bug_no_ant_low_eyes
 	name = "Bug (No Antennae, Below Hair, Eyes Below Hair)"
 	icon_state = "bug_no_ant_low_eyes"
 	flags_for_organ = NONE
 	color_src = USE_MATRIXED_COLORS
-	organ_type = /obj/item/organ/external/snout/top_adj
+	organ_type = /obj/item/organ/snout/top_adj
 
 /datum/sprite_accessory/snouts/mammal/bug_no_eyes
 	name = "Bug (No eyes)"
@@ -288,7 +288,7 @@
 
 /datum/sprite_accessory/snouts/mammal/top
 	flags_for_organ = SPRITE_ACCESSORY_USE_MUZZLED_SPRITE | SPRITE_ACCESSORY_USE_ALT_FACEWEAR_LAYER
-	organ_type = /obj/item/organ/external/snout/top
+	organ_type = /obj/item/organ/snout/top
 	relevent_layers = list(BODY_FRONT_LAYER)
 
 /datum/sprite_accessory/snouts/mammal/top/fbird
@@ -304,7 +304,7 @@
 	icon_state = "fbug"
 	flags_for_organ = NONE
 	color_src = USE_MATRIXED_COLORS
-	organ_type = /obj/item/organ/external/snout/top_adj
+	organ_type = /obj/item/organ/snout/top_adj
 	relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
 
 /datum/sprite_accessory/snouts/mammal/top/bug_no_ant
@@ -312,7 +312,7 @@
 	icon_state = "fbug_no_ant"
 	flags_for_organ = NONE
 	color_src = USE_MATRIXED_COLORS
-	organ_type = /obj/item/organ/external/snout/top_adj
+	organ_type = /obj/item/organ/snout/top_adj
 	relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
 
 /datum/sprite_accessory/snouts/mammal/top/fdragonfly
@@ -320,7 +320,7 @@
 	icon_state = "fdragonfly"
 	flags_for_organ = NONE
 	color_src = USE_MATRIXED_COLORS
-	organ_type = /obj/item/organ/external/snout/top_adj
+	organ_type = /obj/item/organ/snout/top_adj
 	relevent_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER)
 
 /datum/sprite_accessory/snouts/mammal/top/felephant
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm
index fb2cf49ad70..e78b1e19ffe 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/spines.dm
@@ -5,7 +5,7 @@
 	recommended_species = list(SPECIES_LIZARD, SPECIES_UNATHI, SPECIES_LIZARD_ASH, SPECIES_LIZARD_SILVER)
 	relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/spines
+	organ_type = /obj/item/organ/spines
 
 /datum/sprite_accessory/spines/is_hidden(mob/living/carbon/human/wearer)
 	if(wearer.w_uniform)
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
index 986e9886cf9..4e8dfc4392f 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/synthliz.dm
@@ -146,7 +146,7 @@
 	taur_mode = STYLE_TAUR_PAW
 	recommended_species = list()
 	genetic = FALSE
-	organ_type = /obj/item/organ/external/taur_body/horselike/synth
+	organ_type = /obj/item/organ/taur_body/horselike/synth
 
 /datum/sprite_accessory/taur/synthliz/inv
 	name = "Cybernetic Lizard (Inverted)"
@@ -182,4 +182,4 @@
 	name = "Cybernetic Naga"
 	icon_state = "synthnaga"
 	taur_mode = STYLE_TAUR_SNAKE
-	organ_type = /obj/item/organ/external/taur_body/serpentine/synth
+	organ_type = /obj/item/organ/taur_body/serpentine/synth
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm
index 99a98131306..ff75a21e44e 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/tails.dm
@@ -1,7 +1,7 @@
 /datum/sprite_accessory/tails
 	key = "tail"
 	generic = "Tail"
-	organ_type = /obj/item/organ/external/tail
+	organ_type = /obj/item/organ/tail
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
 	relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
 	genetic = TRUE
@@ -37,7 +37,7 @@
 /datum/sprite_accessory/tails/lizard
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
 	recommended_species = list(SPECIES_LIZARD, SPECIES_LIZARD_ASH, SPECIES_MAMMAL, SPECIES_UNATHI, SPECIES_LIZARD_SILVER)
-	organ_type = /obj/item/organ/external/tail/lizard
+	organ_type = /obj/item/organ/tail/lizard
 
 /datum/sprite_accessory/tails/lizard/short/twotone
 	name = "Short (Two-Tone)"
@@ -46,14 +46,14 @@
 
 /datum/sprite_accessory/tails/human
 	recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_MAMMAL, SPECIES_GHOUL)
-	organ_type = /obj/item/organ/external/tail/cat
+	organ_type = /obj/item/organ/tail/cat
 
 /datum/sprite_accessory/tails/felinid/cat
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
 	icon_state = "cat"
 	color_src = USE_ONE_COLOR
 	recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_MAMMAL, SPECIES_GHOUL)
-	organ_type = /obj/item/organ/external/tail/cat
+	organ_type = /obj/item/organ/tail/cat
 
 /datum/sprite_accessory/tails/human/monkeyColorable
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
@@ -66,16 +66,16 @@
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/tails.dmi'
 	icon_state = "monkey"
 	recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_MAMMAL, SPECIES_MONKEY, SPECIES_GHOUL)
-	organ_type = /obj/item/organ/external/tail/monkey
+	organ_type = /obj/item/organ/tail/monkey
 
 /datum/sprite_accessory/tails/mammal
 	icon_state = "none"
 	recommended_species = list(SPECIES_MAMMAL,SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_HUMANOID, SPECIES_GHOUL)
-	organ_type = /obj/item/organ/external/tail/fluffy/no_wag
+	organ_type = /obj/item/organ/tail/fluffy/no_wag
 	color_src = USE_MATRIXED_COLORS
 
 /datum/sprite_accessory/tails/mammal/wagging
-	organ_type = /obj/item/organ/external/tail/fluffy
+	organ_type = /obj/item/organ/tail/fluffy
 	flags_for_organ = SPRITE_ACCESSORY_WAG_ABLE
 
 /datum/sprite_accessory/tails/mammal/wagging/akula
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm
index 86f9ebba93b..9d9fbf1d948 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm
@@ -24,7 +24,7 @@
 	center = TRUE
 	relevent_layers = list(BODY_FRONT_LAYER, BODY_ADJ_LAYER, BODY_FRONT_UNDER_CLOTHES, ABOVE_BODY_FRONT_HEAD_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/taur_body/horselike // horselike by default, dont forget to override if you make another bodytype
+	organ_type = /obj/item/organ/taur_body/horselike // horselike by default, dont forget to override if you make another bodytype
 	flags_for_organ = SPRITE_ACCESSORY_HIDE_SHOES
 	/// Must be a single specific tauric suit variation bitflag. Don't do FLAG_1|FLAG_2
 	var/taur_mode = NONE
@@ -32,7 +32,7 @@
 	var/alt_taur_mode = NONE
 
 /datum/sprite_accessory/taur/is_hidden(mob/living/carbon/human/target)
-	var/obj/item/organ/external/taur_body/taur_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+	var/obj/item/organ/taur_body/taur_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
 	if (taur_body?.hide_self)
 		return TRUE
 
@@ -86,7 +86,7 @@
 	icon_state = "deer"
 	taur_mode = STYLE_TAUR_HOOF
 	alt_taur_mode = STYLE_TAUR_PAW
-	organ_type = /obj/item/organ/external/taur_body/horselike/deer
+	organ_type = /obj/item/organ/taur_body/horselike/deer
 
 /datum/sprite_accessory/taur/drake
 	name = "Drake"
@@ -100,12 +100,12 @@
 /datum/sprite_accessory/taur/tarantula
 	name = "Tarantula"
 	icon_state = "tarantula"
-	organ_type = /obj/item/organ/external/taur_body/spider
+	organ_type = /obj/item/organ/taur_body/spider
 
 /datum/sprite_accessory/taur/drider
 	name = "Drider"
 	icon_state = "drider"
-	organ_type = /obj/item/organ/external/taur_body/spider
+	organ_type = /obj/item/organ/taur_body/spider
 
 /datum/sprite_accessory/taur/eevee
 	name = "Eevee"
@@ -122,7 +122,7 @@
 	name = "Naga"
 	icon_state = "naga"
 	taur_mode = STYLE_TAUR_SNAKE
-	organ_type = /obj/item/organ/external/taur_body/serpentine
+	organ_type = /obj/item/organ/taur_body/serpentine
 
 /datum/sprite_accessory/taur/naga/striped
 	name = "Naga, Striped"
@@ -149,7 +149,7 @@
 	icon_state = "tentacle"
 	taur_mode = STYLE_TAUR_SNAKE
 	color_src = USE_ONE_COLOR
-	organ_type = /obj/item/organ/external/taur_body/tentacle
+	organ_type = /obj/item/organ/taur_body/tentacle
 
 /datum/sprite_accessory/taur/tentacle/alt
 	name = "Tentacle, Alt"
@@ -172,20 +172,20 @@
 	icon_state = "goop"
 	taur_mode = STYLE_TAUR_SNAKE
 	color_src = USE_ONE_COLOR
-	organ_type = /obj/item/organ/external/taur_body/blob
+	organ_type = /obj/item/organ/taur_body/blob
 
 /datum/sprite_accessory/taur/slime
 	name = "Slime"
 	icon_state = "slime"
 	taur_mode = STYLE_TAUR_SNAKE
 	color_src = USE_ONE_COLOR
-	organ_type = /obj/item/organ/external/taur_body/blob
+	organ_type = /obj/item/organ/taur_body/blob
 
 /datum/sprite_accessory/taur/biglegs
 	name = "Big Legs"
 	icon_state = "biglegs"
 	taur_mode = STYLE_TAUR_PAW
-	organ_type = /obj/item/organ/external/taur_body/anthro
+	organ_type = /obj/item/organ/taur_body/anthro
 
 /datum/sprite_accessory/taur/biglegs/stanced
 	name = "Big Legs, Stanced"
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm
index 6459c622c4f..04d74e3cd6a 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/vox.dm
@@ -122,7 +122,7 @@
 	name = "Vox Tail"
 	icon_state = "vox"
 	recommended_species = list(SPECIES_VOX)
-	organ_type = /obj/item/organ/external/tail/lizard
+	organ_type = /obj/item/organ/tail/lizard
 	spine_key = SPINE_KEY_VOX
 
 //The tail markings
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm
index cee2890791b..ea7575bafcf 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/wings.dm
@@ -11,7 +11,7 @@
 	key = "wings"
 	color_src = USE_ONE_COLOR
 	recommended_species = list(SPECIES_HUMAN, SPECIES_SYNTH, SPECIES_FELINE, SPECIES_LIZARD, SPECIES_MAMMAL)
-	organ_type = /obj/item/organ/external/wings
+	organ_type = /obj/item/organ/wings
 	relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER, BODY_ADJ_LAYER)
 	genetic = TRUE
 
@@ -308,7 +308,7 @@
 	icon = 'modular_nova/master_files/icons/mob/sprite_accessory/moth_wings.dmi' // Needs new icon to suit new naming convention
 	default_color = "#FFFFFF"
 	recommended_species = list(SPECIES_MOTH, SPECIES_MAMMAL, SPECIES_INSECT) // Mammals too, I guess. They wont get flight though, see the wing organs for that logic
-	organ_type = /obj/item/organ/external/wings/moth
+	organ_type = /obj/item/organ/wings/moth
 	relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
 
 /datum/sprite_accessory/wings/moth/none
diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm
index 21dd660baf1..e4385cd5e9b 100644
--- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm
+++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/xeno.dm
@@ -5,7 +5,7 @@
 	color_src = USE_ONE_COLOR
 	relevent_layers = list(BODY_BEHIND_LAYER, BODY_FRONT_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/xenodorsal
+	organ_type = /obj/item/organ/xenodorsal
 
 /datum/sprite_accessory/xenodorsal/none
 	name = SPRITE_ACCESSORY_NONE
@@ -48,7 +48,7 @@
 	key = "xenohead"
 	relevent_layers = list(BODY_ADJ_LAYER)
 	genetic = TRUE
-	organ_type = /obj/item/organ/external/xenohead
+	organ_type = /obj/item/organ/xenohead
 
 /datum/sprite_accessory/xenohead/none
 	name = SPRITE_ACCESSORY_NONE
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm
index a6706df18f7..a8fa6841838 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm
@@ -14,12 +14,12 @@
 	update_external_organs_modsuit_status(is_on)
 	wearer.update_body_parts(TRUE)
 
-/obj/item/mod/control/deploy(mob/user, obj/item/part)
+/obj/item/mod/control/deploy(mob/user, obj/item/part, instant = FALSE)
 	. = ..()
 	update_external_organs_modsuit_status(active)
 	wearer.update_body_parts(TRUE)
 
-/obj/item/mod/control/retract(mob/user, obj/item/part)
+/obj/item/mod/control/retract(mob/user, obj/item/part, instant = FALSE)
 	. = ..()
 	update_external_organs_modsuit_status(FALSE)
 	wearer.update_body_parts(TRUE)
@@ -30,8 +30,9 @@
 	if(!wearer?.organs)
 		return
 
-	for(var/obj/item/organ/external/to_update in wearer.organs)
-		to_update.bodypart_overlay.set_modsuit_status(status)
+	for(var/obj/item/organ/to_update in wearer.organs)
+		if(to_update.organ_flags & ORGAN_EXTERNAL)
+			to_update.bodypart_overlay.set_modsuit_status(status)
 
 
 // Tail hardlight
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm
index 79f1ec74d45..c173040f884 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/human.dm
@@ -16,7 +16,7 @@
 						continue
 					if(G.is_hidden(src))
 						continue
-					var/obj/item/organ/external/genital/ORG = get_organ_slot(G.associated_organ_slot)
+					var/obj/item/organ/genital/ORG = get_organ_slot(G.associated_organ_slot)
 					if(!ORG)
 						continue
 					line += ORG.get_description_string(G)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm
index b38ab3038a4..3fa84861eff 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species.dm
@@ -43,11 +43,11 @@ GLOBAL_LIST_EMPTY(customizable_races)
 /datum/species/proc/gain_oversized_organs(mob/living/carbon/human/human_holder, datum/quirk/oversized/oversized_quirk)
 	if(isnull(human_holder.loc))
 		return // preview characters don't need funny organs, prevents a runtime
-	var/obj/item/organ/internal/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(old_stomach?.is_oversized) // don't override augments that are already oversized. Need to do this because augments get applied first, so quirks will overwrite them. TODO: Maybe the augments middleware should be renamed so it gets applied last.
 		return
 
-	var/obj/item/organ/internal/stomach/oversized/new_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE GUTS! RIP AND TEAR YOUR HUGE GUTS!
+	var/obj/item/organ/stomach/oversized/new_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE GUTS! RIP AND TEAR YOUR HUGE GUTS!
 	oversized_quirk.old_organs += list(old_stomach)
 
 	new_stomach.Insert(human_holder, special = TRUE)
@@ -81,7 +81,7 @@ GLOBAL_LIST_EMPTY(customizable_races)
 /datum/species/mush
 	mutant_bodyparts = list()
 
-/datum/species/vampire
+/datum/species/human/vampire
 	mutant_bodyparts = list()
 
 /datum/species/plasmaman
@@ -149,7 +149,7 @@ GLOBAL_LIST_EMPTY(customizable_races)
 
 	if(noggin && !(HAS_TRAIT(species_human, TRAIT_HUSK)))
 		if(noggin.head_flags & HEAD_EYESPRITES)
-			var/obj/item/organ/internal/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES)
+			var/obj/item/organ/eyes/eye_organ = species_human.get_organ_slot(ORGAN_SLOT_EYES)
 
 			if(eye_organ)
 				eye_organ.refresh(call_update = FALSE)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm
index 7ed4bbfb863..a6005291c50 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/akula.dm
@@ -16,11 +16,11 @@
 		OFFSET_HEAD = list(0, 2),
 		OFFSET_HAIR = list(0, 1),
 	)
-	mutantbrain = /obj/item/organ/internal/brain/carp/akula
-	mutantheart = /obj/item/organ/internal/heart/carp/akula
-	mutantlungs = /obj/item/organ/internal/lungs/carp/akula
-	mutanttongue = /obj/item/organ/internal/tongue/carp/akula
-	mutanteyes = /obj/item/organ/internal/eyes/akula
+	mutantbrain = /obj/item/organ/brain/carp/akula
+	mutantheart = /obj/item/organ/heart/carp/akula
+	mutantlungs = /obj/item/organ/lungs/carp/akula
+	mutanttongue = /obj/item/organ/tongue/carp/akula
+	mutanteyes = /obj/item/organ/eyes/akula
 	inherent_traits = list(
 		TRAIT_ADVANCEDTOOLUSER,
 		TRAIT_CAN_STRIP,
@@ -169,42 +169,42 @@
 	limb_overlay = null // no carpskin
 
 //Eyes
-/obj/item/organ/internal/eyes/akula
+/obj/item/organ/eyes/akula
 	// Eyes over hair as bandaid for the low amounts of head matching hair
 	eyes_layer = HAIR_LAYER-0.1
 
 //Brain
-/obj/item/organ/internal/brain/carp/akula
+/obj/item/organ/brain/carp/akula
 	name = "azulean brain"
 
-/obj/item/organ/internal/brain/carp/akula/Initialize(mapload)
+/obj/item/organ/brain/carp/akula/Initialize(mapload)
 	. = ..()
 	RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp/akula)
 
 //Heart
-/obj/item/organ/internal/heart/carp/akula
+/obj/item/organ/heart/carp/akula
 	name = "azulean heart"
 	organ_traits = list()
 
-/obj/item/organ/internal/heart/carp/akula/Initialize(mapload)
+/obj/item/organ/heart/carp/akula/Initialize(mapload)
 	. = ..()
 	RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp/akula)
 
 //Tongue
-/obj/item/organ/internal/tongue/carp/akula
+/obj/item/organ/tongue/carp/akula
 	name = "azulean jaws"
 	liked_foodtypes = SEAFOOD | RAW
 	disliked_foodtypes = CLOTH | DAIRY
 	toxic_foodtypes = TOXIC
 
-/obj/item/organ/internal/tongue/carp/akula/Initialize(mapload)
+/obj/item/organ/tongue/carp/akula/Initialize(mapload)
 	. = ..()
 	RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
 	AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp/akula)
 
-/obj/item/organ/internal/tongue/carp/akula/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
+/obj/item/organ/tongue/carp/akula/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags)
 	. = ..()
 	if(!ishuman(tongue_owner))
 		return
@@ -215,12 +215,12 @@
 	rec_species.update_no_equip_flags(tongue_owner, initial(rec_species.no_equip_flags))
 
 //Lungs
-/obj/item/organ/internal/lungs/carp/akula
+/obj/item/organ/lungs/carp/akula
 	name = "azulean lungs"
-	safe_oxygen_min = /obj/item/organ/internal/lungs::safe_oxygen_min
-	safe_oxygen_max = /obj/item/organ/internal/lungs::safe_oxygen_max
+	safe_oxygen_min = /obj/item/organ/lungs::safe_oxygen_min
+	safe_oxygen_max = /obj/item/organ/lungs::safe_oxygen_max
 
-/obj/item/organ/internal/lungs/carp/akula/Initialize(mapload)
+/obj/item/organ/lungs/carp/akula/Initialize(mapload)
 	. = ..()
 	REMOVE_TRAIT(src, TRAIT_SPACEBREATHING, REF(src))
 	RemoveElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/carp)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm
index 29df861b8bf..a05143348d8 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/aquatic.dm
@@ -10,7 +10,7 @@
 	)
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
 	mutant_bodyparts = list()
-	mutanttongue = /obj/item/organ/internal/tongue/aquatic
+	mutanttongue = /obj/item/organ/tongue/aquatic
 	payday_modifier = 1.0
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
 	examine_limb_id = SPECIES_AKULA
@@ -33,7 +33,7 @@
 		"wings" = list("None", FALSE),
 	)
 
-/obj/item/organ/internal/tongue/aquatic
+/obj/item/organ/tongue/aquatic
 	liked_foodtypes = SEAFOOD | MEAT | FRUIT | GORE
 	disliked_foodtypes = CLOTH | GROSS
 	toxic_foodtypes = TOXIC
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm
index 76c3bb57fec..de6be921592 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/dwarf.dm
@@ -9,7 +9,7 @@
 		TRAIT_LITERATE,
 		TRAIT_USES_SKINTONES,
 	)
-	mutanttongue = /obj/item/organ/internal/tongue/dwarven
+	mutanttongue = /obj/item/organ/tongue/dwarven
 	skinned_type = /obj/item/stack/sheet/animalhide/human
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
 	payday_modifier = 1.0
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm
index d346a985f48..9975eb59cc7 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/ghoul.dm
@@ -4,7 +4,7 @@
 	examine_limb_id = SPECIES_GHOUL
 	can_have_genitals = FALSE //WHY WOULD YOU WANT TO FUCK ONE OF THESE THINGS?
 	mutant_bodyparts = list("ghoulcolor" = "Tan Necrotic")
-	mutanttongue = /obj/item/organ/internal/tongue/ghoul
+	mutanttongue = /obj/item/organ/tongue/ghoul
 	inherent_traits = list(
 		TRAIT_ADVANCEDTOOLUSER,
 		TRAIT_RADIMMUNE,
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm
index 0bac094f620..66a45750e7d 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/_organ_corruption.dm
@@ -12,7 +12,7 @@
 /datum/component/organ_corruption
 	dupe_mode = COMPONENT_DUPE_UNIQUE
 	/// The type of organ affected by this specific type of organ corruption.
-	var/corruptable_organ_type = /obj/item/organ/internal
+	var/corruptable_organ_type = /obj/item/organ
 	/// If this type of organ has a unique sprite for what its corrupted
 	/// version should look like, this will be the icon file it will be pulled
 	/// from.
@@ -77,7 +77,7 @@
  * Arguments:
  * * corruption_target - The organ that will get corrupted.
  */
-/datum/component/organ_corruption/proc/corrupt_organ(obj/item/organ/internal/corruption_target)
+/datum/component/organ_corruption/proc/corrupt_organ(obj/item/organ/corruption_target)
 	SHOULD_CALL_PARENT(TRUE)
 	if(!corruption_target)
 		return FALSE
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm
index f83b2caaec5..c361c5d9957 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/atrophied_lungs.dm
@@ -1,4 +1,4 @@
 
 /datum/component/organ_corruption/lungs
-	corruptable_organ_type = /obj/item/organ/internal/lungs
+	corruptable_organ_type = /obj/item/organ/lungs
 	corrupted_prefix = "atrophied"
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm
index 27c937ef2e4..e703285a25b 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_liver.dm
@@ -2,7 +2,7 @@
 #define MINIMUM_BLOOD_REGENING_REAGENT_RATIO 0.75
 
 /datum/component/organ_corruption/liver
-	corruptable_organ_type = /obj/item/organ/internal/liver
+	corruptable_organ_type = /obj/item/organ/liver
 	corrupted_icon_state = "liver"
 
 
@@ -23,7 +23,7 @@
 /datum/component/organ_corruption/liver/UnregisterFromParent()
 	. = ..()
 
-	var/obj/item/organ/internal/liver/parent_liver = parent
+	var/obj/item/organ/liver/parent_liver = parent
 
 	if(parent_liver.owner)
 		UnregisterSignal(parent_liver.owner, COMSIG_GLASS_DRANK)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm
index 3af433695a9..7cd311e3322 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_stomach.dm
@@ -1,9 +1,9 @@
 /datum/component/organ_corruption/stomach
-	corruptable_organ_type = /obj/item/organ/internal/stomach
+	corruptable_organ_type = /obj/item/organ/stomach
 	corrupted_icon_state = "stomach"
 
 
-/datum/component/organ_corruption/stomach/corrupt_organ(obj/item/organ/internal/corruption_target)
+/datum/component/organ_corruption/stomach/corrupt_organ(obj/item/organ/corruption_target)
 	. = ..()
 
 	if(!.)
@@ -18,7 +18,7 @@
 	UnregisterSignal(parent, COMSIG_STOMACH_AFTER_EAT)
 
 
-/datum/component/organ_corruption/stomach/proc/on_stomach_after_eat(obj/item/organ/internal/stomach/tummy, atom/edible)
+/datum/component/organ_corruption/stomach/proc/on_stomach_after_eat(obj/item/organ/stomach/tummy, atom/edible)
 	SIGNAL_HANDLER
 
 	if(!istype(edible, /obj/item/food))
@@ -29,7 +29,7 @@
 	if(BLOODY & eaten.foodtypes) // They're good if it's BLOODY food, they're less good if it isn't.
 		return
 
-	var/obj/item/organ/internal/parent_organ = parent
+	var/obj/item/organ/parent_organ = parent
 
 	if(parent_organ.owner && HAS_TRAIT(parent_organ.owner, TRAIT_AGEUSIA)) // They don't taste anything, their body shouldn't react strongly to the taste of that stuff.
 		return
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm
index 8363af7dd1f..59755827851 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/corrupted_tongue.dm
@@ -4,19 +4,19 @@
 #define BLOOD_DRAIN_MULTIPLIER_CKEY 1.15
 
 /datum/component/organ_corruption/tongue
-	corruptable_organ_type = /obj/item/organ/internal/tongue
+	corruptable_organ_type = /obj/item/organ/tongue
 	corrupted_icon_state = "tongue"
 	/// The item action given to the tongue once it was corrupted.
 	var/tongue_action_type = /datum/action/cooldown/hemophage/drain_victim
 
 
-/datum/component/organ_corruption/tongue/corrupt_organ(obj/item/organ/internal/corruption_target)
+/datum/component/organ_corruption/tongue/corrupt_organ(obj/item/organ/corruption_target)
 	. = ..()
 
 	if(!.)
 		return
 
-	var/obj/item/organ/internal/tongue/corrupted_tongue = corruption_target
+	var/obj/item/organ/tongue/corrupted_tongue = corruption_target
 	corrupted_tongue.liked_foodtypes = BLOODY
 	corrupted_tongue.disliked_foodtypes = NONE
 
@@ -126,7 +126,7 @@
 	// if you drained from a human with a client, congrats
 	var/drained_multiplier = (is_target_human_with_client ? BLOOD_DRAIN_MULTIPLIER_CKEY : 1)
 
-	var/obj/item/organ/internal/stomach/hemophage/stomach_reference = hemophage.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/hemophage/stomach_reference = hemophage.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(isnull(stomach_reference))
 		victim.blood_volume = clamp(victim.blood_volume - drained_blood, 0, BLOOD_VOLUME_MAXIMUM)
 
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm
index 9feaeb41ca9..6fe324cb21b 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_actions.dm
@@ -26,7 +26,7 @@
 	if(!owner || !ishuman(owner) || !target)
 		return
 
-	var/obj/item/organ/internal/heart/hemophage/tumor = target
+	var/obj/item/organ/heart/hemophage/tumor = target
 	if(!tumor || !istype(tumor)) // This shouldn't happen, but you can never be too careful.
 		return
 
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm
index 43005aa433f..66c2d059250 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_organs.dm
@@ -7,19 +7,19 @@
 #define ORGAN_CORRUPTION_INSTANT 0
 
 
-/obj/item/organ/internal/liver/hemophage
+/obj/item/organ/liver/hemophage
 	name = "liver" // Name change is handled by /datum/component/organ_corruption/corrupt_organ()
 	desc = GENERIC_CORRUPTED_ORGAN_DESC
 	icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi'
 	organ_flags = ORGAN_EDIBLE | ORGAN_TUMOR_CORRUPTED
 
 
-/obj/item/organ/internal/liver/hemophage/Initialize(mapload)
+/obj/item/organ/liver/hemophage/Initialize(mapload)
 	. = ..()
 
 	AddComponent(/datum/component/organ_corruption/liver, time_to_corrupt = ORGAN_CORRUPTION_INSTANT)
 
-/obj/item/organ/internal/liver/hemophage/handle_chemical(mob/living/carbon/affected_mob, datum/reagent/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/hemophage/handle_chemical(mob/living/carbon/affected_mob, datum/reagent/chem, seconds_per_tick, times_fired)
 	. = ..()
 
 	// parent returned COMSIG_MOB_STOP_REAGENT_CHECK or we are failing
@@ -67,21 +67,21 @@
 	return TRUE
 
 
-/obj/item/organ/internal/stomach/hemophage
+/obj/item/organ/stomach/hemophage
 	name = "stomach" // Name change is handled by /datum/component/organ_corruption/corrupt_organ()
 	desc = GENERIC_CORRUPTED_ORGAN_DESC
 	icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi'
 	organ_flags = ORGAN_EDIBLE | ORGAN_TUMOR_CORRUPTED
 
 
-/obj/item/organ/internal/stomach/hemophage/Initialize(mapload)
+/obj/item/organ/stomach/hemophage/Initialize(mapload)
 	. = ..()
 
 	AddComponent(/datum/component/organ_corruption/stomach, time_to_corrupt = ORGAN_CORRUPTION_INSTANT)
 
 
 // I didn't feel like moving this behavior onto the component, it was just too annoying to do.
-/obj/item/organ/internal/stomach/hemophage/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/stomach/hemophage/on_life(seconds_per_tick, times_fired)
 	var/datum/reagent/blood/blood = reagents.has_reagent(/datum/reagent/blood)
 	if(blood)
 		blood.metabolization_rate = BLOOD_METABOLIZATION_RATE
@@ -89,7 +89,7 @@
 	return ..()
 
 
-/obj/item/organ/internal/tongue/hemophage
+/obj/item/organ/tongue/hemophage
 	name = "tongue" // Name change is handled by /datum/component/organ_corruption/corrupt_organ()
 	desc = GENERIC_CORRUPTED_ORGAN_DESC
 	icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi'
@@ -98,7 +98,7 @@
 	disliked_foodtypes = NONE
 
 
-/obj/item/organ/internal/tongue/hemophage/Initialize(mapload)
+/obj/item/organ/tongue/hemophage/Initialize(mapload)
 	. = ..()
 
 	AddComponent(/datum/component/organ_corruption/tongue, time_to_corrupt = ORGAN_CORRUPTION_INSTANT)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm
index 5786d62e6b6..657b58869a9 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_species.dm
@@ -18,10 +18,10 @@
 	)
 	inherent_biotypes = MOB_HUMANOID | MOB_ORGANIC
 	exotic_bloodtype = "U"
-	mutantheart = /obj/item/organ/internal/heart/hemophage
-	mutantliver = /obj/item/organ/internal/liver/hemophage
-	mutantstomach = /obj/item/organ/internal/stomach/hemophage
-	mutanttongue = /obj/item/organ/internal/tongue/hemophage
+	mutantheart = /obj/item/organ/heart/hemophage
+	mutantliver = /obj/item/organ/liver/hemophage
+	mutantstomach = /obj/item/organ/stomach/hemophage
+	mutanttongue = /obj/item/organ/tongue/hemophage
 	mutantlungs = null
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
 	examine_limb_id = SPECIES_HUMAN
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm
index 5d46ecf0dd2..2895c172c9f 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_status_effects.dm
@@ -21,7 +21,7 @@
 	if(!owner || !ishuman(owner))
 		return FALSE
 
-	var/obj/item/organ/internal/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/internal/heart/hemophage)
+	var/obj/item/organ/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/heart/hemophage)
 
 	if(!tumor_heart)
 		return FALSE
@@ -36,7 +36,7 @@
 	if(!owner || !ishuman(owner))
 		return
 
-	var/obj/item/organ/internal/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/internal/heart/hemophage)
+	var/obj/item/organ/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/heart/hemophage)
 
 	if(!tumor_heart)
 		return
@@ -72,7 +72,7 @@
 	if(!linked_alert)
 		return
 
-	var/obj/item/organ/internal/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/internal/heart/hemophage)
+	var/obj/item/organ/heart/hemophage/tumor_heart = owner.get_organ_by_type(/obj/item/organ/heart/hemophage)
 	if(tumor_heart)
 		var/old_layer = tumor_heart.layer
 		var/old_plane = tumor_heart.plane
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm
index df13a858efa..25cb319e4b0 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/hemophage_tumor.dm
@@ -15,7 +15,7 @@
 #define TRAIT_TUMOR "tumor"
 
 
-/obj/item/organ/internal/heart/hemophage
+/obj/item/organ/heart/hemophage
 	name = "pulsating tumor"
 	icon = 'modular_nova/modules/organs/icons/hemophage_organs.dmi'
 	icon_state = "tumor-on"
@@ -28,7 +28,7 @@
 	var/bloodloss_rate = NORMAL_BLOOD_DRAIN
 
 
-/obj/item/organ/internal/heart/hemophage/mob_insert(mob/living/carbon/tumorful, special, movement_flags)
+/obj/item/organ/heart/hemophage/mob_insert(mob/living/carbon/tumorful, special, movement_flags)
 	. = ..()
 	if(!. || !owner)
 		return
@@ -38,7 +38,7 @@
 	RegisterSignal(tumorful, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item))
 
 
-/obj/item/organ/internal/heart/hemophage/mob_remove(mob/living/carbon/tumorless, special = FALSE)
+/obj/item/organ/heart/hemophage/mob_remove(mob/living/carbon/tumorless, special = FALSE)
 	. = ..()
 
 	SEND_SIGNAL(tumorless, COMSIG_PULSATING_TUMOR_REMOVED, tumorless)
@@ -58,7 +58,7 @@
 		tumorless_human.remove_movespeed_modifier(/datum/movespeed_modifier/hemophage_dormant_state)
 
 
-/obj/item/organ/internal/heart/hemophage/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/heart/hemophage/on_life(seconds_per_tick, times_fired)
 	. = ..()
 
 	// A Hemophage's tumor will be able to be operated on multiple times, so
@@ -85,7 +85,7 @@
 
 
 /// Simple helper proc that toggles the dormant state of the tumor, which also switches its appearance to reflect said change.
-/obj/item/organ/internal/heart/hemophage/proc/toggle_dormant_state()
+/obj/item/organ/heart/hemophage/proc/toggle_dormant_state()
 	is_dormant = !is_dormant
 	base_icon_state = is_dormant ? "[base_icon_state]-dormant" : initial(base_icon_state)
 
@@ -106,12 +106,12 @@
 
 
 /// Simple helper proc that returns whether or not the given hemophage is in a closet subtype (but not in any bodybag subtype).
-/obj/item/organ/internal/heart/hemophage/proc/in_closet(mob/living/carbon/human/hemophage)
+/obj/item/organ/heart/hemophage/proc/in_closet(mob/living/carbon/human/hemophage)
 	return istype(hemophage.loc, /obj/structure/closet) && !istype(hemophage.loc, /obj/structure/closet/body_bag)
 
 
 /// Simple helper proc that returns whether or not the given hemophage is in total darkness.
-/obj/item/organ/internal/heart/hemophage/proc/in_total_darkness(mob/living/carbon/human/hemophage)
+/obj/item/organ/heart/hemophage/proc/in_total_darkness(mob/living/carbon/human/hemophage)
 	var/turf/current_turf = get_turf(hemophage)
 	if(!istype(current_turf))
 		return FALSE
@@ -120,7 +120,7 @@
 
 
 /// Whether or not we should be applying the healing status effect for the owner.
-/obj/item/organ/internal/heart/hemophage/proc/can_heal_owner_damage()
+/obj/item/organ/heart/hemophage/proc/can_heal_owner_damage()
 	// We handle the least expensive checks first.
 	if(owner.health >= owner.maxHealth || is_dormant || owner.blood_volume <= MINIMUM_VOLUME_FOR_REGEN || (!in_closet(owner) && !in_total_darkness(owner)))
 		return FALSE
@@ -131,7 +131,7 @@
 /// Simple helper to toggle the hemophage's vulnerability (or lack thereof) based on the status of their tumor.
 /// This proc contains no check whatsoever, to avoid redundancy of null checks and such.
 /// That being said, it shouldn't be used by anything but the tumor, if you have to call it outside of that, you probably have gone wrong somewhere.
-/obj/item/organ/internal/heart/hemophage/proc/toggle_dormant_tumor_vulnerabilities(mob/living/carbon/human/hemophage)
+/obj/item/organ/heart/hemophage/proc/toggle_dormant_tumor_vulnerabilities(mob/living/carbon/human/hemophage)
 	var/datum/physiology/hemophage_physiology = hemophage.physiology
 	var/damage_multiplier = is_dormant ? DORMANT_DAMAGE_MULTIPLIER : 1 / DORMANT_DAMAGE_MULTIPLIER
 
@@ -141,7 +141,7 @@
 	hemophage_physiology.stamina_mod *= damage_multiplier / 2 // Doing half here so that they don't instantly hit stam-crit when hit like only once.
 
 
-/obj/item/organ/internal/heart/hemophage/proc/get_status_tab_item(mob/living/source, list/items)
+/obj/item/organ/heart/hemophage/proc/get_status_tab_item(mob/living/source, list/items)
 	SIGNAL_HANDLER
 
 	items += "Current blood level: [owner.blood_volume]/[BLOOD_VOLUME_MAXIMUM]"
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm
index df18d12b264..03743af54aa 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/hemophage/tumor_corruption.dm
@@ -27,19 +27,19 @@
  * Handles corrupting already-existing organs upon having the tumor be inserted in the mob.
  */
 /datum/element/tumor_corruption/proc/handle_organ_corruption_on_existing_organs(mob/living/carbon/organ_enjoyer)
-	var/obj/item/organ/internal/liver/liver = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && !(liver.organ_flags & ORGAN_TUMOR_CORRUPTED))
 		liver.AddComponent(/datum/component/organ_corruption/liver)
 
-	var/obj/item/organ/internal/lungs/lungs = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/lungs = organ_enjoyer.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(lungs && !(lungs.organ_flags & ORGAN_TUMOR_CORRUPTED))
 		lungs.AddComponent(/datum/component/organ_corruption/lungs)
 
-	var/obj/item/organ/internal/stomach/stomach = organ_enjoyer.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/stomach = organ_enjoyer.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(stomach && !(stomach.organ_flags & ORGAN_TUMOR_CORRUPTED))
 		stomach.AddComponent(/datum/component/organ_corruption/stomach)
 
-	var/obj/item/organ/internal/tongue/tongue = organ_enjoyer.get_organ_slot(ORGAN_SLOT_TONGUE)
+	var/obj/item/organ/tongue/tongue = organ_enjoyer.get_organ_slot(ORGAN_SLOT_TONGUE)
 	if(tongue && !(tongue.organ_flags & ORGAN_TUMOR_CORRUPTED))
 		tongue.AddComponent(/datum/component/organ_corruption/tongue)
 
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm
index e58511cb36a..83ba8898754 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/insect.dm
@@ -9,7 +9,7 @@
 	)
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
 	mutant_bodyparts = list()
-	mutanttongue = /obj/item/organ/internal/tongue/insect
+	mutanttongue = /obj/item/organ/tongue/insect
 	payday_modifier = 1.0
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
 	examine_limb_id = SPECIES_INSECT
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm
index a0899ed37e4..549a7cbad56 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/mammal.dm
@@ -9,7 +9,7 @@
 	)
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
 	mutant_bodyparts = list()
-	mutanttongue = /obj/item/organ/internal/tongue/mammal
+	mutanttongue = /obj/item/organ/tongue/mammal
 	payday_modifier = 1.0
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
 	bodypart_overrides = list(
@@ -35,7 +35,7 @@
 		"neck_acc" = list("None", FALSE),
 	)
 
-/obj/item/organ/internal/tongue/mammal
+/obj/item/organ/tongue/mammal
 	liked_foodtypes = GRAIN | MEAT
 	disliked_foodtypes = CLOTH | GROSS | GORE
 	toxic_foodtypes = TOXIC
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm
index 2b29de082dd..e3b49ef1b58 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm
@@ -8,10 +8,10 @@
 	mutant_bodyparts = list()
 	hair_alpha = 160 //a notch brighter so it blends better.
 	facial_hair_alpha = 160
-	mutantliver = /obj/item/organ/internal/liver/slime
-	mutantstomach = /obj/item/organ/internal/stomach/slime
-	mutantbrain = /obj/item/organ/internal/brain/slime
-	mutantears = /obj/item/organ/internal/ears/jelly
+	mutantliver = /obj/item/organ/liver/slime
+	mutantstomach = /obj/item/organ/stomach/slime
+	mutantbrain = /obj/item/organ/brain/slime
+	mutantears = /obj/item/organ/ears/jelly
 	inherent_traits = list(
 		TRAIT_MUTANT_COLORS,
 		TRAIT_TOXINLOVER,
@@ -66,11 +66,11 @@
 	if(isnull(human_holder.loc))
 		return // preview characters don't need funny organs, prevents a runtime
 
-	var/obj/item/organ/internal/brain/slime/oversized/new_slime_brain = new
-	var/obj/item/organ/internal/stomach/slime/oversized/new_slime_stomach = new //YOU LOOK HUGE! THAT MUST MEAN YOU HAVE HUGE golgi apparatus! RIP AND TEAR YOUR HUGE golgi apparatus!
+	var/obj/item/organ/brain/slime/oversized/new_slime_brain = new
+	var/obj/item/organ/stomach/slime/oversized/new_slime_stomach = new //YOU LOOK HUGE! THAT MUST MEAN YOU HAVE HUGE golgi apparatus! RIP AND TEAR YOUR HUGE golgi apparatus!
 
-	var/obj/item/organ/internal/brain/slime/old_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN)
-	var/obj/item/organ/internal/stomach/slime/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/brain/slime/old_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/stomach/slime/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
 	oversized_quirk.old_organs = list(
 		old_brain,
 		old_stomach,
@@ -94,42 +94,42 @@
 		old_stomach.moveToNullspace()
 		STOP_PROCESSING(SSobj, old_stomach)
 
-/obj/item/organ/internal/eyes/jelly
+/obj/item/organ/eyes/jelly
 	name = "photosensitive eyespots"
 	zone = BODY_ZONE_CHEST
 	organ_flags = ORGAN_UNREMOVABLE
 
-/obj/item/organ/internal/eyes/roundstartslime
+/obj/item/organ/eyes/roundstartslime
 	name = "photosensitive eyespots"
 	zone = BODY_ZONE_CHEST
 	organ_flags = ORGAN_UNREMOVABLE
 
-/obj/item/organ/internal/ears/jelly
+/obj/item/organ/ears/jelly
 	name = "core audiosomes"
 	zone = BODY_ZONE_CHEST
 	organ_flags = ORGAN_UNREMOVABLE
 	overrides_sprite_datum_organ_type = TRUE
 	bodypart_overlay = /datum/bodypart_overlay/mutant/ears
 
-/obj/item/organ/internal/tongue/jelly
+/obj/item/organ/tongue/jelly
 	zone = BODY_ZONE_CHEST
 	organ_flags = ORGAN_UNREMOVABLE
 
-/obj/item/organ/internal/lungs/slime
+/obj/item/organ/lungs/slime
 	zone = BODY_ZONE_CHEST
 	organ_flags = ORGAN_UNREMOVABLE
 
-/obj/item/organ/internal/liver/slime
+/obj/item/organ/liver/slime
 	name = "endoplasmic reticulum"
 	zone = BODY_ZONE_CHEST
 	organ_flags = ORGAN_UNREMOVABLE
 
-/obj/item/organ/internal/stomach/slime
+/obj/item/organ/stomach/slime
 	name = "golgi apparatus"
 	zone = BODY_ZONE_CHEST
 	organ_flags = ORGAN_UNREMOVABLE
 
-/obj/item/organ/internal/brain/slime
+/obj/item/organ/brain/slime
 	name = "core"
 	desc = "The central core of a slimeperson, technically their 'extract.' Where the cytoplasm, membrane, and organelles come from; perhaps this is also a mitochondria?"
 	zone = BODY_ZONE_CHEST
@@ -147,18 +147,18 @@
 	throw_speed = 0.5
 	resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | LAVA_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
 
-/obj/item/organ/internal/brain/slime/Initialize(mapload, mob/living/carbon/organ_owner, list/examine_list)
+/obj/item/organ/brain/slime/Initialize(mapload, mob/living/carbon/organ_owner, list/examine_list)
 	. = ..()
 	colorize()
 
-/obj/item/organ/internal/brain/slime/examine()
+/obj/item/organ/brain/slime/examine()
 	. = ..()
 	if(gps_active)
 		. += span_notice("A dim light lowly pulsates from the center of the core, indicating an outgoing signal from a tracking microchip.")
 		. += span_red("You could probably snuff that out.")
 	. += span_hypnophrase("You remember that pouring plasma on it, if it's non-embodied, would make it regrow one.")
 
-/obj/item/organ/internal/brain/slime/attack_self(mob/living/user) // Allows a player (presumably an antag) to deactivate the GPS signal on a slime core
+/obj/item/organ/brain/slime/attack_self(mob/living/user) // Allows a player (presumably an antag) to deactivate the GPS signal on a slime core
 	if(!(gps_active))
 		return
 	user.visible_message(span_warning("[user] begins jamming [user.p_their()] hand into a slime core! Slime goes everywhere!"),
@@ -181,7 +181,7 @@
 	gps_active = FALSE
 	qdel(GetComponent(/datum/component/gps))
 
-/obj/item/organ/internal/brain/slime/mob_insert(mob/living/carbon/organ_owner, special = FALSE, movement_flags)
+/obj/item/organ/brain/slime/mob_insert(mob/living/carbon/organ_owner, special = FALSE, movement_flags)
 	. = ..()
 	if(!.)
 		return
@@ -189,14 +189,14 @@
 	core_ejected = FALSE
 	RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(on_slime_death))
 
-/obj/item/organ/internal/brain/slime/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/brain/slime/on_mob_remove(mob/living/carbon/organ_owner)
 	. = ..()
 	UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH)
 
 /**
 * Colors the slime's core (their brain) the same as their first mutant color.
 */
-/obj/item/organ/internal/brain/slime/proc/colorize()
+/obj/item/organ/brain/slime/proc/colorize()
 	if(owner && isjellyperson(owner))
 		core_color = owner.dna.features["mcolor"]
 		add_atom_colour(core_color, FIXED_COLOUR_PRIORITY)
@@ -204,7 +204,7 @@
 /**
 * Handling for tracking when the slime in question dies (except through gibbing), which then segues into the core ejection proc.
 */
-/obj/item/organ/internal/brain/slime/proc/on_slime_death(mob/living/victim, gibbed)
+/obj/item/organ/brain/slime/proc/on_slime_death(mob/living/victim, gibbed)
 	SIGNAL_HANDLER
 	UnregisterSignal(victim, COMSIG_LIVING_DEATH)
 
@@ -219,7 +219,7 @@
 * CORE EJECTION PROC -
 * Makes it so that when a slime dies, their core ejects and their body is qdel'd.
 */
-/obj/item/organ/internal/brain/slime/proc/core_ejection(mob/living/victim, new_stat, turf/loc_override)
+/obj/item/organ/brain/slime/proc/core_ejection(mob/living/victim, new_stat, turf/loc_override)
 	if(core_ejected)
 		return
 	core_ejected = TRUE
@@ -245,7 +245,7 @@
 /**
 * Procs the ethereal jaunt liquid effect when the slime dissolves on death.
 */
-/obj/item/organ/internal/brain/slime/proc/do_steam_effects(turf/loc)
+/obj/item/organ/brain/slime/proc/do_steam_effects(turf/loc)
 	var/datum/effect_system/steam_spread/steam = new()
 	steam.set_up(10, FALSE, loc)
 	steam.start()
@@ -254,7 +254,7 @@
 * CHECK FOR REPAIR SECTION
 * Makes it so that when a slime's core has plasma poured on it, it builds a new body and moves the brain into it.
 */
-/obj/item/organ/internal/brain/slime/check_for_repair(obj/item/item, mob/user)
+/obj/item/organ/brain/slime/check_for_repair(obj/item/item, mob/user)
 	if(!item.is_drainable() || item.reagents.get_reagent_amount(/datum/reagent/toxin/plasma) < 100)
 		return FALSE
 	user.visible_message(
@@ -285,7 +285,7 @@
 	regenerate()
 	return TRUE
 
-/obj/item/organ/internal/brain/slime/proc/regenerate()
+/obj/item/organ/brain/slime/proc/regenerate()
 	//we have the plasma. we can rebuild them.
 	set_organ_damage(-maxHealth) //fully heals the brain
 	if(gps_active) // making sure the gps signal is removed if it's active on revival
@@ -513,8 +513,8 @@
 	heatmod = 1
 	specific_alpha = 155
 	markings_alpha = 130 //This is set lower than the other so that the alpha values don't stack on top of each other so much
-	mutanteyes = /obj/item/organ/internal/eyes/roundstartslime
-	mutanttongue = /obj/item/organ/internal/tongue/jelly
+	mutanteyes = /obj/item/organ/eyes/roundstartslime
+	mutanttongue = /obj/item/organ/tongue/jelly
 
 	bodypart_overrides = list( //Overriding jelly bodyparts
 		BODY_ZONE_L_ARM = /obj/item/bodypart/arm/left/jelly/slime/roundstart,
@@ -1031,13 +1031,13 @@
 		return
 	switch(dna_alteration)
 		if("Breasts Lactation")
-			var/obj/item/organ/external/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS)
+			var/obj/item/organ/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS)
 			alterer.dna.features["breasts_lactation"] = !alterer.dna.features["breasts_lactation"]
 			melons.lactates = alterer.dna.features["breasts_lactation"]
 			alterer.balloon_alert(alterer, "[alterer.dna.features["breasts_lactation"] ? "lactating" : "not lactating"]")
 
 		if("Breasts Size")
-			var/obj/item/organ/external/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS)
+			var/obj/item/organ/genital/breasts/melons = alterer.get_organ_slot(ORGAN_SLOT_BREASTS)
 			var/new_size = tgui_input_list(
 				alterer,
 				"Choose your character's breasts size:",
@@ -1050,7 +1050,7 @@
 			melons.set_size(alterer.dna.features["breasts_size"])
 
 		if("Penis Girth")
-			var/obj/item/organ/external/genital/penis/sausage = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
+			var/obj/item/organ/genital/penis/sausage = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
 			var/max_girth = PENIS_MAX_GIRTH
 			if(alterer.dna.features["penis_size"] >= max_girth)
 				max_girth = alterer.dna.features["penis_size"]
@@ -1066,7 +1066,7 @@
 				sausage.girth = alterer.dna.features["penis_girth"]
 
 		if("Penis Length")
-			var/obj/item/organ/external/genital/penis/wang = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
+			var/obj/item/organ/genital/penis/wang = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
 			var/new_length = tgui_input_number(
 				alterer,
 				"Choose your penis length:\n([PENIS_MIN_LENGTH]-[PENIS_MAX_LENGTH] inches)",
@@ -1083,7 +1083,7 @@
 			wang.set_size(alterer.dna.features["penis_size"])
 
 		if("Penis Sheath")
-			var/obj/item/organ/external/genital/penis/schlong = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
+			var/obj/item/organ/genital/penis/schlong = alterer.get_organ_slot(ORGAN_SLOT_PENIS)
 			var/new_sheath = tgui_input_list(
 				alterer,
 				"Choose your penis sheath",
@@ -1099,7 +1099,7 @@
 			alterer.balloon_alert(alterer, "[alterer.dna.features["penis_taur_mode"] ? "using taur penis" : "not using taur penis"]")
 
 		if("Testicles Size")
-			var/obj/item/organ/external/genital/testicles/avocados = alterer.get_organ_slot(ORGAN_SLOT_TESTICLES)
+			var/obj/item/organ/genital/testicles/avocados = alterer.get_organ_slot(ORGAN_SLOT_TESTICLES)
 			var/new_size = tgui_input_list(
 				alterer,
 				"Choose your character's testicles size:",
@@ -1125,7 +1125,7 @@
 
 /datum/action/innate/core_signal/Activate()
 	var/mob/living/carbon/human/slime = owner
-	var/obj/item/organ/internal/brain/slime/core = slime.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/slime/core = slime.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(slime_restricted && !isjellyperson(slime))
 		return
 	if(core.gps_active)
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm
index 3b038ab1bde..972eb265868 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm
@@ -14,15 +14,15 @@
 	bodytemp_cold_damage_limit = (T20C - 10)
 	species_language_holder = /datum/language_holder/skrell
 	mutant_bodyparts = list()
-	mutanttongue = /obj/item/organ/internal/tongue/skrell
+	mutanttongue = /obj/item/organ/tongue/skrell
 	payday_modifier = 1.0
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
-	mutantbrain = /obj/item/organ/internal/brain/skrell
-	mutanteyes = /obj/item/organ/internal/eyes/skrell
-	mutantlungs = /obj/item/organ/internal/lungs/skrell
-	mutantheart = /obj/item/organ/internal/heart/skrell
-	mutantliver = /obj/item/organ/internal/liver/skrell
-	mutanttongue = /obj/item/organ/internal/tongue/skrell
+	mutantbrain = /obj/item/organ/brain/skrell
+	mutanteyes = /obj/item/organ/eyes/skrell
+	mutantlungs = /obj/item/organ/lungs/skrell
+	mutantheart = /obj/item/organ/heart/skrell
+	mutantliver = /obj/item/organ/liver/skrell
+	mutanttongue = /obj/item/organ/tongue/skrell
 	bodypart_overrides = list(
 		BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant/skrell,
 		BODY_ZONE_CHEST = /obj/item/bodypart/chest/mutant/skrell,
@@ -76,7 +76,7 @@
 	skrell.update_body(TRUE)
 
 
-/obj/item/organ/internal/tongue/skrell
+/obj/item/organ/tongue/skrell
 	name = "internal vocal sacs"
 	desc = "An Strange looking sac."
 	icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
@@ -106,27 +106,27 @@
 	disliked_foodtypes = RAW | CLOTH
 	toxic_foodtypes = DAIRY | MEAT
 
-/obj/item/organ/internal/tongue/skrell/get_possible_languages()
+/obj/item/organ/tongue/skrell/get_possible_languages()
 	return languages_possible_skrell
 
-/obj/item/organ/internal/heart/skrell
+/obj/item/organ/heart/skrell
 	name = "skrellian heart"
 	icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
 	icon_state = "heart"
 
-/obj/item/organ/internal/brain/skrell
+/obj/item/organ/brain/skrell
 	name = "spongy brain"
 	icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
 	icon_state = "brain2"
 
-/obj/item/organ/internal/eyes/skrell
+/obj/item/organ/eyes/skrell
 	name = "amphibian eyes"
 	desc = "Large black orbs."
 	icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
 	icon_state = "eyes"
 	flash_protect = FLASH_PROTECTION_SENSITIVE
 
-/obj/item/organ/internal/lungs/skrell
+/obj/item/organ/lungs/skrell
 	name = "skrell lungs"
 	icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
 	icon_state = "lungs"
@@ -152,7 +152,7 @@
 	heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3
 	heat_damage_type = BURN
 
-/obj/item/organ/internal/liver/skrell
+/obj/item/organ/liver/skrell
 	name = "skrell liver"
 	icon_state = "liver"
 	icon = 'modular_nova/modules/organs/icons/skrell_organ.dmi'
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm
index 6e7077559a0..15d5ce08c4a 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/tajaran.dm
@@ -10,7 +10,7 @@
 		TRAIT_CATLIKE_GRACE,
 		TRAIT_WATER_HATER,
 	)
-	mutanttongue = /obj/item/organ/internal/tongue/cat/tajaran
+	mutanttongue = /obj/item/organ/tongue/cat/tajaran
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
 	mutant_bodyparts = list()
 	payday_modifier = 1.0
@@ -34,7 +34,7 @@
 		"legs" = list("Normal Legs", FALSE),
 	)
 
-/obj/item/organ/internal/tongue/cat/tajaran
+/obj/item/organ/tongue/cat/tajaran
 	liked_foodtypes = GRAIN | MEAT
 	disliked_foodtypes = CLOTH
 
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm
index 8731ff495d1..ff3f78f4d20 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/unathi.dm
@@ -9,7 +9,7 @@
 	)
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
 	mutant_bodyparts = list()
-	mutanttongue = /obj/item/organ/internal/tongue/unathi
+	mutanttongue = /obj/item/organ/tongue/unathi
 	payday_modifier = 1.0
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
 	examine_limb_id = SPECIES_LIZARD
@@ -34,7 +34,7 @@
 		"legs" = list("Normal Legs", FALSE),
 	)
 
-/obj/item/organ/internal/tongue/unathi
+/obj/item/organ/tongue/unathi
 	liked_foodtypes = GORE | MEAT | SEAFOOD | NUTS
 	disliked_foodtypes = GRAIN | DAIRY | CLOTH | GROSS
 	toxic_foodtypes = TOXIC
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm
index b91ab569ad3..fb8a317fc10 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vox.dm
@@ -10,9 +10,9 @@
 		TRAIT_MUTANT_COLORS,
 	)
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
-	mutanttongue = /obj/item/organ/internal/tongue/vox
-	mutantlungs = /obj/item/organ/internal/lungs/nitrogen/vox
-	mutantbrain = /obj/item/organ/internal/brain/vox
+	mutanttongue = /obj/item/organ/tongue/vox
+	mutantlungs = /obj/item/organ/lungs/nitrogen/vox
+	mutantbrain = /obj/item/organ/brain/vox
 	breathid = "n2"
 	mutant_bodyparts = list()
 	payday_modifier = 1.0
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm
index ca169f54721..8060cb73902 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/vulpkanin.dm
@@ -9,7 +9,7 @@
 	)
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
 	mutant_bodyparts = list()
-	mutanttongue = /obj/item/organ/internal/tongue/vulpkanin
+	mutanttongue = /obj/item/organ/tongue/vulpkanin
 	species_language_holder = /datum/language_holder/vulpkanin
 	payday_modifier = 1.0
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
@@ -31,7 +31,7 @@
 		"legs" = list("Normal Legs", FALSE),
 	)
 
-/obj/item/organ/internal/tongue/vulpkanin
+/obj/item/organ/tongue/vulpkanin
 	liked_foodtypes = RAW | MEAT
 	disliked_foodtypes = CLOTH
 	toxic_foodtypes = TOXIC
diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm
index ded13972015..0c4439c31dc 100644
--- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm
+++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/xeno.dm
@@ -10,14 +10,14 @@
 		TRAIT_MUTANT_COLORS,
 	)
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
-	mutantbrain = /obj/item/organ/internal/brain/xeno_hybrid
-	mutanttongue = /obj/item/organ/internal/tongue/xeno_hybrid
-	mutantliver = /obj/item/organ/internal/liver/xeno_hybrid
-	mutantstomach = /obj/item/organ/internal/stomach/xeno_hybrid
+	mutantbrain = /obj/item/organ/brain/xeno_hybrid
+	mutanttongue = /obj/item/organ/tongue/xeno_hybrid
+	mutantliver = /obj/item/organ/liver/xeno_hybrid
+	mutantstomach = /obj/item/organ/stomach/xeno_hybrid
 	mutant_organs = list(
-		/obj/item/organ/internal/alien/plasmavessel/roundstart,
-		/obj/item/organ/internal/alien/resinspinner/roundstart,
-		/obj/item/organ/internal/alien/hivenode,
+		/obj/item/organ/alien/plasmavessel/roundstart,
+		/obj/item/organ/alien/resinspinner/roundstart,
+		/obj/item/organ/alien/hivenode,
 		)
 	exotic_blood = /datum/reagent/toxin/acid
 	exotic_bloodtype = "X*"
@@ -133,7 +133,7 @@
 #define BUILD_DURATION 0.5 SECONDS
 
 //Plasma vessel
-/obj/item/organ/internal/alien/plasmavessel/roundstart
+/obj/item/organ/alien/plasmavessel/roundstart
 	stored_plasma = 55
 	max_plasma = 55
 	plasma_rate = 2
@@ -156,7 +156,7 @@
 	return ..()
 
 //Resin spinner
-/obj/item/organ/internal/alien/resinspinner/roundstart
+/obj/item/organ/alien/resinspinner/roundstart
 	actions_types = list(/datum/action/cooldown/alien/make_structure/resin/roundstart)
 
 /datum/action/cooldown/alien/make_structure/resin
@@ -167,17 +167,17 @@
 	//Non-modularly checked in `code\modules\mob\living\carbon\alien\adult\alien_powers.dm`
 
 //Organ resprites
-/obj/item/organ/internal/brain/xeno_hybrid
+/obj/item/organ/brain/xeno_hybrid
 	icon_state = "brain-x" //rebranding
 
-/obj/item/organ/internal/stomach/xeno_hybrid
+/obj/item/organ/stomach/xeno_hybrid
 	icon_state = "stomach-x"
 
-/obj/item/organ/internal/liver/xeno_hybrid
+/obj/item/organ/liver/xeno_hybrid
 	icon_state = "liver-x"
 
 //Liver modification (xenohybrids can process plasma!)
-/obj/item/organ/internal/liver/xeno_hybrid/handle_chemical(mob/living/carbon/owner, datum/reagent/toxin/chem, seconds_per_tick, times_fired)
+/obj/item/organ/liver/xeno_hybrid/handle_chemical(mob/living/carbon/owner, datum/reagent/toxin/chem, seconds_per_tick, times_fired)
 	. = ..()
 	if(. & COMSIG_MOB_STOP_REAGENT_CHECK)
 		return
diff --git a/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index c399b5a529c..2bbb57c36b4 100644
--- a/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/modular_nova/modules/customization/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -842,7 +842,7 @@
 
 /datum/reagent/consumable/ethanol/cringe_weaver/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
 	. = ..()
-	var/obj/item/organ/internal/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM))
 		if(drinker.heal_bodypart_damage(1 * REM * seconds_per_tick, 1 * REM * seconds_per_tick)) //coroners love drinking formaldehyde
 			return UPDATE_MOB_HEALTH
diff --git a/modular_nova/modules/customization/modules/surgery/organs/cap.dm b/modular_nova/modules/customization/modules/surgery/organs/cap.dm
index 664334aee03..59a415e81d3 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/cap.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/cap.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/mushroom_cap
+/obj/item/organ/mushroom_cap
 	icon_state = "random_fly_1"
 
 	mutantpart_key = "caps"
@@ -6,7 +6,7 @@
 	slot = ORGAN_SLOT_EXTERNAL_CAP
 	preference = "feature_caps"
 
-/obj/item/organ/external/mushroom_cap/Initialize(mapload)
+/obj/item/organ/mushroom_cap/Initialize(mapload)
 	if(!ispath(bodypart_overlay))
 		mutantpart_info[MUTANT_INDEX_COLOR_LIST] = bodypart_overlay.draw_color
 	return ..()
diff --git a/modular_nova/modules/customization/modules/surgery/organs/ears.dm b/modular_nova/modules/customization/modules/surgery/organs/ears.dm
index c8796f831b7..8328756fbb8 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/ears.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/ears.dm
@@ -1,13 +1,13 @@
-/obj/item/organ/internal/ears/mutant
+/obj/item/organ/ears/mutant
 	name = "fluffy ears"
 	desc = "Wait, there's two pairs of these?"
 	icon = 'icons/obj/clothing/head/costume.dmi'
 	icon_state = "kitty"
 	bodypart_overlay = /datum/bodypart_overlay/mutant/ears
 
-/obj/item/organ/internal/ears/cat
+/obj/item/organ/ears/cat
 
-/obj/item/organ/internal/ears/fox
+/obj/item/organ/ears/fox
 
 /datum/bodypart_overlay/mutant/ears
 	feature_key = "ears"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/eyes.dm b/modular_nova/modules/customization/modules/surgery/organs/eyes.dm
index c6135f9b2ef..ea97856d37e 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/eyes.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/eyes.dm
@@ -1,8 +1,8 @@
-/obj/item/organ/internal/eyes
+/obj/item/organ/eyes
 	var/is_emissive = FALSE
 	var/eyes_layer = BODY_LAYER
-	
-/obj/item/organ/internal/eyes/night_vision/ashwalker
+
+/obj/item/organ/eyes/night_vision/ashwalker
 	//give ashwalker darkvision a reddish-blue tint
 	low_light_cutoff = list(22, 12, 17)
 	medium_light_cutoff = list(33, 18, 26)
diff --git a/modular_nova/modules/customization/modules/surgery/organs/fluff.dm b/modular_nova/modules/customization/modules/surgery/organs/fluff.dm
index 0dab3106c26..d63e83117aa 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/fluff.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/fluff.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/fluff
+/obj/item/organ/fluff
 	name = "fluff"
 	desc = "Real fluffy."
 	icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/frills.dm b/modular_nova/modules/customization/modules/surgery/organs/frills.dm
index 0dacf38e09f..185e688e779 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/frills.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/frills.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/frills
+/obj/item/organ/frills
 	preference = "feature_frills"
 	mutantpart_key = "frills"
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Divinity", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
diff --git a/modular_nova/modules/customization/modules/surgery/organs/genitals.dm b/modular_nova/modules/customization/modules/surgery/organs/genitals.dm
index 89b2a7caf8a..ecc1176ac11 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/genitals.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/genitals.dm
@@ -1,6 +1,6 @@
-/obj/item/organ/external/genital
+/obj/item/organ/genital
 	color = "#fcccb3"
-	organ_flags = ORGAN_ORGANIC | ORGAN_UNREMOVABLE
+	organ_flags = ORGAN_ORGANIC | ORGAN_UNREMOVABLE | ORGAN_EXTERNAL
 	///Size value of the genital, needs to be translated to proper lengths/diameters/cups
 	var/genital_size = 1
 	///Sprite name of the genital, it's what shows up on character creation
@@ -23,11 +23,11 @@
 	var/layer_mode = GENITAL_LAYER_NORMAL
 
 //This translates the float size into a sprite string
-/obj/item/organ/external/genital/proc/get_sprite_size_string()
+/obj/item/organ/genital/proc/get_sprite_size_string()
 	return 0
 
 //This translates the float size into a sprite string
-/obj/item/organ/external/genital/proc/update_sprite_suffix()
+/obj/item/organ/genital/proc/update_sprite_suffix()
 	sprite_suffix = "[get_sprite_size_string()]"
 
 	var/datum/bodypart_overlay/mutant/genital/our_overlay = bodypart_overlay
@@ -37,33 +37,33 @@
 	our_overlay.organ_slot = src.slot
 
 
-/obj/item/organ/external/genital/proc/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/proc/get_description_string(datum/sprite_accessory/genital/gas)
 	return "You see genitals"
 
-/obj/item/organ/external/genital/proc/update_genital_icon_state()
+/obj/item/organ/genital/proc/update_genital_icon_state()
 	return
 
-/obj/item/organ/external/genital/proc/set_size(size)
+/obj/item/organ/genital/proc/set_size(size)
 	genital_size = size
 	update_sprite_suffix()
 
-/obj/item/organ/external/genital/Initialize(mapload)
+/obj/item/organ/genital/Initialize(mapload)
 	. = ..()
 	update_sprite_suffix()
 	if(CONFIG_GET(flag/disable_lewd_items))
 		return INITIALIZE_HINT_QDEL
 
 //Removes ERP organs depending on config
-/obj/item/organ/external/genital/Insert(mob/living/carbon/M, special, movement_flags)
+/obj/item/organ/genital/Insert(mob/living/carbon/M, special, movement_flags)
 	if(CONFIG_GET(flag/disable_erp_preferences))
 		return
 	. = ..()
 
-/obj/item/organ/external/genital/Remove(mob/living/carbon/M, special = FALSE, moving)
+/obj/item/organ/genital/Remove(mob/living/carbon/M, special = FALSE, moving)
 	. = ..()
 	update_genital_icon_state()
 
-/obj/item/organ/external/genital/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/build_from_dna(datum/dna/DNA, associated_key)
 	. = ..()
 	var/datum/sprite_accessory/genital/accessory = SSaccessories.sprite_accessories[associated_key][DNA.mutant_bodyparts[associated_key][MUTANT_INDEX_NAME]]
 	genital_name = accessory.name
@@ -78,10 +78,10 @@
 	our_overlay.organ_slot = src.slot
 
 /// for specific build_from_dna behavior that also checks the genital accessory.
-/obj/item/organ/external/genital/proc/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/proc/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
 	return
 
-/obj/item/organ/external/genital/proc/is_exposed()
+/obj/item/organ/genital/proc/is_exposed()
 	if(!owner)
 		return TRUE
 
@@ -163,7 +163,7 @@
 /// Helper function - if the organ this overlay is tied to has been set to layer above clothing, return TRUE
 /datum/bodypart_overlay/mutant/genital/proc/layer_mode_check()
 	if(istype(owner))
-		var/obj/item/organ/external/genital/owning_organ = owner.get_organ_slot(organ_slot)
+		var/obj/item/organ/genital/owning_organ = owner.get_organ_slot(organ_slot)
 		if(owning_organ?.layer_mode == GENITAL_LAYER_HIGH)
 			return TRUE
 	return FALSE
@@ -180,7 +180,7 @@
 		return ..()
 
 
-/obj/item/organ/external/genital/penis
+/obj/item/organ/genital/penis
 	name = "penis"
 	desc = "A male reproductive organ."
 	icon_state = "penis"
@@ -213,7 +213,7 @@
 			return TRUE
 
 
-/obj/item/organ/external/genital/penis/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/penis/get_description_string(datum/sprite_accessory/genital/gas)
 	var/returned_string = ""
 	var/pname = LOWER_TEXT(genital_name) == "nondescript" ? "" : LOWER_TEXT(genital_name) + " "
 	if(sheath != SHEATH_NONE && aroused != AROUSAL_FULL) //Hidden in sheath
@@ -235,7 +235,7 @@
 				returned_string += " It's fully erect."
 	return returned_string
 
-/obj/item/organ/external/genital/penis/update_genital_icon_state()
+/obj/item/organ/genital/penis/update_genital_icon_state()
 	var/size_affix
 	var/measured_size = FLOOR(genital_size,1)
 	if(measured_size < 1)
@@ -254,7 +254,7 @@
 		passed_string += "_s"
 	icon_state = passed_string
 
-/obj/item/organ/external/genital/penis/get_sprite_size_string()
+/obj/item/organ/genital/penis/get_sprite_size_string()
 	if(aroused != AROUSAL_FULL && sheath != SHEATH_NONE) //Sheath time!
 		var/poking_out = 0
 		if(aroused == AROUSAL_PARTIAL)
@@ -282,14 +282,14 @@
 		passed_string += "_s"
 	return passed_string
 
-/obj/item/organ/external/genital/penis/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/penis/build_from_dna(datum/dna/DNA, associated_key)
 	girth = DNA.features["penis_girth"]
 	uses_skin_color = DNA.features["penis_uses_skincolor"]
 	set_size(DNA.features["penis_size"])
 
 	return ..()
 
-/obj/item/organ/external/genital/penis/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/penis/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
 	var/datum/sprite_accessory/genital/penis/snake = accessory
 	if(snake.can_have_sheath)
 		sheath = DNA.features["penis_sheath"]
@@ -300,7 +300,7 @@
 	return SSaccessories.sprite_accessories[ORGAN_SLOT_PENIS]
 
 
-/obj/item/organ/external/genital/testicles
+/obj/item/organ/genital/testicles
 	name = "testicles"
 	desc = "A male reproductive organ."
 	icon_state = "testicles"
@@ -332,30 +332,30 @@
 		else
 			return TRUE
 
-/obj/item/organ/external/genital/testicles/update_genital_icon_state()
+/obj/item/organ/genital/testicles/update_genital_icon_state()
 	var/measured_size = clamp(genital_size, 1, 6)
 	var/passed_string = "testicles_[genital_type]_[measured_size]"
 	if(uses_skintones)
 		passed_string += "_s"
 	icon_state = passed_string
 
-/obj/item/organ/external/genital/testicles/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/testicles/get_description_string(datum/sprite_accessory/genital/gas)
 	if(genital_name == "Internal") //Checks if Testicles are of Internal Variety
 		visibility_preference = GENITAL_SKIP_VISIBILITY //Removes visibility if yes.
 	else
 		return "You see a pair of testicles, they look [LOWER_TEXT(balls_size_to_description(genital_size))]."
 
-/obj/item/organ/external/genital/testicles/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/testicles/build_from_dna(datum/dna/DNA, associated_key)
 	uses_skin_color = DNA.features["testicles_uses_skincolor"]
 	set_size(DNA.features["balls_size"])
 
 	return ..()
 
-/obj/item/organ/external/genital/testicles/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/testicles/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
 	if(DNA.features["testicles_uses_skintones"])
 		uses_skintones = accessory.has_skintone_shading
 
-/obj/item/organ/external/genital/testicles/get_sprite_size_string()
+/obj/item/organ/genital/testicles/get_sprite_size_string()
 	var/measured_size = FLOOR(genital_size,1)
 	measured_size = clamp(measured_size, 0, 6)
 	var/passed_string = "[genital_type]_[measured_size]"
@@ -367,7 +367,7 @@
 	return SSaccessories.sprite_accessories[ORGAN_SLOT_TESTICLES]
 
 
-/obj/item/organ/external/genital/testicles/proc/balls_size_to_description(number)
+/obj/item/organ/genital/testicles/proc/balls_size_to_description(number)
 	if(number < 0)
 		number = 0
 	var/returned = GLOB.balls_size_translation["[number]"]
@@ -375,14 +375,14 @@
 		returned = BREAST_SIZE_BEYOND_MEASUREMENT
 	return returned
 
-/obj/item/organ/external/genital/testicles/proc/balls_description_to_size(cup)
+/obj/item/organ/genital/testicles/proc/balls_description_to_size(cup)
 	for(var/key in GLOB.balls_size_translation)
 		if(GLOB.balls_size_translation[key] == cup)
 			return text2num(key)
 	return 0
 
 
-/obj/item/organ/external/genital/vagina
+/obj/item/organ/genital/vagina
 	name = "vagina"
 	icon = 'modular_nova/master_files/icons/obj/genitals/vagina.dmi'
 	icon_state = "vagina"
@@ -412,7 +412,7 @@
 		else
 			return TRUE
 
-/obj/item/organ/external/genital/vagina/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/vagina/get_description_string(datum/sprite_accessory/genital/gas)
 	var/returned_string = "You see a [LOWER_TEXT(genital_name)] vagina."
 	if(LOWER_TEXT(genital_name) == "cloaca")
 		returned_string = "You see a cloaca." //i deserve a pipebomb for this
@@ -425,18 +425,18 @@
 			returned_string += " It's bright and dripping with arousal."
 	return returned_string
 
-/obj/item/organ/external/genital/vagina/get_sprite_size_string()
+/obj/item/organ/genital/vagina/get_sprite_size_string()
 	var/is_dripping = 0
 	if(aroused == AROUSAL_FULL)
 		is_dripping = 1
 	return "[genital_type]_[is_dripping]"
 
-/obj/item/organ/external/genital/vagina/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/vagina/build_from_dna(datum/dna/DNA, associated_key)
 	uses_skin_color = DNA.features["vagina_uses_skincolor"]
 
 	return ..() // will update the sprite suffix
 
-/obj/item/organ/external/genital/vagina/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/vagina/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
 	if(DNA.features["vagina_uses_skintones"])
 		uses_skintones = accessory.has_skintone_shading
 
@@ -444,7 +444,7 @@
 	return SSaccessories.sprite_accessories[ORGAN_SLOT_VAGINA]
 
 
-/obj/item/organ/external/genital/womb
+/obj/item/organ/genital/womb
 	name = "womb"
 	desc = "A female reproductive organ."
 	icon = 'modular_nova/master_files/icons/obj/genitals/vagina.dmi'
@@ -467,7 +467,7 @@
 	return SSaccessories.sprite_accessories[ORGAN_SLOT_WOMB]
 
 
-/obj/item/organ/external/genital/anus
+/obj/item/organ/genital/anus
 	name = "anus"
 	desc = "What do you want me to tell you?"
 	icon = 'modular_nova/master_files/icons/obj/genitals/anus.dmi'
@@ -484,7 +484,7 @@
 	feature_key = ORGAN_SLOT_ANUS
 	layers = NONE
 
-/obj/item/organ/external/genital/anus/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/anus/get_description_string(datum/sprite_accessory/genital/gas)
 	var/returned_string = "You see an [LOWER_TEXT(genital_name)]."
 	if(aroused == AROUSAL_PARTIAL)
 		returned_string += " It looks tight."
@@ -496,7 +496,7 @@
 	return SSaccessories.sprite_accessories[ORGAN_SLOT_ANUS]
 
 
-/obj/item/organ/external/genital/breasts
+/obj/item/organ/genital/breasts
 	name = "breasts"
 	desc = "Female milk producing organs."
 	icon_state = "breasts"
@@ -524,7 +524,7 @@
 		else
 			return TRUE
 
-/obj/item/organ/external/genital/breasts/get_description_string(datum/sprite_accessory/genital/gas)
+/obj/item/organ/genital/breasts/get_description_string(datum/sprite_accessory/genital/gas)
 	var/returned_string = "You see a [LOWER_TEXT(genital_name)] of breasts."
 	var/size_description
 	var/translation = breasts_size_to_cup(genital_size)
@@ -543,7 +543,7 @@
 			returned_string += " Their nipples look hard and perky."
 	return returned_string
 
-/obj/item/organ/external/genital/breasts/update_genital_icon_state()
+/obj/item/organ/genital/breasts/update_genital_icon_state()
 	var/max_size = 5
 	var/current_size = FLOOR(genital_size, 1)
 	if(current_size < 0)
@@ -555,7 +555,7 @@
 		passed_string += "_s"
 	icon_state = passed_string
 
-/obj/item/organ/external/genital/breasts/get_sprite_size_string()
+/obj/item/organ/genital/breasts/get_sprite_size_string()
 	var/max_size = 5
 	if(genital_type == "pair")
 		max_size = 16
@@ -569,21 +569,21 @@
 		passed_string += "_s"
 	return passed_string
 
-/obj/item/organ/external/genital/breasts/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/breasts/build_from_dna(datum/dna/DNA, associated_key)
 	lactates = DNA.features["breasts_lactation"]
 	uses_skin_color = DNA.features["breasts_uses_skincolor"]
 	set_size(DNA.features["breasts_size"])
 
 	return ..()
 
-/obj/item/organ/external/genital/breasts/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
+/obj/item/organ/genital/breasts/build_from_accessory(datum/sprite_accessory/genital/accessory, datum/dna/DNA)
 	if(DNA.features["breasts_uses_skintones"])
 		uses_skintones = accessory.has_skintone_shading
 
 /datum/bodypart_overlay/mutant/genital/breasts/get_global_feature_list()
 	return SSaccessories.sprite_accessories[ORGAN_SLOT_BREASTS]
 
-/obj/item/organ/external/genital/breasts/proc/breasts_size_to_cup(number)
+/obj/item/organ/genital/breasts/proc/breasts_size_to_cup(number)
 	if(number < 0)
 		number = 0
 	var/returned = GLOB.breast_size_translation["[number]"]
@@ -591,7 +591,7 @@
 		returned = BREAST_SIZE_BEYOND_MEASUREMENT
 	return returned
 
-/obj/item/organ/external/genital/breasts/proc/breasts_cup_to_size(cup)
+/obj/item/organ/genital/breasts/proc/breasts_cup_to_size(cup)
 	for(var/key in GLOB.breast_size_translation)
 		if(GLOB.breast_size_translation[key] == cup)
 			return text2num(key)
@@ -607,14 +607,14 @@
 		return
 
 	var/list/genital_list = list()
-	for(var/obj/item/organ/external/genital/genital in organs)
+	for(var/obj/item/organ/genital/genital in organs)
 		if(!genital.visibility_preference == GENITAL_SKIP_VISIBILITY)
 			genital_list += genital
 
 	if(!genital_list.len) //There is nothing to expose
 		return
 
-	var/obj/item/organ/external/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", genital_list)
+	var/obj/item/organ/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", genital_list)
 
 	if(!picked_organ || !(picked_organ in organs))
 		return
@@ -653,14 +653,14 @@
 		return
 
 	var/list/genital_list = list()
-	for(var/obj/item/organ/external/genital/genital in organs)
+	for(var/obj/item/organ/genital/genital in organs)
 		if(!genital.aroused == AROUSAL_CANT)
 			genital_list += genital
 
 	if(!genital_list.len) //There is nothing to modify.
 		return
 
-	var/obj/item/organ/external/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to the change arousal of", "Expose/Hide genitals", genital_list)
+	var/obj/item/organ/genital/picked_organ = tgui_input_list(src, "Choose which genitalia to the change arousal of", "Expose/Hide genitals", genital_list)
 
 	if(!picked_organ || !(picked_organ in organs))
 		return
diff --git a/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm b/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm
index 973b3d8e5a6..6f8b3255f71 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/head_accessory.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/head_accessory
+/obj/item/organ/head_accessory
 	name = "head accessory"
 	desc = "It goes on the head."
 	icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/horns.dm b/modular_nova/modules/customization/modules/surgery/organs/horns.dm
index 02f0084ab24..efb22c9f971 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/horns.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/horns.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/horns
+/obj/item/organ/horns
 	desc = "Why do some people even have horns? Well, this one obviously doesn't."
 	preference = "feature_horns"
 	mutantpart_key = "horns"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm b/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm
index b21e6756cab..3434897a685 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/moth_antennae.dm
@@ -1,3 +1,3 @@
-/obj/item/organ/external/antennae
+/obj/item/organ/antennae
 	mutantpart_key = "moth_antennae"
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Plain", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
diff --git a/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm b/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm
index 4863ab2f55e..aa10a2e02ca 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/moth_markings.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/moth_markings
+/obj/item/organ/moth_markings
 	name = "moth markings"
 	desc = "How did you even get that off...?"
 	icon_state = "random_fly_2"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm b/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm
index 51f97f36097..9f421623ce7 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/neck_accessory.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/neck_accessory
+/obj/item/organ/neck_accessory
 	name = "neck accessory"
 	desc = "It goes on the neck."
 	icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/nif.dm b/modular_nova/modules/customization/modules/surgery/organs/nif.dm
index 1398ba45136..854f3c4688c 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/nif.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/nif.dm
@@ -17,7 +17,7 @@
 
 /datum/surgery/repair_nif/can_start(mob/user, mob/living/patient)
 	var/mob/living/carbon/human/nif_patient = patient
-	var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+	var/obj/item/organ/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
 
 	if(!nif_patient || !installed_nif)
 		return FALSE
@@ -49,7 +49,7 @@
 	)
 
 	var/mob/living/carbon/human/nif_patient = target
-	var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+	var/obj/item/organ/cyberimp/brain/nif/installed_nif = nif_patient.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
 
 
 	installed_nif.durability = installed_nif.max_durability
diff --git a/modular_nova/modules/customization/modules/surgery/organs/organ.dm b/modular_nova/modules/customization/modules/surgery/organs/organ.dm
index f15b09e9a77..326eb1ca528 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/organ.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/organ.dm
@@ -6,17 +6,17 @@
 	/// Relevant layer flags, as set by the organ's associated sprite_accessory, should there be one.
 	var/relevant_layers
 
-/obj/item/organ/external
+/obj/item/organ
 	///This is for associating an organ with a mutant bodypart. Look at tails for examples
 	var/mutantpart_key
 	var/list/list/mutantpart_info
 
-/obj/item/organ/external/Initialize(mapload)
+/obj/item/organ/Initialize(mapload)
 	. = ..()
 	if(mutantpart_key)
 		color = mutantpart_info[MUTANT_INDEX_COLOR_LIST][1]
 
-/obj/item/organ/external/Remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/Remove(mob/living/carbon/organ_owner, special, movement_flags)
 	// NOVA EDIT ADDITION START
 	if(mutantpart_key)
 		transfer_mutantpart_info(organ_owner, special)
@@ -24,7 +24,7 @@
 	return ..()
 
 /// Copies the organ's mutantpart_info to the owner's mutant_bodyparts
-/obj/item/organ/external/proc/copy_to_mutant_bodyparts(mob/living/carbon/organ_owner, special)
+/obj/item/organ/proc/copy_to_mutant_bodyparts(mob/living/carbon/organ_owner, special)
 	var/mob/living/carbon/human/human_owner = organ_owner
 	if(!istype(human_owner))
 		return
@@ -34,7 +34,7 @@
 		human_owner.update_body()
 
 /// Copies the mob's mutant_bodyparts data to an organ's mutantpart_info for consistency e.g. on organ removal
-/obj/item/organ/external/proc/transfer_mutantpart_info(mob/living/carbon/organ_owner, special)
+/obj/item/organ/proc/transfer_mutantpart_info(mob/living/carbon/organ_owner, special)
 	var/mob/living/carbon/human/human_owner = organ_owner
 	if(!istype(human_owner))
 		return
@@ -50,7 +50,7 @@
 /obj/item/organ/proc/build_from_dna(datum/dna/DNA, associated_key)
 	return
 
-/obj/item/organ/external/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/build_from_dna(datum/dna/DNA, associated_key)
 	mutantpart_key = associated_key
 	mutantpart_info = DNA.mutant_bodyparts[associated_key].Copy()
 	color = mutantpart_info[MUTANT_INDEX_COLOR_LIST][1]
diff --git a/modular_nova/modules/customization/modules/surgery/organs/pod.dm b/modular_nova/modules/customization/modules/surgery/organs/pod.dm
index e545f3f17c0..2c53d32f204 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/pod.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/pod.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/pod_hair
+/obj/item/organ/pod_hair
 	name = "podperson hair"
 	desc = "Base for many-o-salads."
 
diff --git a/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm b/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm
index 9bd71abe4c3..7240a8f16e6 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/skrell_hair
+/obj/item/organ/skrell_hair
 	name = "skrell_hair"
 	desc = "Hair isn't really the best way to describe it, but you really can't think of any other word that makes sense."
 	icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm b/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm
index c9ff539dec6..8cafba48edb 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/synth_antenna.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/synth_antenna
+/obj/item/organ/synth_antenna
 	name = "synth antenna"
 	desc = "Wonder if we'll catch Syndicate frequencies with these..."
 	icon_state = "random_fly_1"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm b/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm
index 7339229ffc5..cbcb700fb79 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/synth_screen.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/synth_screen
+/obj/item/organ/synth_screen
 	name = "synth screen"
 	desc = "Surely that's just a bunch of LEDs and not a retro-projected screen, right? Right...?"
 	icon_state = "tonguerobot"
diff --git a/modular_nova/modules/customization/modules/surgery/organs/tails.dm b/modular_nova/modules/customization/modules/surgery/organs/tails.dm
index 059cd5779d1..761a3247340 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/tails.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/tails.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/tail
+/obj/item/organ/tail
 	mutantpart_key = "tail"
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Smooth", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
 	var/can_wag = TRUE
@@ -44,22 +44,22 @@
 	return TRUE
 
 
-/obj/item/organ/external/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	if(sprite_accessory_flags & SPRITE_ACCESSORY_WAG_ABLE)
 		wag_flags |= WAG_ABLE
 	return ..()
 
-/obj/item/organ/external/tail/cat
+/obj/item/organ/tail/cat
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Cat", MUTANT_INDEX_COLOR_LIST = list("#FFAA00"))
 
-/obj/item/organ/external/tail/monkey
+/obj/item/organ/tail/monkey
 	wag_flags = WAG_ABLE // waggable monkey tails
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Monkey", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
 
-/obj/item/organ/external/tail/lizard
+/obj/item/organ/tail/lizard
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Smooth", MUTANT_INDEX_COLOR_LIST = list("#DDFFDD"))
 
-/obj/item/organ/external/tail/fluffy
+/obj/item/organ/tail/fluffy
 	name = "fluffy tail"
 
-/obj/item/organ/external/tail/fluffy/no_wag
+/obj/item/organ/tail/fluffy/no_wag
diff --git a/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm b/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm
index 4f6889f6c78..1c35e7f21ab 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/taur_body.dm
@@ -1,10 +1,11 @@
-/obj/item/organ/external/taur_body
+/obj/item/organ/taur_body
 	name = "taur body"
 	zone = BODY_ZONE_CHEST
 	slot = ORGAN_SLOT_EXTERNAL_TAUR
 	external_bodyshapes = BODYSHAPE_TAUR
 	use_mob_sprite_as_obj_sprite = TRUE
 
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
 	preference = "feature_taur"
 	mutantpart_key = "taur"
 	mutantpart_info = list(MUTANT_INDEX_NAME = "None", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF", "#FFFFFF", "#FFFFFF"))
@@ -45,15 +46,15 @@
 	/// When considering how much to offset our rider, we multiply size scaling against this.
 	var/riding_offset_scaling_mult = 0.8
 
-/obj/item/organ/external/taur_body/horselike
+/obj/item/organ/taur_body/horselike
 	can_use_saddle = TRUE
 
-/obj/item/organ/external/taur_body/horselike/synth
-	organ_flags = ORGAN_ROBOTIC
+/obj/item/organ/taur_body/horselike/synth
+	organ_flags = ORGAN_ROBOTIC | ORGAN_EXTERNAL
 
-/obj/item/organ/external/taur_body/horselike/deer
+/obj/item/organ/taur_body/horselike/deer
 
-/obj/item/organ/external/taur_body/horselike/deer/Initialize(mapload)
+/obj/item/organ/taur_body/horselike/deer/Initialize(mapload)
 	. = ..()
 
 	taur_specific_clothing_y_offsets = list(
@@ -63,26 +64,26 @@
 		TEXT_SOUTH = 0,
 	)
 
-/obj/item/organ/external/taur_body/serpentine
+/obj/item/organ/taur_body/serpentine
 	left_leg_name = "upper serpentine body"
 	right_leg_name = "lower serpentine body"
 
-/obj/item/organ/external/taur_body/serpentine/synth
-	organ_flags = ORGAN_ROBOTIC
+/obj/item/organ/taur_body/serpentine/synth
+	organ_flags = ORGAN_ROBOTIC | ORGAN_EXTERNAL
 
-/obj/item/organ/external/taur_body/spider
+/obj/item/organ/taur_body/spider
 	left_leg_name = "left legs"
 	right_leg_name = "right legs"
 
-/obj/item/organ/external/taur_body/tentacle
+/obj/item/organ/taur_body/tentacle
 	left_leg_name = "front tentacles"
 	right_leg_name = "back tentacles"
 
-/obj/item/organ/external/taur_body/blob
+/obj/item/organ/taur_body/blob
 	left_leg_name = "outer blob"
 	right_leg_name = "inner blob"
 
-/obj/item/organ/external/taur_body/anthro
+/obj/item/organ/taur_body/anthro
 	left_leg_name = null
 	right_leg_name = null
 
@@ -102,7 +103,7 @@
 	return SSaccessories.sprite_accessories["taur"]
 
 
-/obj/item/organ/external/taur_body/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/taur_body/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	if(sprite_accessory_flags & SPRITE_ACCESSORY_HIDE_SHOES)
 		external_bodyshapes |= BODYSHAPE_HIDE_SHOES
 
@@ -143,7 +144,7 @@
 	return ..()
 
 
-/obj/item/organ/external/taur_body/mob_remove(mob/living/carbon/organ_owner, special, moving)
+/obj/item/organ/taur_body/mob_remove(mob/living/carbon/organ_owner, special, moving)
 	if(QDELETED(owner))
 		return ..()
 
@@ -170,7 +171,7 @@
 
 	return ..()
 
-/obj/item/organ/external/taur_body/Destroy()
+/obj/item/organ/taur_body/Destroy()
 	. = ..()
 	if(old_left_leg)
 		QDEL_NULL(old_left_leg)
@@ -178,7 +179,7 @@
 	if(old_right_leg)
 		QDEL_NULL(old_right_leg)
 
-/obj/item/organ/external/taur_body/proc/get_riding_offset(oversized = FALSE)
+/obj/item/organ/taur_body/proc/get_riding_offset(oversized = FALSE)
 	var/size_scaling = (owner.dna.features["body_size"] / BODY_SIZE_NORMAL) - 1
 	var/scaling_mult = 1 + (size_scaling * riding_offset_scaling_mult)
 
diff --git a/modular_nova/modules/customization/modules/surgery/organs/vox.dm b/modular_nova/modules/customization/modules/surgery/organs/vox.dm
index f7407a73b15..cf22d598097 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/vox.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/vox.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/lungs/nitrogen
+/obj/item/organ/lungs/nitrogen
 	name = "nitrogen lungs"
 	desc = "A set of lungs for breathing nitrogen."
 	safe_oxygen_min = 0	//Dont need oxygen
@@ -8,7 +8,7 @@
 	oxy_breath_dam_min = 6
 	oxy_breath_dam_max = 20
 
-/obj/item/organ/internal/lungs/nitrogen/vox
+/obj/item/organ/lungs/nitrogen/vox
 	name = "vox lungs"
 	desc = "They're filled with dust... wow."
 	icon_state = "lungs-c"
@@ -18,11 +18,11 @@
 	cold_level_3_threshold = 0
 	organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
 
-/obj/item/organ/internal/brain/vox
+/obj/item/organ/brain/vox
 	name = "vox brain"
 	organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
 
-/obj/item/organ/internal/brain/vox/emp_act(severity)
+/obj/item/organ/brain/vox/emp_act(severity)
 	. = ..()
 	if(. & EMP_PROTECT_SELF)
 		return
diff --git a/modular_nova/modules/customization/modules/surgery/organs/wings.dm b/modular_nova/modules/customization/modules/surgery/organs/wings.dm
index 924d7cee9b1..20142f9d18e 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/wings.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/wings.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/wings
+/obj/item/organ/wings
 	name = "wings"
 	desc = "A pair of wings. Those may or may not allow you to fly... or at the very least flap."
 	zone = BODY_ZONE_CHEST
@@ -27,7 +27,7 @@
 /datum/bodypart_overlay/mutant/wings/override_color(rgb_value)
 	return draw_color
 
-/obj/item/organ/external/wings/moth
+/obj/item/organ/wings/moth
 	name = "moth wings"
 	desc = "A pair of fuzzy moth wings."
 	flight_for_species = list(SPECIES_MOTH)
@@ -36,7 +36,7 @@
 	///Our associated terrorize spell, for antagonist nightmares
 	var/datum/action/cooldown/spell/moth_and_dash/our_dash
 
-/obj/item/organ/external/wings/moth/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/wings/moth/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 
 	if(ismoth(organ_owner))
@@ -46,7 +46,7 @@
 		our_dash = new(organ_owner)
 		our_dash.Grant(organ_owner)
 
-/obj/item/organ/external/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
+/obj/item/organ/wings/moth/on_mob_remove(mob/living/carbon/organ_owner)
 	. = ..()
 	QDEL_NULL(our_climb)
 	QDEL_NULL(our_dash)
@@ -185,21 +185,21 @@
 			return TRUE
 	return FALSE
 
-/obj/item/organ/external/wings/flight
+/obj/item/organ/wings/flight
 	unconditional_flight = TRUE
 	can_open = TRUE
 
-/obj/item/organ/external/wings/flight/angel
+/obj/item/organ/wings/flight/angel
 	name = "angel wings"
 	desc = "A pair of magnificent, feathery wings. They look strong enough to lift you up in the air."
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Angel", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
 
-/obj/item/organ/external/wings/flight/dragon
+/obj/item/organ/wings/flight/dragon
 	name = "dragon wings"
 	desc = "A pair of intimidating, membranous wings. They look strong enough to lift you up in the air."
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Dragon", MUTANT_INDEX_COLOR_LIST = list("#880000"))
 
-/obj/item/organ/external/wings/flight/megamoth
+/obj/item/organ/wings/flight/megamoth
 	name = "megamoth wings"
 	desc = "A pair of horrifyingly large, fuzzy wings. They look strong enough to lift you up in the air."
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Megamoth", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
@@ -243,20 +243,20 @@
 	return COLOR_WHITE // We want to keep those wings as their original color, because it looks better.
 
 
-/obj/item/organ/external/wings/functional
+/obj/item/organ/wings/functional
 	bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional/locked
 
-/obj/item/organ/external/wings/functional/angel
+/obj/item/organ/wings/functional/angel
 	bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional/original_color
 
-/obj/item/organ/external/wings/functional/dragon
+/obj/item/organ/wings/functional/dragon
 	bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional
 
-/obj/item/organ/external/wings/functional/moth
+/obj/item/organ/wings/functional/moth
 	bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional/locked/original_color
 
-/obj/item/organ/external/wings/functional/robotic
+/obj/item/organ/wings/functional/robotic
 	bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional
 
-/obj/item/organ/external/wings/functional/slime
+/obj/item/organ/wings/functional/slime
 	bodypart_overlay = /datum/bodypart_overlay/mutant/wings/functional
diff --git a/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm b/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm
index 5725cc1a9a2..6f64a50c0e8 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/xenodorsal.dm
@@ -1,7 +1,8 @@
-/obj/item/organ/external/xenodorsal
+/obj/item/organ/xenodorsal
 	name = "dorsal spines"
 	desc = "How did that even fit on them...?"
 	icon_state = "random_fly_2"
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
 
 	mutantpart_key = "xenodorsal"
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Standard", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
diff --git a/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm b/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm
index c08af5cb985..70efcd35672 100644
--- a/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm
+++ b/modular_nova/modules/customization/modules/surgery/organs/xenohead.dm
@@ -1,7 +1,8 @@
-/obj/item/organ/external/xenohead
+/obj/item/organ/xenohead
 	name = "xeno head"
 	desc = "How did you take that off?"
 	icon_state = "random_fly_2"
+	organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
 
 	mutantpart_key = "xenohead"
 	mutantpart_info = list(MUTANT_INDEX_NAME = "Standard", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF"))
diff --git a/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm b/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm
index 8011e4e0d74..4bbb3edca93 100644
--- a/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm
+++ b/modular_nova/modules/customization/modules/taur_mechanics/code/human.dm
@@ -90,8 +90,8 @@
 
 	var/mob/living/carbon/human/human_target = to_buckle
 
-	var/obj/item/organ/external/taur_body/taur_body = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
-	var/obj/item/organ/external/taur_body/other_taur_body = human_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+	var/obj/item/organ/taur_body/taur_body = get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+	var/obj/item/organ/taur_body/other_taur_body = human_target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
 
 	if (isnull(taur_body) || isnull(other_taur_body))
 		return TRUE
diff --git a/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm b/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm
index 80bff206af1..0c5f3a21f7b 100644
--- a/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm
+++ b/modular_nova/modules/customization/modules/taur_mechanics/code/saddle_component.dm
@@ -72,12 +72,5 @@
 /datum/component/carbon_saddle/proc/wearer_has_requisite_organ(mob/living/carbon/target)
 	if (!istype(target))
 		return TRUE
-
-	for (var/obj/item/organ/iter_organ as anything in target.organs)
-		if (!istype(iter_organ, /obj/item/organ/external/taur_body))
-			continue
-		var/obj/item/organ/external/taur_body/taur_body = iter_organ
-		if (taur_body.can_use_saddle)
-			return TRUE
-
-	return FALSE
+	var/obj/item/organ/taur_body/taur_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+	return istype(taur_body) && taur_body.can_use_saddle
diff --git a/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm b/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm
index d810478e7e9..46b4218d8b2 100644
--- a/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm
+++ b/modular_nova/modules/customization/modules/taur_mechanics/code/taur_clothing_offset.dm
@@ -26,7 +26,7 @@
 		return
 
 	var/mob/living/carbon/target_carbon = signal_source.loc
-	var/obj/item/organ/external/taur_body/taur_body = target_carbon.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+	var/obj/item/organ/taur_body/taur_body = target_carbon.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
 	if (!istype(taur_body))
 		return
 	var/icon_dir = target_carbon.dir
@@ -56,7 +56,7 @@
 /datum/component/taur_clothing_offset/proc/wearer_dir_changed(mob/living/carbon/human/signal_source, old_dir, new_dir)
 	SIGNAL_HANDLER
 
-	var/obj/item/organ/external/taur_body/taur_body = signal_source.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+	var/obj/item/organ/taur_body/taur_body = signal_source.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
 	if (isnull(taur_body))
 		return
 
diff --git a/modular_nova/modules/customization/readme.md b/modular_nova/modules/customization/readme.md
index 6a6246b751a..92bc27ab877 100644
--- a/modular_nova/modules/customization/readme.md
+++ b/modular_nova/modules/customization/readme.md
@@ -26,8 +26,8 @@ Re-writes how mutant bodyparts exist and how they're handled. Adds in a per limb
  ./code/modules/mob/living/carbon/human/species_types/felinid.dm > the 5 procs related to wagging tail
  ./code/modules/mob/living/carbon/human/species_types/lizardpeople.dm the 5 procs related to wagging tail and - /datum/species/lizard/on_species_gain()
  ./code/modules/surgery/bodyparts/_bodyparts.dm > /obj/item/bodypart/proc/get_limb_icon()
- ./code/modules/surgery/organs/ears.dm > /obj/item/organ/internal/ears/cat/Insert(), /obj/item/organ/internal/ears/cat/Remove()
- ./code/modules/surgery/organs/tails.dm > /obj/item/organ/external/tail/cat/Insert(), /obj/item/organ/external/tail/cat/Remove(), /obj/item/organ/external/tail/lizard/Initialize(mapload), /obj/item/organ/external/tail/lizard/Insert(), /obj/item/organ/external/tail/lizard/Remove()
+ ./code/modules/surgery/organs/ears.dm > /obj/item/organ/ears/cat/Insert(), /obj/item/organ/ears/cat/Remove()
+ ./code/modules/surgery/organs/tails.dm > /obj/item/organ/tail/cat/Insert(), /obj/item/organ/tail/cat/Remove(), /obj/item/organ/tail/lizard/Initialize(mapload), /obj/item/organ/tail/lizard/Insert(), /obj/item/organ/tail/lizard/Remove()
  ./code/modules/surgery/bodyparts/dismemberment.dm > /mob/living/carbon/regenerate_limb()
  ./code/modules/mob/living/carbon/human/status_procs.dm > /mob/living/carbon/human/become_husk() > APPENDED
  ./code/modules/reagents/chemistry/holder.dm > /datum/reagents/metabolize()
@@ -46,8 +46,8 @@ Re-writes how mutant bodyparts exist and how they're handled. Adds in a per limb
 ### Defines:
 
 ./code/modules/surgery/organs/tongue.dm > var/static/list/languages_possible_base - added 2 languages
-./code/modules/mob/living/carbon/human/species_types/lizardpeople.dm > commented out "mutant_organs = list(/obj/item/organ/external/tail/lizard)"
-./code/modules/mob/living/carbon/human/species_types/felinid.dm > commented out "mutantears = /obj/item/organ/internal/ears/cat" and "mutant_organs = list(/obj/item/organ/external/tail/cat)"
+./code/modules/mob/living/carbon/human/species_types/lizardpeople.dm > commented out "mutant_organs = list(/obj/item/organ/tail/lizard)"
+./code/modules/mob/living/carbon/human/species_types/felinid.dm > commented out "mutantears = /obj/item/organ/ears/cat" and "mutant_organs = list(/obj/item/organ/tail/cat)"
 ./code/modules/mob/living/carbon/human/species.dm > var/list/list/mutant_bodyparts (added typed list type)
 ./code/_globalvars/lists/flavor_misc.dm > Removed accessory list defines
 .\code\datums\keybindings\living.dm > /datum/keybinding/living/look_up > from L to P
diff --git a/modular_nova/modules/echolocation_quirk/code/echolocation.dm b/modular_nova/modules/echolocation_quirk/code/echolocation.dm
index a8193754215..fbec8a95f30 100644
--- a/modular_nova/modules/echolocation_quirk/code/echolocation.dm
+++ b/modular_nova/modules/echolocation_quirk/code/echolocation.dm
@@ -42,7 +42,7 @@
 	esp_color.update_colour(col)
 
 	// double the ear/hearing damage multiplier from any source.
-	var/obj/item/organ/internal/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS)
 	if (!istype(echo_ears))
 		return
 
@@ -57,7 +57,7 @@
 	QDEL_NULL(esp) // echolocation component removal handles graceful disposal of everything above except the ears
 	QDEL_NULL(added_action) // remove the stall action, too
 	var/mob/living/carbon/human/human_holder = quirk_holder
-	var/obj/item/organ/internal/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/echo_ears = human_holder.get_organ_slot(ORGAN_SLOT_EARS)
 	if (!istype(echo_ears))
 		return
 	echo_ears.damage_multiplier = initial(echo_ears.damage_multiplier)
diff --git a/modular_nova/modules/emote_panel/code/emote_panel.dm b/modular_nova/modules/emote_panel/code/emote_panel.dm
index 23690d65fee..d1a36163a19 100644
--- a/modular_nova/modules/emote_panel/code/emote_panel.dm
+++ b/modular_nova/modules/emote_panel/code/emote_panel.dm
@@ -237,7 +237,7 @@
 			available_emotes += human_emotes
 			var/mob/living/carbon/human/current_mob = src
 			// Checking if can wag tail
-			var/obj/item/organ/external/tail/tail = current_mob.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
+			var/obj/item/organ/tail/tail = current_mob.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
 			if(!(tail?.wag_flags & WAG_ABLE))
 				available_emotes -= /mob/living/carbon/human/proc/emote_wag
 			// Checking if has wings
diff --git a/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm b/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm
index 8f7cf24e552..23e75885783 100644
--- a/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm
+++ b/modular_nova/modules/emotes/code/additionalemotes/turf_emote.dm
@@ -52,11 +52,11 @@
 				user.allowed_turfs += "holoseat"
 
 		//wings
-		if((istype(user.get_organ_slot(ORGAN_SLOT_WINGS), /obj/item/organ/external/wings/moth)) || HAS_TRAIT(user, TRAIT_SPARKLE_ASPECT))
+		if((istype(user.get_organ_slot(ORGAN_SLOT_WINGS), /obj/item/organ/wings/moth)) || HAS_TRAIT(user, TRAIT_SPARKLE_ASPECT))
 			user.allowed_turfs += "dust" //moth's dust ✨
 
 		//body parts
-		if(istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/external/tail))
+		if(istype(user.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail))
 			var/name = human_user.dna.species.mutant_bodyparts["tail"][MUTANT_INDEX_NAME]
 			var/datum/sprite_accessory/tails/tail = SSaccessories.sprite_accessories["tail"][name]
 			if(tail.fluffy)
diff --git a/modular_nova/modules/exp_corps/code/clothing.dm b/modular_nova/modules/exp_corps/code/clothing.dm
index 0e193b4ee3a..360c32689bd 100644
--- a/modular_nova/modules/exp_corps/code/clothing.dm
+++ b/modular_nova/modules/exp_corps/code/clothing.dm
@@ -225,7 +225,7 @@
 
 /obj/item/clothing/head/helmet/expeditionary_corps/proc/enable_nv(mob/user)
 	if(current_user)
-		var/obj/item/organ/internal/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/internal/eyes)
+		var/obj/item/organ/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/eyes)
 		if(my_eyes)
 			my_eyes.color_cutoffs = list(10, 30, 10)
 			my_eyes.flash_protect = FLASH_PROTECTION_SENSITIVE
@@ -233,7 +233,7 @@
 
 /obj/item/clothing/head/helmet/expeditionary_corps/proc/disable_nv()
 	if(current_user)
-		var/obj/item/organ/internal/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/internal/eyes)
+		var/obj/item/organ/eyes/my_eyes = current_user.get_organ_by_type(/obj/item/organ/eyes)
 		if(my_eyes)
 			my_eyes.color_cutoffs = initial(my_eyes.color_cutoffs)
 			my_eyes.flash_protect = initial(my_eyes.flash_protect)
diff --git a/modular_nova/modules/faction/code/mapping/mapping_helpers.dm b/modular_nova/modules/faction/code/mapping/mapping_helpers.dm
index 4e301603cb4..0d4360247dd 100644
--- a/modular_nova/modules/faction/code/mapping/mapping_helpers.dm
+++ b/modular_nova/modules/faction/code/mapping/mapping_helpers.dm
@@ -202,11 +202,11 @@
 			new /obj/item/mod/control/pre_equipped/elite(src)
 		if(5) //Implants
 			new /obj/item/storage/box/cyber_implants(src)
-			new /obj/item/organ/internal/cyberimp/arm/combat(src)
-			new /obj/item/organ/internal/cyberimp/arm/surgery(src)
-			new /obj/item/organ/internal/cyberimp/arm/baton(src)
-			new /obj/item/organ/internal/cyberimp/arm/toolset(src)
-			new /obj/item/organ/internal/cyberimp/arm/gun/taser(src)
+			new /obj/item/organ/cyberimp/arm/combat(src)
+			new /obj/item/organ/cyberimp/arm/surgery(src)
+			new /obj/item/organ/cyberimp/arm/baton(src)
+			new /obj/item/organ/cyberimp/arm/toolset(src)
+			new /obj/item/organ/cyberimp/arm/gun/taser(src)
 
 /obj/structure/closet/crate/secure/tradership_cargo_valuable/populate_contents_immediate()
 	. = ..()
diff --git a/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm b/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm
index 3eff36e55b3..d3006d4f038 100644
--- a/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm
+++ b/modular_nova/modules/icemoon_additions/code/icecat_recipes.dm
@@ -154,8 +154,8 @@
         to_chat(user, span_warning("You have no idea how to use this freezing concoction."))
         return
 
-    if(istype(interacting_with, /obj/item/organ/internal/lungs))
-        var/obj/item/organ/internal/lungs/target_lungs = interacting_with
+    if(istype(interacting_with, /obj/item/organ/lungs))
+        var/obj/item/organ/lungs/target_lungs = interacting_with
         if(IS_ROBOTIC_ORGAN(target_lungs))
             user.balloon_alert(user, "The lungs have to be organic!")
             return
@@ -163,7 +163,7 @@
         playsound(location, 'sound/effects/slosh.ogg', 25, TRUE)
         user.visible_message(span_notice("[user] pours a strange blue liquid over the set of lungs. The flesh starts glistening in a strange cyan light, transforming before your very eyes!"),
             span_notice("Recalling the instructions for the lung transfiguration ritual, you pour the liquid over the flesh of the organ. Soon, the lungs glow in a mute cyan light, before they turn dim and change form before your very eyes!"))
-        var/obj/item/organ/internal/lungs/icebox_adapted/new_lungs = new(location)
+        var/obj/item/organ/lungs/icebox_adapted/new_lungs = new(location)
         new_lungs.damage = target_lungs.damage
         qdel(target_lungs)
         qdel(src)
diff --git a/modular_nova/modules/implants/code/augments_arms.dm b/modular_nova/modules/implants/code/augments_arms.dm
index 54bfdc2837f..3be335fdcdd 100644
--- a/modular_nova/modules/implants/code/augments_arms.dm
+++ b/modular_nova/modules/implants/code/augments_arms.dm
@@ -37,14 +37,14 @@
 	armour_penetration = 10 //Energy isn't as good at going through armor as it is through flesh alone.
 	hitsound = 'sound/items/weapons/blade1.ogg'
 
-/obj/item/organ/internal/cyberimp/arm/armblade
+/obj/item/organ/cyberimp/arm/armblade
 	name = "arm blade implant"
 	desc = "An integrated blade implant designed to be installed into a persons arm. Stylish and deadly; Although, being caught with this without proper permits is sure to draw unwanted attention."
 	items_to_create = list(/obj/item/melee/implantarmblade)
 	icon = 'modular_nova/modules/implants/icons/implanted_blade.dmi'
 	icon_state = "mantis_blade"
 
-/obj/item/organ/internal/cyberimp/arm/armblade/emag_act()
+/obj/item/organ/cyberimp/arm/armblade/emag_act()
 	if(obj_flags & EMAGGED)
 		return FALSE
 	for(var/datum/weakref/created_item in items_list)
@@ -54,7 +54,7 @@
 
 /obj/item/autosurgeon/syndicate/armblade
 	name = "armblade autosurgeon"
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/armblade
+	starting_organ = /obj/item/organ/cyberimp/arm/armblade
 
 /obj/item/knife/razor_claws
 	name = "implanted razor claws"
@@ -122,7 +122,7 @@
 	qdel(stone)
 	return ..()
 
-/obj/item/organ/internal/cyberimp/arm/razor_claws
+/obj/item/organ/cyberimp/arm/razor_claws
 	name = "razor claws implant"
 	desc = "A set of hidden, retractable blades built into the fingertips; cyborg mercenary approved."
 	items_to_create = list(/obj/item/knife/razor_claws)
@@ -133,11 +133,11 @@
 	retract_sound = 'sound/items/sheath.ogg'
 
 /// bespoke subtypes for augs menu since it's a bit wonky
-/obj/item/organ/internal/cyberimp/arm/razor_claws/right_arm
+/obj/item/organ/cyberimp/arm/razor_claws/right_arm
     zone = BODY_ZONE_R_ARM
     slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/razor_claws/left_arm
+/obj/item/organ/cyberimp/arm/razor_claws/left_arm
     zone = BODY_ZONE_L_ARM
     slot = ORGAN_SLOT_LEFT_ARM_AUG
 
@@ -148,7 +148,7 @@
 	button_icon = 'modular_nova/master_files/icons/hud/actions.dmi'
 	button_icon_state = "wolverine"
 
-/obj/item/organ/internal/cyberimp/arm/mining_drill
+/obj/item/organ/cyberimp/arm/mining_drill
 	name = "\improper Dalba Masterworks 'Burrower' Integrated Drill"
 	desc = "Extending from a stabilization bracer built into the upper forearm, this implant allows for a steel mining drill to extend over the user's hand. Little by little, we advance a bit further with each turn. That's how a drill works!"
 	icon = 'modular_nova/modules/implants/icons/drillimplant.dmi'
@@ -159,11 +159,11 @@
 	/// The bodypart overlay datum we should apply to whatever mob we are put into's someone's arm
 	var/datum/bodypart_overlay/simple/steel_drill/drill_overlay
 
-/obj/item/organ/internal/cyberimp/arm/mining_drill/right_arm //You know the drill.
+/obj/item/organ/cyberimp/arm/mining_drill/right_arm //You know the drill.
     zone = BODY_ZONE_R_ARM
     slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/mining_drill/left_arm
+/obj/item/organ/cyberimp/arm/mining_drill/left_arm
     zone = BODY_ZONE_L_ARM
     slot = ORGAN_SLOT_LEFT_ARM_AUG
 
@@ -177,7 +177,7 @@
 /datum/bodypart_overlay/simple/steel_drill/right
 	icon_state = "steel_right"
 
-/obj/item/organ/internal/cyberimp/arm/mining_drill/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
+/obj/item/organ/cyberimp/arm/mining_drill/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
 	. = ..()
 	if(isteshari(owner))
 		return
@@ -188,7 +188,7 @@
 	limb.add_bodypart_overlay(drill_overlay)
 	owner?.update_body_parts()
 
-/obj/item/organ/internal/cyberimp/arm/mining_drill/on_mob_remove(mob/living/carbon/arm_owner)
+/obj/item/organ/cyberimp/arm/mining_drill/on_mob_remove(mob/living/carbon/arm_owner)
 	. = ..()
 	bodypart_owner?.remove_bodypart_overlay(drill_overlay)
 	arm_owner.update_body_parts()
@@ -232,7 +232,7 @@
 	playsound(user, 'modular_nova/master_files/sound/effects/robot_smoke.ogg', 50, FALSE)
 	user.visible_message(span_warning("[user] spins [src]'s bit, accelerating for a moment to <span class='bolddanger'>thousands of RPM.</span>"), span_notice("You spin [src]'s bit, accelerating for a moment to <span class='bolddanger'>thousands of RPM.</span>"))
 
-/obj/item/organ/internal/cyberimp/arm/mining_drill/diamond
+/obj/item/organ/cyberimp/arm/mining_drill/diamond
 	name = "\improper Dalba Masterworks 'Tunneler' Diamond Integrated Drill"
 	desc = "Extending from a stabilization bracer built into the upper forearm, this implant allows for a masterwork diamond mining drill to extend over the user's hand. This drill will open a hole in the universe, and that hole will be a path for those behind us!"
 	icon_state = "diamond"
@@ -249,14 +249,14 @@
 	usesound = 'sound/items/weapons/drill.ogg'
 	hitsound = 'sound/items/weapons/drill.ogg'
 
-/obj/item/organ/internal/cyberimp/arm/hacker
+/obj/item/organ/cyberimp/arm/hacker
 	name = "hacking arm implant"
 	desc = "An small arm implant containing an advanced screwdriver, wirecutters, and multitool designed for engineers and on-the-field machine modification. Actually legal, despite what the name may make you think."
 	icon = 'icons/obj/items_cyborg.dmi'
 	icon_state = "toolkit_engiborg_multitool"
 	items_to_create = list(/obj/item/screwdriver/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/abductor/implant)
 
-/obj/item/organ/internal/cyberimp/arm/botany
+/obj/item/organ/cyberimp/arm/botany
 	name = "botany arm implant"
 	desc = "A rather simple arm implant containing tools used in gardening and botanical research."
 	items_to_create = list(/obj/item/cultivator, /obj/item/shovel/spade, /obj/item/hatchet, /obj/item/gun/energy/floragun, /obj/item/plant_analyzer, /obj/item/geneshears, /obj/item/secateurs, /obj/item/storage/bag/plants, /obj/item/storage/bag/plants/portaseeder)
@@ -280,7 +280,7 @@
 	tool_behaviour = TOOL_SAW
 	toolspeed = 1
 
-/obj/item/organ/internal/cyberimp/arm/botany/emag_act()
+/obj/item/organ/cyberimp/arm/botany/emag_act()
 	if(obj_flags & EMAGGED)
 		return FALSE
 	for(var/datum/weakref/created_item in items_list)
@@ -295,12 +295,12 @@
 	icon = 'icons/obj/items_cyborg.dmi'
 	icon_state = "toolkit_engiborg_multitool"
 
-/obj/item/organ/internal/cyberimp/arm/janitor
+/obj/item/organ/cyberimp/arm/janitor
 	name = "janitorial tools implant"
 	desc = "A set of janitorial tools on the user's arm."
 	items_to_create = list(/obj/item/lightreplacer, /obj/item/holosign_creator, /obj/item/soap/nanotrasen, /obj/item/reagent_containers/spray/cyborg_drying, /obj/item/mop/advanced, /obj/item/paint/paint_remover, /obj/item/reagent_containers/cup/beaker/large, /obj/item/reagent_containers/spray/cleaner) //Beaker if for refilling sprays
 
-/obj/item/organ/internal/cyberimp/arm/janitor/emag_act()
+/obj/item/organ/cyberimp/arm/janitor/emag_act()
 	if(obj_flags & EMAGGED)
 		return FALSE
 	for(var/datum/weakref/created_item in items_list)
@@ -310,12 +310,12 @@
 	obj_flags |= EMAGGED
 	return TRUE
 
-/obj/item/organ/internal/cyberimp/arm/lighter
+/obj/item/organ/cyberimp/arm/lighter
 	name = "lighter implant"
 	desc = "A... implanted lighter. Incredibly useless."
 	items_to_create = list(/obj/item/lighter/greyscale) //Hilariously useless.
 
-/obj/item/organ/internal/cyberimp/arm/lighter/emag_act()
+/obj/item/organ/cyberimp/arm/lighter/emag_act()
 	if(obj_flags & EMAGGED)
 		return FALSE
 	for(var/datum/weakref/created_item in items_list)
@@ -372,7 +372,7 @@
 		),
 	)
 
-/obj/item/organ/internal/cyberimp/arm/razorwire
+/obj/item/organ/cyberimp/arm/razorwire
 	name = "razorwire spool implant"
 	desc = "An integrated spool of razorwire, capable of being used as a weapon when whipped at your foes. \
 		Built into the back of your hand, try your best to not get it tangled."
@@ -382,7 +382,7 @@
 
 /obj/item/autosurgeon/syndicate/razorwire
 	name = "razorwire autosurgeon"
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/razorwire
+	starting_organ = /obj/item/organ/cyberimp/arm/razorwire
 
 // Shell launch system, an arm mounted single-shot shotgun/.980 grenade launcher that comes out of your arm
 
@@ -425,7 +425,7 @@
 	max_ammo = 1
 	multiload = FALSE
 
-/obj/item/organ/internal/cyberimp/arm/shell_launcher
+/obj/item/organ/cyberimp/arm/shell_launcher
 	name = "shell launch system implant"
 	desc = "A mounted, single-shot housing for a shell launch cannon; capable of firing either twelve gauge shotgun shells, or .980 Tydhouer grenades."
 	items_to_create = list(/obj/item/gun/ballistic/shotgun/shell_launcher)
@@ -434,7 +434,7 @@
 
 /obj/item/autosurgeon/syndicate/shell_launcher
 	name = "shell launcher autosurgeon"
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/shell_launcher
+	starting_organ = /obj/item/organ/cyberimp/arm/shell_launcher
 
 #undef KNIFE_HITSOUND
 #undef KNIFE_USESOUND
diff --git a/modular_nova/modules/implants/code/augments_chest.dm b/modular_nova/modules/implants/code/augments_chest.dm
index 7dd0395bd6c..16191776a3c 100644
--- a/modular_nova/modules/implants/code/augments_chest.dm
+++ b/modular_nova/modules/implants/code/augments_chest.dm
@@ -1,7 +1,7 @@
 // for readability's sake, define here to match the healthscan() proc's use of it
 // if someone updates that upstream, fix that here too, wouldja?
 
-/obj/item/organ/internal/cyberimp/chest/scanner
+/obj/item/organ/cyberimp/chest/scanner
 	name = "internal health analyzer"
 	desc = "An advanced health analyzer implant, designed to directly interface with a host's body and relay scan information to the brain on command."
 	slot = ORGAN_SLOT_SCANNER
@@ -17,7 +17,7 @@
 
 /datum/action/item_action/organ_action/use/internal_analyzer/Trigger(trigger_flags)
 	. = ..()
-	var/obj/item/organ/internal/cyberimp/chest/scanner/our_scanner = target
+	var/obj/item/organ/cyberimp/chest/scanner/our_scanner = target
 	if(our_scanner.organ_flags & ORGAN_FAILING)
 		to_chat(owner, span_warning("Your health analyzer relays an error! It can't interface with your body in its current condition!"))
 		return
diff --git a/modular_nova/modules/implants/code/augments_eyes.dm b/modular_nova/modules/implants/code/augments_eyes.dm
index d940eb5e789..9c8bbfd10e2 100644
--- a/modular_nova/modules/implants/code/augments_eyes.dm
+++ b/modular_nova/modules/implants/code/augments_eyes.dm
@@ -1,23 +1,23 @@
-/obj/item/organ/internal/eyes/robotic
+/obj/item/organ/eyes/robotic
 	icon = 'modular_nova/modules/implants/icons/internal_HA.dmi' //So I had to fucking include the eye sprites
 	icon_state = "cybernetic_eyeballs"
 
-/obj/item/organ/internal/eyes/robotic/xray
+/obj/item/organ/eyes/robotic/xray
 	eye_color_left = "#00ffe5"
 	eye_color_right = "#00ffe5"
 	icon_state = "xray_eyes"
 
-/obj/item/organ/internal/eyes/robotic/thermals
+/obj/item/organ/eyes/robotic/thermals
 	eye_color_left = "#FC0"
 	eye_color_right = "#FC0"
 	icon_state = "thermal_eyes"
 
-/obj/item/organ/internal/eyes/robotic/shield
+/obj/item/organ/eyes/robotic/shield
 	eye_color_left = "#ff2700"
 	eye_color_right = "#ff2700"
 	icon_state = "shielded_eyes"
 
-/obj/item/organ/internal/eyes/night_vision/cyber
+/obj/item/organ/eyes/night_vision/cyber
 	name = "nightvision eyes"
 	icon = 'modular_nova/modules/implants/icons/internal_HA.dmi' //All in the chest implants .dmi
 	icon_state = "eyes_nvcyber"
diff --git a/modular_nova/modules/implants/code/augments_head.dm b/modular_nova/modules/implants/code/augments_head.dm
index d46f9972fd3..3c0b784d373 100644
--- a/modular_nova/modules/implants/code/augments_head.dm
+++ b/modular_nova/modules/implants/code/augments_head.dm
@@ -5,7 +5,7 @@
 
 // An implant that injects you with twitch on demand, acting like a bootleg sandevistan
 
-/obj/item/organ/internal/cyberimp/sensory_enhancer
+/obj/item/organ/cyberimp/sensory_enhancer
 	name = "\improper Qani-Laaca sensory computer"
 	desc = "An experimental implant replacing the spine of organics. When activated, it can give a temporary boost to mental processing speed, \
 		Which many users percieve as a slowing of time and quickening of their ability to act. Due to its nature, it is incompatible with \
@@ -25,7 +25,7 @@
 	/// TODO: Refactor this to be used as a mutant bodypart_overlay instead.
 	var/datum/bodypart_overlay/simple/sensory_enhancer/simple_bodypart_overlay
 
-/obj/item/organ/internal/cyberimp/sensory_enhancer/proc/vomit_blood()
+/obj/item/organ/cyberimp/sensory_enhancer/proc/vomit_blood()
 	owner.spray_blood(owner.dir, 2)
 	owner.emote("cough")
 	owner.visible_message(
@@ -33,7 +33,7 @@
 		span_danger("You feel your chest seize up, a worrying amount of blood flying out of your mouth as you cough uncontrollably.")
 	)
 
-/obj/item/organ/internal/cyberimp/sensory_enhancer/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
+/obj/item/organ/cyberimp/sensory_enhancer/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
 	. = ..()
 	if(isteshari(owner))
 		return
@@ -41,7 +41,7 @@
 	limb.add_bodypart_overlay(simple_bodypart_overlay)
 	owner?.update_body_parts()
 
-/obj/item/organ/internal/cyberimp/sensory_enhancer/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/cyberimp/sensory_enhancer/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	bodypart_owner?.remove_bodypart_overlay(simple_bodypart_overlay)
 	QDEL_NULL(simple_bodypart_overlay)
@@ -49,7 +49,7 @@
 
 /obj/item/autosurgeon/syndicate/sandy
 	name = "\improper Qani-Laaca sensory computer autosurgeon"
-	starting_organ = /obj/item/organ/internal/cyberimp/sensory_enhancer
+	starting_organ = /obj/item/organ/cyberimp/sensory_enhancer
 
 /datum/bodypart_overlay/simple/sensory_enhancer
 	icon = 'modular_nova/modules/implants/icons/implants_onmob.dmi'
@@ -107,7 +107,7 @@
 	button_icon_state = "sandy_overcharge"
 	injection_amount = 20
 
-/obj/item/organ/internal/cyberimp/sensory_enhancer/emp_act(severity)
+/obj/item/organ/cyberimp/sensory_enhancer/emp_act(severity)
 	. = ..()
 	if(!owner || . & EMP_PROTECT_SELF)
 		return
@@ -123,7 +123,7 @@
 
 // Hackerman deck, lets you emag or doorjack things (NO CYBORGS) within a short range of yourself
 
-/obj/item/organ/internal/cyberimp/hackerman_deck
+/obj/item/organ/cyberimp/hackerman_deck
 	name = "\improper Binyat wireless hacking system"
 	desc = "A rare-to-find neural chip that allows its user to interface with nearby machinery \
 		and effect it in (usually) beneficial ways. Due to the rudimentary connection, fine manipulation \
@@ -141,7 +141,7 @@
 	/// TODO: Refactor this to be used as a mutant bodypart_overlay instead.
 	var/datum/bodypart_overlay/simple/hackerman/simple_bodypart_overlay
 
-/obj/item/organ/internal/cyberimp/hackerman_deck/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
+/obj/item/organ/cyberimp/hackerman_deck/on_bodypart_insert(obj/item/bodypart/limb, movement_flags)
 	. = ..()
 	if(isteshari(owner))
 		return
@@ -149,7 +149,7 @@
 	limb.add_bodypart_overlay(simple_bodypart_overlay)
 	owner?.update_body_parts()
 
-/obj/item/organ/internal/cyberimp/hackerman_deck/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/cyberimp/hackerman_deck/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	bodypart_owner?.remove_bodypart_overlay(simple_bodypart_overlay)
 	QDEL_NULL(simple_bodypart_overlay)
@@ -183,7 +183,7 @@
 		/obj/machinery/computer/holodeck,
 		/obj/machinery/computer/emergency_shuttle,
 		/obj/machinery/recycler,
-		/obj/item/organ/internal/cyberimp/arm/armblade,
+		/obj/item/organ/cyberimp/arm/armblade,
 	)
 	/// How far away we can hack things
 	var/hack_range = 2
@@ -232,7 +232,7 @@
 
 	human_owner.adjust_bodytemperature(HACKERMAN_DECK_TEMPERATURE_INCREASE)
 
-/obj/item/organ/internal/cyberimp/hackerman_deck/emp_act(severity)
+/obj/item/organ/cyberimp/hackerman_deck/emp_act(severity)
 	. = ..()
 	if(!owner || . & EMP_PROTECT_SELF)
 		return
diff --git a/modular_nova/modules/implants/code/augments_internal.dm b/modular_nova/modules/implants/code/augments_internal.dm
index 1d52cedeacf..5f550f244e4 100644
--- a/modular_nova/modules/implants/code/augments_internal.dm
+++ b/modular_nova/modules/implants/code/augments_internal.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/brain/anti_sleep
+/obj/item/organ/cyberimp/brain/anti_sleep
 	name = "CNS jumpstarter"
 	desc = "This implant will automatically attempt to jolt you awake when it detects you have fallen unconscious outside of REM sleeping cycles. Has a short cooldown. Conflicts with the CNS Rebooter, making them incompatible with eachother."
 	icon_state = "brain_implant_rebooter"
@@ -6,7 +6,7 @@
 	slot = ORGAN_SLOT_BRAIN_CNS //One or the other, not both.
 	var/cooldown
 
-/obj/item/organ/internal/cyberimp/brain/anti_sleep/on_life(seconds_per_tick, times_fired)
+/obj/item/organ/cyberimp/brain/anti_sleep/on_life(seconds_per_tick, times_fired)
 	if(timeleft(cooldown))
 		return
 
@@ -19,11 +19,11 @@
 	to_chat(owner, span_notice("You feel a rush of energy course through your body!"))
 	cooldown = addtimer(CALLBACK(src, PROC_REF(sleepytimerend)), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE | TIMER_DELETE_ME)
 
-/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/sleepytimerend()
+/obj/item/organ/cyberimp/brain/anti_sleep/proc/sleepytimerend()
 	to_chat(owner, span_notice("You hear a small beep in your head as your CNS Jumpstarter finishes recharging."))
 	cooldown = null
 
-/obj/item/organ/internal/cyberimp/brain/anti_sleep/emp_act(severity)
+/obj/item/organ/cyberimp/brain/anti_sleep/emp_act(severity)
 	. = ..()
 	var/mob/living/carbon/human/human_owner = owner
 	if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
@@ -32,5 +32,5 @@
 	human_owner.AdjustUnconscious(200)
 	cooldown = addtimer(CALLBACK(src, PROC_REF(reboot)), (9 SECONDS / severity), TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE | TIMER_DELETE_ME)
 
-/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/reboot()
+/obj/item/organ/cyberimp/brain/anti_sleep/proc/reboot()
 	organ_flags &= ~ORGAN_FAILING
diff --git a/modular_nova/modules/implants/code/medical_designs.dm b/modular_nova/modules/implants/code/medical_designs.dm
index ebe20540baa..1bebd142782 100644
--- a/modular_nova/modules/implants/code/medical_designs.dm
+++ b/modular_nova/modules/implants/code/medical_designs.dm
@@ -9,7 +9,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 20 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/armblade
+	build_path = /obj/item/organ/cyberimp/arm/armblade
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT,
 	)
@@ -29,7 +29,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 30 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/razorwire
+	build_path = /obj/item/organ/cyberimp/arm/razorwire
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
 	)
@@ -48,7 +48,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 30 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/shell_launcher
+	build_path = /obj/item/organ/cyberimp/arm/shell_launcher
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
 	)
@@ -70,7 +70,7 @@
 		/datum/material/gold = SHEET_MATERIAL_AMOUNT * 2,
 	)
 	construction_time = 30 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/sensory_enhancer
+	build_path = /obj/item/organ/cyberimp/sensory_enhancer
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
 	)
@@ -91,7 +91,7 @@
 		/datum/material/gold = SHEET_MATERIAL_AMOUNT * 2,
 	)
 	construction_time = 30 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/hackerman_deck
+	build_path = /obj/item/organ/cyberimp/hackerman_deck
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
 	)
@@ -108,7 +108,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 20 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/razor_claws
+	build_path = /obj/item/organ/cyberimp/arm/razor_claws
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS,
 	)
@@ -125,7 +125,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 20 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/mining_drill
+	build_path = /obj/item/organ/cyberimp/arm/mining_drill
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS,
 	)
@@ -142,7 +142,7 @@
 		/datum/material/diamond = SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 30 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/mining_drill/diamond
+	build_path = /obj/item/organ/cyberimp/arm/mining_drill/diamond
 	category = list(
 		RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
 	)
@@ -159,7 +159,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 20 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/hacker
+	build_path = /obj/item/organ/cyberimp/arm/hacker
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY,
 	)
@@ -176,7 +176,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 20 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/flash
+	build_path = /obj/item/organ/cyberimp/arm/flash
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT,
 	)
@@ -194,7 +194,7 @@
 		/datum/material/plastic = SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 20 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/botany
+	build_path = /obj/item/organ/cyberimp/arm/botany
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS,
 	)
@@ -213,7 +213,7 @@
 		/datum/material/gold = SMALL_MATERIAL_AMOUNT * 6,
 		/datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/eyes/night_vision/cyber
+	build_path = /obj/item/organ/eyes/night_vision/cyber
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY,
 	)
@@ -231,7 +231,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
 		)
-	build_path = /obj/item/organ/internal/cyberimp/brain/anti_sleep
+	build_path = /obj/item/organ/cyberimp/brain/anti_sleep
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT,
 	)
@@ -249,7 +249,7 @@
 		/datum/material/silver = SHEET_MATERIAL_AMOUNT,
 		/datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/cyberimp/chest/scanner
+	build_path = /obj/item/organ/cyberimp/chest/scanner
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH,
 	)
@@ -266,7 +266,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 20 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/janitor
+	build_path = /obj/item/organ/cyberimp/arm/janitor
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS,
 	)
@@ -283,7 +283,7 @@
 		/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT,
 	)
 	construction_time = 10 SECONDS
-	build_path = /obj/item/organ/internal/cyberimp/arm/lighter
+	build_path = /obj/item/organ/cyberimp/arm/lighter
 	category = list(
 		RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_MISC,
 	)
diff --git a/modular_nova/modules/interaction_menu/code/interaction_datum.dm b/modular_nova/modules/interaction_menu/code/interaction_datum.dm
index 95e6a46e4e7..b9dd186b923 100644
--- a/modular_nova/modules/interaction_menu/code/interaction_datum.dm
+++ b/modular_nova/modules/interaction_menu/code/interaction_datum.dm
@@ -62,7 +62,7 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction)
 
 	if(user_required_parts.len)
 		for(var/thing in user_required_parts)
-			var/obj/item/organ/external/genital/required_part = user.get_organ_slot(thing)
+			var/obj/item/organ/genital/required_part = user.get_organ_slot(thing)
 			if(isnull(required_part))
 				return FALSE
 			if(!required_part.is_exposed())
@@ -70,7 +70,7 @@ GLOBAL_LIST_EMPTY_TYPED(interaction_instances, /datum/interaction)
 
 	if(target_required_parts.len)
 		for(var/thing in target_required_parts)
-			var/obj/item/organ/external/genital/required_part = target.get_organ_slot(thing)
+			var/obj/item/organ/genital/required_part = target.get_organ_slot(thing)
 			if(isnull(required_part))
 				return FALSE
 			if(!required_part.is_exposed())
diff --git a/modular_nova/modules/modular_implants/code/misc_devices.dm b/modular_nova/modules/modular_implants/code/misc_devices.dm
index 8e0e0f1a034..755b5078871 100644
--- a/modular_nova/modules/modular_implants/code/misc_devices.dm
+++ b/modular_nova/modules/modular_implants/code/misc_devices.dm
@@ -13,7 +13,7 @@
 
 /obj/item/nifsoft_remover/attack(mob/living/carbon/human/target_mob, mob/living/user)
 	. = ..()
-	var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = target_mob.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+	var/obj/item/organ/cyberimp/brain/nif/target_nif = target_mob.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
 
 	if(!target_nif || !length(target_nif.loaded_nifsofts))
 		balloon_alert(user, "[target_mob] has no NIFSofts!")
@@ -80,7 +80,7 @@
 /obj/item/nif_repair_kit/attack(mob/living/carbon/human/mob_to_repair, mob/living/user)
 	. = ..()
 
-	var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = mob_to_repair.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+	var/obj/item/organ/cyberimp/brain/nif/installed_nif = mob_to_repair.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
 	if(!installed_nif)
 		balloon_alert(user, "[mob_to_repair] lacks a NIF")
 
diff --git a/modular_nova/modules/modular_implants/code/nif_actions.dm b/modular_nova/modules/modular_implants/code/nif_actions.dm
index eda612f4fc3..6c360cd256c 100644
--- a/modular_nova/modules/modular_implants/code/nif_actions.dm
+++ b/modular_nova/modules/modular_implants/code/nif_actions.dm
@@ -11,7 +11,7 @@
 
 /datum/action/item_action/nif/open_menu/Trigger(trigger_flags)
 	. = ..()
-	var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = target
+	var/obj/item/organ/cyberimp/brain/nif/target_nif = target
 
 	if(target_nif.calibrating)
 		target_nif.send_message("The NIF is still calibrating, please wait!", TRUE)
diff --git a/modular_nova/modules/modular_implants/code/nif_implants.dm b/modular_nova/modules/modular_implants/code/nif_implants.dm
index a52cc75494c..15e6c4e103b 100644
--- a/modular_nova/modules/modular_implants/code/nif_implants.dm
+++ b/modular_nova/modules/modular_implants/code/nif_implants.dm
@@ -1,10 +1,10 @@
 ///This is the standard 'baseline' NIF model.
-/obj/item/organ/internal/cyberimp/brain/nif/standard
+/obj/item/organ/cyberimp/brain/nif/standard
 	name = "Standard Type NIF"
 	desc = "'Standard-Type' is a classification for high-quality Nanite Implant Frameworks. This category primarily includes Framework patterns with high reliability, seamless bonding with a user, and a combination of storage space and processing power to run a wide array of programs."
 	manufacturer_notes = "While countless manufacturers produce their own implementation of NIFs, open-source or not, there's less than a thousand Standard-Type models out there in the galaxy. These are the results of almost five years of improvements on older models of Frameworks, and are rather coveted due to being extremely difficult to 'homebrew."
 
-/obj/item/organ/internal/cyberimp/brain/nif/roleplay_model
+/obj/item/organ/cyberimp/brain/nif/roleplay_model
 	name = "Econo-Deck Type NIF"
 	desc = "'Econo-Deck' is a classification for lower-quality Nanite Implant Frameworks. Typically, these are off-brand 'economical' bootlegs of higher-quality Frameworks featuring lower-grade power cells, outdated and risky construction patterns, and far rougher calibration with a user."
 	manufacturer_notes = "Most webspaces for hobbyists or hardcore users, Corpo neurologists, and developers of 'softs such as the Altspace Coven recommend against their purchase. Despite their affordability by the layman, it's a common notion in Framework user circles that a device directly hooked into a user's nervous system is never something which should be skimped on; hence, Econo-Decks typically find themselves in the hands of the truly desperate, criminals, or coming out of workshops as 'homebrews.'"
@@ -16,7 +16,7 @@
 	death_durability_loss = 10
 
 
-/obj/item/organ/internal/cyberimp/brain/nif/roleplay_model/cheap
+/obj/item/organ/cyberimp/brain/nif/roleplay_model/cheap
 	name = "Trial-Lite Type NIF"
 	desc = "'Trial-Lite' is a classification for temporary Nanite Implant Frameworks. These are typically distributed at promotional events, for the use of single-purpose NIFsofts, or at some Corporate dealerships to offer prospective users a look into the scene. Normally, Trial-Lite frameworks do not actually 'bond' with their user, forming an extremely loose connection before dissolving into scattered and dead nanomachines within a few hours, typically exhaled."
 	manufacturer_notes = "Normally, Trial-Lite frameworks do not actually 'bond' with their user, forming an extremely loose connection before dissolving into scattered and dead nanomachines within a few hours, typically exhaled. It's so far been impossible to extend the lifespan of a Trial-Lite NIF, owing to their far inferior construction and programming."
@@ -24,14 +24,14 @@
 
 /obj/item/autosurgeon/organ/nif/disposable //Disposable, as in the fact that this only lasts for one shift
 	name = "Econo-Deck Type Autosurgeon"
-	starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/roleplay_model/cheap
+	starting_organ = /obj/item/organ/cyberimp/brain/nif/roleplay_model/cheap
 	uses = 1
 
-/obj/item/organ/internal/cyberimp/brain/nif/standard/ghost_role
+/obj/item/organ/cyberimp/brain/nif/standard/ghost_role
 	nif_persistence = FALSE
 	is_calibrated = TRUE
 
 /obj/item/autosurgeon/organ/nif/ghost_role
 	name = "Enhanced Standard Type NIF Autosurgeon"
-	starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/standard/ghost_role
+	starting_organ = /obj/item/organ/cyberimp/brain/nif/standard/ghost_role
 	uses = 1
diff --git a/modular_nova/modules/modular_implants/code/nif_persistence.dm b/modular_nova/modules/modular_implants/code/nif_persistence.dm
index ce4d865f7cf..a633dab637c 100644
--- a/modular_nova/modules/modular_implants/code/nif_persistence.dm
+++ b/modular_nova/modules/modular_implants/code/nif_persistence.dm
@@ -20,7 +20,7 @@
 
 /// Saves the NIF data for a individual user.
 /mob/living/carbon/human/proc/save_nif_data(datum/modular_persistence/persistence, remove_nif = FALSE)
-	var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+	var/obj/item/organ/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
 
 	if(HAS_TRAIT(src, TRAIT_GHOSTROLE)) //Nothing is lost from playing a ghost role
 		return FALSE
@@ -75,7 +75,7 @@
 	if(!persistence.nif_path)
 		return
 
-	var/obj/item/organ/internal/cyberimp/brain/nif/new_nif = new persistence.nif_path
+	var/obj/item/organ/cyberimp/brain/nif/new_nif = new persistence.nif_path
 
 	new_nif.durability = persistence.nif_durability
 	new_nif.current_theme = persistence.nif_theme
@@ -108,7 +108,7 @@
 /datum/nifsoft/proc/load_persistence_data()
 	if(!linked_mob || !persistence)
 		return FALSE
-	var/obj/item/organ/internal/brain/linked_brain = linked_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/linked_brain = linked_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!linked_brain || !linked_brain.modular_persistence)
 		return FALSE
 
diff --git a/modular_nova/modules/modular_implants/code/nifs.dm b/modular_nova/modules/modular_implants/code/nifs.dm
index 1862d28014d..4145a9beeee 100644
--- a/modular_nova/modules/modular_implants/code/nifs.dm
+++ b/modular_nova/modules/modular_implants/code/nifs.dm
@@ -12,7 +12,7 @@
 #define MAX_NIF_REWARDS_POINTS 2000
 
 // This is the original NIF that other NIFs are based on.
-/obj/item/organ/internal/cyberimp/brain/nif
+/obj/item/organ/cyberimp/brain/nif
 	name = "Nanite Implant Framework"
 	desc = "A brain implant that infuses the user with nanites."
 	icon = 'modular_nova/modules/modular_implants/icons/obj/nifs.dmi'
@@ -108,13 +108,13 @@
 	///What icon does the NIF display in chat when sending out alerts? Icon states are stored in 'modular_nova/modules/modular_implants/icons/chat.dmi'
 	var/chat_icon = "standard"
 
-/obj/item/organ/internal/cyberimp/brain/nif/Initialize(mapload)
+/obj/item/organ/cyberimp/brain/nif/Initialize(mapload)
 	. = ..()
 
 	durability = max_durability
 	power_level = max_power_level
 
-/obj/item/organ/internal/cyberimp/brain/nif/Destroy()
+/obj/item/organ/cyberimp/brain/nif/Destroy()
 	if(linked_mob)
 		UnregisterSignal(linked_mob, COMSIG_LIVING_DEATH, PROC_REF(damage_on_death))
 
@@ -127,7 +127,7 @@
 	QDEL_LIST(loaded_nifsofts)
 	return ..()
 
-/obj/item/organ/internal/cyberimp/brain/nif/mob_insert(mob/living/carbon/human/insertee, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/cyberimp/brain/nif/mob_insert(mob/living/carbon/human/insertee, special = FALSE, movement_flags = DELETE_IF_REPLACED)
 	. = ..()
 
 	if(linked_mob && stored_ckey != insertee.ckey && theft_protection)
@@ -154,7 +154,7 @@
 		send_message("Loading preinstalled and stored NIFSofts, please wait...")
 		addtimer(CALLBACK(src, PROC_REF(install_preinstalled_nifsofts)), 3 SECONDS)
 
-/obj/item/organ/internal/cyberimp/brain/nif/mob_remove(mob/living/carbon/organ_owner, special = FALSE)
+/obj/item/organ/cyberimp/brain/nif/mob_remove(mob/living/carbon/organ_owner, special = FALSE)
 	. = ..()
 
 	organ_owner.log_message("'s [src] was removed from [organ_owner]", LOG_GAME)
@@ -170,7 +170,7 @@
 	QDEL_LIST(loaded_nifsofts)
 
 ///Installs preinstalled NIFSofts
-/obj/item/organ/internal/cyberimp/brain/nif/proc/install_preinstalled_nifsofts()
+/obj/item/organ/cyberimp/brain/nif/proc/install_preinstalled_nifsofts()
 	if(!preinstalled_nifsofts)
 		return FALSE
 
@@ -183,7 +183,7 @@
 
 	return TRUE
 
-/obj/item/organ/internal/cyberimp/brain/nif/process(seconds_per_tick)
+/obj/item/organ/cyberimp/brain/nif/process(seconds_per_tick)
 	. = ..()
 
 	if(!linked_mob || broken || HAS_TRAIT(linked_mob, TRAIT_STASIS))
@@ -212,7 +212,7 @@
 	change_power_level(power_usage)
 
 ///Modifies power based off power_to_change. Negative numbers add charge, positive numbers remove charge
-/obj/item/organ/internal/cyberimp/brain/nif/proc/change_power_level(power_to_change)
+/obj/item/organ/cyberimp/brain/nif/proc/change_power_level(power_to_change)
 	if(!power_to_change)
 		return TRUE
 
@@ -227,7 +227,7 @@
 	return TRUE
 
 ///Toggles nutrition drain as a power source on NIFs on/off. Bypass - Ignores the need to perform the nutirition_check() proc.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/toggle_nutrition_drain(bypass = FALSE)
+/obj/item/organ/cyberimp/brain/nif/proc/toggle_nutrition_drain(bypass = FALSE)
 	if(!bypass && !nutrition_check())
 		return FALSE
 
@@ -245,7 +245,7 @@
 	return TRUE
 
 /// Checks to see if the mob has a nutrition that can be drain from
-/obj/item/organ/internal/cyberimp/brain/nif/proc/nutrition_check() //This is a seperate proc so that TGUI can perform this check on the menu
+/obj/item/organ/cyberimp/brain/nif/proc/nutrition_check() //This is a seperate proc so that TGUI can perform this check on the menu
 	if(!linked_mob || !linked_mob.nutrition)
 		return FALSE
 
@@ -255,7 +255,7 @@
 	return linked_mob.nutrition >= minimum_nutrition
 
 ///Toggles Blood Drain. Bypasss -  Ignores the need to perform the blood_check proc.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/toggle_blood_drain(bypass = FALSE)
+/obj/item/organ/cyberimp/brain/nif/proc/toggle_blood_drain(bypass = FALSE)
 	if(!bypass && !blood_check())
 		return
 
@@ -271,14 +271,14 @@
 	balloon_alert(linked_mob, "Blood draining enabled")
 
 ///Checks if the NIF is able to draw blood as a power source?
-/obj/item/organ/internal/cyberimp/brain/nif/proc/blood_check()
+/obj/item/organ/cyberimp/brain/nif/proc/blood_check()
 	if(!linked_mob || !linked_mob.blood_volume || (linked_mob.blood_volume <= minimum_blood_level))
 		return FALSE
 
 	return TRUE
 
 ///Calibrates the Parent NIF, this is ran every time the parent NIF is first installed inside of someone.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/perform_calibration()
+/obj/item/organ/cyberimp/brain/nif/proc/perform_calibration()
 	if(linked_mob.stat >= DEAD)
 		return FALSE
 
@@ -311,7 +311,7 @@
 				stack_trace("persistence was not saved for [linked_mob]!")
 
 ///Installs the loaded_nifsoft to the parent NIF.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/install_nifsoft(datum/nifsoft/loaded_nifsoft)
+/obj/item/organ/cyberimp/brain/nif/proc/install_nifsoft(datum/nifsoft/loaded_nifsoft)
 	if(broken || calibrating) //NIFSofts can't be installed to a broken NIF
 		return FALSE
 
@@ -344,7 +344,7 @@
 	return TRUE
 
 ///Removes a NIFSoft from a NIF. Silent - determines whether or not alerts will be given to the owner of the NIF
-/obj/item/organ/internal/cyberimp/brain/nif/proc/remove_nifsoft(datum/nifsoft/removed_nifsoft, silent = FALSE)
+/obj/item/organ/cyberimp/brain/nif/proc/remove_nifsoft(datum/nifsoft/removed_nifsoft, silent = FALSE)
 	if(!is_type_in_list(removed_nifsoft, loaded_nifsofts) || broken)
 		return FALSE
 
@@ -357,7 +357,7 @@
 	return TRUE
 
 ///Adjusts the NIF based on the adjustment_amount. Positive values repair, negative values damage
-/obj/item/organ/internal/cyberimp/brain/nif/proc/adjust_durability(adjustment_amount)
+/obj/item/organ/cyberimp/brain/nif/proc/adjust_durability(adjustment_amount)
 	if(!adjustment_amount || ((adjustment_amount > 0) && (durability >= max_durability) || ((adjustment_amount < 0) && (durability <= NIF_MINIMUM_DURABILITY))))
 		return FALSE
 
@@ -369,7 +369,7 @@
 	return TRUE
 
 ///Sends a message to the owner of the NIF. Typically used for messages from the NIF itself or from NIFSofts.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/send_message(message_to_send, alert = FALSE)
+/obj/item/organ/cyberimp/brain/nif/proc/send_message(message_to_send, alert = FALSE)
 	var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat)
 	var/tag = sheet.icon_tag("nif-[chat_icon]")
 	var/nif_icon = ""
@@ -387,7 +387,7 @@
 
 
 ///Changes the broken variable to be false. This does not relate to durability.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/fix_nif()
+/obj/item/organ/cyberimp/brain/nif/proc/fix_nif()
 	if(!broken)
 		return FALSE
 
@@ -396,14 +396,14 @@
 	return TRUE
 
 ///Re-enables the durability_loss_vulnerable variable, allowing the parent NIF to take durability damage again.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/make_vulnerable()
+/obj/item/organ/cyberimp/brain/nif/proc/make_vulnerable()
 	durability_loss_vulnerable = TRUE
 
 //This is here so that a TGUI can't be opened by using the implant while it isn't implanted.
-/obj/item/organ/internal/cyberimp/brain/nif/attack_self(mob/user, modifiers)
+/obj/item/organ/cyberimp/brain/nif/attack_self(mob/user, modifiers)
 	return FALSE
 
-/obj/item/organ/internal/cyberimp/brain/nif/emp_act(severity)
+/obj/item/organ/cyberimp/brain/nif/emp_act(severity)
 	. = ..()
 	if(!owner || . & EMP_PROTECT_SELF)
 		return
@@ -433,7 +433,7 @@
 	send_message("<b>ELECTROMAGNETIC INTERFERENCE DETECTED.</b>", TRUE)
 
 ///Applies damage to the parent NIF whenever the user dies.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/damage_on_death()
+/obj/item/organ/cyberimp/brain/nif/proc/damage_on_death()
 	SIGNAL_HANDLER
 
 	if(!durability_loss_vulnerable)
@@ -445,7 +445,7 @@
 	addtimer(CALLBACK(src, PROC_REF(make_vulnerable)), 20 MINUTES) //Players should have a decent grace period on this.
 
 /// Removes rewards points from the parent NIF. Returns FALSE if there are not enough points to remove, returns TRUE if the points have been succesfully removed.
-/obj/item/organ/internal/cyberimp/brain/nif/proc/remove_rewards_points(points_to_remove)
+/obj/item/organ/cyberimp/brain/nif/proc/remove_rewards_points(points_to_remove)
 	if(points_to_remove > rewards_points)
 		return FALSE
 
@@ -475,7 +475,7 @@
 
 ///Checks to see if a human with a NIF has the nifsoft_to_find type of NIFSoft installed?
 /mob/living/carbon/human/proc/find_nifsoft(datum/nifsoft/nifsoft_to_find)
-	var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+	var/obj/item/organ/cyberimp/brain/nif/installed_nif = get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
 	var/list/nifsoft_list = installed_nif?.loaded_nifsofts
 
 	if(!nifsoft_list)
@@ -493,14 +493,14 @@
 	InsertAll("nif", 'modular_nova/modules/modular_implants/icons/chat.dmi')
 
 /obj/item/autosurgeon/organ/nif
-	starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/standard
+	starting_organ = /obj/item/organ/cyberimp/brain/nif/standard
 	uses = 1
 
-/obj/item/organ/internal/cyberimp/brain/nif/debug
+/obj/item/organ/cyberimp/brain/nif/debug
 	is_calibrated = TRUE
 
 /obj/item/autosurgeon/organ/nif/debug
-	starting_organ = /obj/item/organ/internal/cyberimp/brain/nif/debug
+	starting_organ = /obj/item/organ/cyberimp/brain/nif/debug
 	uses = 1
 
 /obj/item/storage/box/nif_ghost_box
diff --git a/modular_nova/modules/modular_implants/code/nifs_tgui.dm b/modular_nova/modules/modular_implants/code/nifs_tgui.dm
index 520a155215b..d754795a42e 100644
--- a/modular_nova/modules/modular_implants/code/nifs_tgui.dm
+++ b/modular_nova/modules/modular_implants/code/nifs_tgui.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/brain/nif
+/obj/item/organ/cyberimp/brain/nif
 	///Currently Avalible themese for the NIFs
 	var/static/list/ui_themes = list(
 		"abductor",
@@ -16,22 +16,22 @@
 	///What theme is currently being used on the NIF?
 	var/current_theme = "default"
 
-/obj/item/organ/internal/cyberimp/brain/nif/ui_interact(mob/user, datum/tgui/ui)
+/obj/item/organ/cyberimp/brain/nif/ui_interact(mob/user, datum/tgui/ui)
 	ui = SStgui.try_update_ui(user, src, ui)
 
 	if(!ui)
 		ui = new(user, src, "NifPanel", name)
 		ui.open()
 
-/obj/item/organ/internal/cyberimp/brain/nif/ui_state(mob/user)
+/obj/item/organ/cyberimp/brain/nif/ui_state(mob/user)
 	return GLOB.conscious_state
 
-/obj/item/organ/internal/cyberimp/brain/nif/ui_status(mob/user)
+/obj/item/organ/cyberimp/brain/nif/ui_status(mob/user)
 	if(user == linked_mob)
 		return UI_INTERACTIVE
 	return UI_CLOSE
 
-/obj/item/organ/internal/cyberimp/brain/nif/ui_static_data(mob/user)
+/obj/item/organ/cyberimp/brain/nif/ui_static_data(mob/user)
 	var/list/data = list()
 
 	data["loaded_nifsofts"] = list()
@@ -60,7 +60,7 @@
 
 	return data
 
-/obj/item/organ/internal/cyberimp/brain/nif/ui_data(mob/user)
+/obj/item/organ/cyberimp/brain/nif/ui_data(mob/user)
 	var/list/data = list()
 	//User Preference Variables
 	data["linked_mob_name"] = linked_mob.name
@@ -82,7 +82,7 @@
 
 	return data
 
-/obj/item/organ/internal/cyberimp/brain/nif/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
+/obj/item/organ/cyberimp/brain/nif/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
 	. = ..()
 	if(.)
 		return
diff --git a/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm b/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm
index 1b2275b658f..910cb5c3a8b 100644
--- a/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm
+++ b/modular_nova/modules/modular_implants/code/nifsoft_catalog.dm
@@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list(
 	var/rewards_points = 0
 
 	if(target_nif)
-		var/obj/item/organ/internal/cyberimp/brain/nif/buyer_nif = target_nif.resolve()
+		var/obj/item/organ/cyberimp/brain/nif/buyer_nif = target_nif.resolve()
 		if(buyer_nif)
 			rewards_points = buyer_nif.rewards_points
 
@@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list(
 		target_nif = null
 
 	else
-		var/obj/item/organ/internal/cyberimp/brain/nif/user_nif = nif_user.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+		var/obj/item/organ/cyberimp/brain/nif/user_nif = nif_user.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
 		if(!user_nif)
 			target_nif = null
 
@@ -114,7 +114,7 @@ GLOBAL_LIST_INIT(purchasable_nifsofts, list(
 				paying_account.bank_card_talk("You need a NIF implant to purchase this.")
 				return FALSE
 
-			var/obj/item/organ/internal/cyberimp/brain/nif/buyer_nif = target_nif.resolve()
+			var/obj/item/organ/cyberimp/brain/nif/buyer_nif = target_nif.resolve()
 
 			if(rewards_purchase)
 				if(buyer_nif.rewards_points < amount_to_charge)
diff --git a/modular_nova/modules/modular_implants/code/nifsofts.dm b/modular_nova/modules/modular_implants/code/nifsofts.dm
index 66082718df9..7e5db4e521d 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts.dm
@@ -41,7 +41,7 @@
 	///How long is the cooldown for?
 	var/cooldown_duration = DEFAULT_NIFSOFT_COOLDOWN
 	///What NIF models can this software be installed on?
-	var/list/compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif)
+	var/list/compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif)
 
 	/// How much of the NIFSoft's purchase price is paid out as reward points, if any?
 	var/rewards_points_rate = 0.5
@@ -56,13 +56,13 @@
 	///Is it a lewd item?
 	var/lewd_nifsoft = FALSE
 
-/datum/nifsoft/New(obj/item/organ/internal/cyberimp/brain/nif/recepient_nif, no_rewards_points = FALSE)
+/datum/nifsoft/New(obj/item/organ/cyberimp/brain/nif/recepient_nif, no_rewards_points = FALSE)
 	. = ..()
 
 	if(no_rewards_points) //This is mostly so that credits can't be farmed through printed or stolen NIFSoft disks
 		rewards_points_rate = 0
 
-	compatible_nifs += /obj/item/organ/internal/cyberimp/brain/nif/debug
+	compatible_nifs += /obj/item/organ/cyberimp/brain/nif/debug
 	program_name = name
 
 	if(!recepient_nif.install_nifsoft(src))
@@ -77,7 +77,7 @@
 
 	linked_mob = null
 
-	var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
+	var/obj/item/organ/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
 	if(installed_nif)
 		installed_nif.loaded_nifsofts.Remove(src)
 
@@ -85,7 +85,7 @@
 
 /// Activates the parent NIFSoft
 /datum/nifsoft/proc/activate()
-	var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
+	var/obj/item/organ/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
 
 	if(!installed_nif)
 		stack_trace("NIFSoft [src] activated on a null parent!") // NIFSoft is -really- broken
@@ -121,7 +121,7 @@
 
 ///Refunds the activation cost of a NIFSoft.
 /datum/nifsoft/proc/refund_activation_cost()
-	var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
+	var/obj/item/organ/cyberimp/brain/nif/installed_nif = parent_nif?.resolve()
 	if(!installed_nif)
 		return
 	installed_nif.change_power_level(-activation_cost)
@@ -153,7 +153,7 @@
 
 /// Updates the theme of the NIFSoft to match the parent NIF
 /datum/nifsoft/proc/update_theme()
-	var/obj/item/organ/internal/cyberimp/brain/nif/target_nif = parent_nif?.resolve()
+	var/obj/item/organ/cyberimp/brain/nif/target_nif = parent_nif?.resolve()
 	if(!target_nif)
 		return FALSE
 
@@ -190,7 +190,7 @@
 
 /// Attempts to install the NIFSoft on the disk to the target
 /obj/item/disk/nifsoft_uploader/proc/attempt_software_install(mob/living/carbon/human/target)
-	var/obj/item/organ/internal/cyberimp/brain/nif/installed_nif = target.get_organ_by_type(/obj/item/organ/internal/cyberimp/brain/nif)
+	var/obj/item/organ/cyberimp/brain/nif/installed_nif = target.get_organ_by_type(/obj/item/organ/cyberimp/brain/nif)
 
 	if(!ishuman(target) || !installed_nif)
 		return FALSE
diff --git a/modular_nova/modules/modular_implants/code/nifsofts/huds.dm b/modular_nova/modules/modular_implants/code/nifsofts/huds.dm
index 1fd07b658ac..c7b9e3dab5d 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts/huds.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts/huds.dm
@@ -1,7 +1,7 @@
 /datum/nifsoft/hud
 	name = "Scrying Lens"
 	program_desc = "An umbrella term for all sorts of NIFsofts dealing with heads-up displays, this sort of technology dates back almost to the beginning of NIFsoft development. These 'softs are commonly used in the civilian field for integration with all sorts of activities; piloting, swordplay, scientific research, or even AI copiloting for important social interactions. While normally the nanomachines involved in the program's operation are used as a sort of artificial contact lens over the user's visual organs, NanoTrasen regulations have bid these particular forks to instead integrate with glasses the user's already wearing."
-	compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif/standard)
+	compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif/standard)
 	active_mode = TRUE
 	active_cost = 0.5
 	ui_icon = "eye"
diff --git a/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm b/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm
index 166f64b9846..785252d82ab 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts/money_sense.dm
@@ -7,7 +7,7 @@
 	program_desc = "Connects the user's brain to a database containing the current monetary values for most items, allowing them to determine their value in realtime"
 	active_mode = TRUE
 	active_cost = 0.5
-	compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif/standard)
+	compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif/standard)
 	buying_category = NIFSOFT_CATEGORY_UTILITY
 	ui_icon = "coins"
 
diff --git a/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm b/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm
index 9dc40fd5944..7773bfa0e36 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts/scryer.dm
@@ -16,7 +16,7 @@
 
 /datum/nifsoft/scryer/New()
 	. = ..()
-	var/obj/item/organ/internal/cyberimp/brain/nif/parent_resolved = parent_nif.resolve()
+	var/obj/item/organ/cyberimp/brain/nif/parent_resolved = parent_nif.resolve()
 	if(!istype(parent_resolved))
 		stack_trace("[src] ([REF(src)]) tried to create a linked scryer but it had no parent_nif!")
 	if(!linked_scryer)
diff --git a/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm b/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm
index 7aa1819e4a2..dda90544976 100644
--- a/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm
+++ b/modular_nova/modules/modular_implants/code/nifsofts/shapeshifter.dm
@@ -5,7 +5,7 @@
 /datum/nifsoft/action_granter/shapeshifter
 	name = "Polymorph"
 	program_desc = "This program is a large-scale refitting of the nanomachine channels running over the skin of a NIF user. This allows the nanites to reach under the skin and even into the very bone structure of the host; including incorporation of mimetic materials and femto-level manipulation devices all for the purpose of allowing the user to, essentially, shapeshift on a low level. However, despite the incredible complexity behind these processes, there are still limits on the range of 'forms' a user can take. Mass can neither be created nor destroyed, after all, and you can only distribute and rearrange it in so many ways across a functioning humanoid body; meaning, the user cannot adopt forms too far out of their 'true' one."
-	compatible_nifs = list(/obj/item/organ/internal/cyberimp/brain/nif/standard)
+	compatible_nifs = list(/obj/item/organ/cyberimp/brain/nif/standard)
 	purchase_price = 350
 	buying_category = NIFSOFT_CATEGORY_COSMETIC
 	ui_icon = "paintbrush"
diff --git a/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm b/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm
index 2dc1408eca4..670cc4c3f9a 100644
--- a/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm
+++ b/modular_nova/modules/modular_implants/code/soulcatcher/handheld_soulcatcher.dm
@@ -115,7 +115,7 @@
 	if(!istype(target_mob))
 		return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
 
-	var/obj/item/organ/internal/brain/target_brain = target_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/target_brain = target_mob.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!istype(target_brain))
 		to_chat(user, span_warning("[target_mob] lacks a brain!"))
 		return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
diff --git a/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm b/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm
index d925adba3f1..da4076262b3 100644
--- a/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm
+++ b/modular_nova/modules/modular_implants/code/soulcatcher/soulcatcher_component.dm
@@ -58,7 +58,7 @@ GLOBAL_LIST_EMPTY(soulcatchers)
 		qdel(soulcatcher_room)
 
 	var/mob/living/soulcatcher_owner = parent
-	var/obj/item/organ/internal/cyberimp/brain/nif/parent_nif = parent
+	var/obj/item/organ/cyberimp/brain/nif/parent_nif = parent
 	if(istype(parent_nif))
 		soulcatcher_owner = parent_nif.linked_mob
 
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm
index 6c1edbcdca3..e7932fad8c9 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm
@@ -13,7 +13,7 @@
 		arousal_status = arousal_flag
 		if(istype(src, /mob/living/carbon/human))
 			var/mob/living/carbon/human/target = src
-			for(var/obj/item/organ/external/genital/target_genital in target.organs)
+			for(var/obj/item/organ/genital/target_genital in target.organs)
 				if(!target_genital.aroused == AROUSAL_CANT)
 					target_genital.aroused = arousal_status
 					target_genital.update_sprite_suffix()
@@ -38,7 +38,7 @@
 		if(get_organ_slot(ORGAN_SLOT_VAGINA) && !has_status_effect(/datum/status_effect/body_fluid_regen/vagina))
 			apply_status_effect(/datum/status_effect/body_fluid_regen/vagina)
 
-	var/obj/item/organ/external/genital/breasts/breasts = get_organ_slot(ORGAN_SLOT_BREASTS)
+	var/obj/item/organ/genital/breasts/breasts = get_organ_slot(ORGAN_SLOT_BREASTS)
 
 	if(!breasts || !breasts.lactates)
 		remove_status_effect(/datum/status_effect/body_fluid_regen/breasts)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm
index ef20812614e..2260e31d2a9 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/climax.dm
@@ -54,7 +54,7 @@
 	var/self_their = p_their()
 
 	if(climax_choice == CLIMAX_PENIS || climax_choice == CLIMAX_BOTH)
-		var/obj/item/organ/external/genital/penis/penis = get_organ_slot(ORGAN_SLOT_PENIS)
+		var/obj/item/organ/genital/penis/penis = get_organ_slot(ORGAN_SLOT_PENIS)
 		if(!get_organ_slot(ORGAN_SLOT_TESTICLES)) //If we have no god damn balls, we can't cum anywhere... GET BALLS!
 			visible_message(span_userlove("[src] orgasms, but nothing comes out of [self_their] penis!"), \
 				span_userlove("You orgasm, it feels great, but nothing comes out of your penis!"))
@@ -109,7 +109,7 @@
 					if(target_human.has_anus(REQUIRE_GENITAL_EXPOSED))
 						target_buttons += "asshole"
 					if(target_human.has_penis(REQUIRE_GENITAL_EXPOSED))
-						var/obj/item/organ/external/genital/penis/other_penis = target_human.get_organ_slot(ORGAN_SLOT_PENIS)
+						var/obj/item/organ/genital/penis/other_penis = target_human.get_organ_slot(ORGAN_SLOT_PENIS)
 						if(other_penis.sheath != "None")
 							target_buttons += "sheath"
 					target_buttons += "On [target_human_them]"
@@ -129,7 +129,7 @@
 							span_userlove("You hilt your cock into [target_human]'s [climax_into_choice], shooting cum into [target_human_them]!"))
 						to_chat(target_human, span_userlove("Your [climax_into_choice] fills with warm cum as [src] shoots [self_their] load into it."))
 
-			var/obj/item/organ/external/genital/testicles/testicles = get_organ_slot(ORGAN_SLOT_TESTICLES)
+			var/obj/item/organ/genital/testicles/testicles = get_organ_slot(ORGAN_SLOT_TESTICLES)
 			testicles.transfer_internal_fluid(null, testicles.internal_fluid_count * 0.6) // yep. we are sending semen to nullspace
 			if(create_cum_decal)
 				add_cum_splatter_floor(get_turf(src))
@@ -143,7 +143,7 @@
 			return TRUE
 
 	if(climax_choice == CLIMAX_VAGINA || climax_choice == CLIMAX_BOTH)
-		var/obj/item/organ/external/genital/vagina/vagina = get_organ_slot(ORGAN_SLOT_VAGINA)
+		var/obj/item/organ/genital/vagina/vagina = get_organ_slot(ORGAN_SLOT_VAGINA)
 		if(is_bottomless() || vagina.visibility_preference == GENITAL_ALWAYS_SHOW)
 			visible_message(span_userlove("[src] twitches and moans as [p_they()] climax from their vagina!"), span_userlove("You twitch and moan as you climax from your vagina!"))
 			add_cum_splatter_floor(get_turf(src), female = TRUE)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm
index ec632635bbd..db4baa355b3 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/aroused.dm
@@ -25,7 +25,7 @@
 	var/temp_pleasure = BASE_PAIN_AND_PLEASURE_ADJUSTMENT
 	var/temp_pain = BASE_PAIN_AND_PLEASURE_ADJUSTMENT
 
-	var/obj/item/organ/external/genital/testicles/balls = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
+	var/obj/item/organ/genital/testicles/balls = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
 	if(balls && balls.internal_fluid_full())
 		temp_arousal += BLUEBALL_AROUSAL_MODIFIER
 
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm
index f55fb3264f6..f7953b7c4cc 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/climax.dm
@@ -48,10 +48,10 @@
 	alert_type = null
 
 /datum/status_effect/climax_cooldown/tick(seconds_between_ticks)
-	var/obj/item/organ/external/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA)
-	var/obj/item/organ/external/genital/testicles/balls = owner.get_organ_slot(ORGAN_SLOT_TESTICLES)
-	var/obj/item/organ/external/genital/penis/penis = owner.get_organ_slot(ORGAN_SLOT_PENIS)
-	var/obj/item/organ/external/genital/anus/anus = owner.get_organ_slot(ORGAN_SLOT_ANUS)
+	var/obj/item/organ/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA)
+	var/obj/item/organ/genital/testicles/balls = owner.get_organ_slot(ORGAN_SLOT_TESTICLES)
+	var/obj/item/organ/genital/penis/penis = owner.get_organ_slot(ORGAN_SLOT_PENIS)
+	var/obj/item/organ/genital/anus/anus = owner.get_organ_slot(ORGAN_SLOT_ANUS)
 
 	if(penis)
 		penis.aroused = AROUSAL_NONE
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm
index a75205bb528..7c98828156b 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_arousal/status_effects/fluid_generation.dm
@@ -23,7 +23,7 @@
 	if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human))
 		return FALSE
 
-	var/obj/item/organ/external/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA)
+	var/obj/item/organ/genital/vagina/vagina = owner.get_organ_slot(ORGAN_SLOT_VAGINA)
 	if(!vagina)
 		return FALSE
 
@@ -41,7 +41,7 @@
 	if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human))
 		return FALSE
 
-	var/obj/item/organ/external/genital/testicles/testes = owner.get_organ_slot(ORGAN_SLOT_TESTICLES)
+	var/obj/item/organ/genital/testicles/testes = owner.get_organ_slot(ORGAN_SLOT_TESTICLES)
 	if(!testes || (affected_human.arousal < AROUSAL_LOW))
 		return FALSE
 
@@ -56,7 +56,7 @@
 	if(owner.stat >= DEAD || !owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy) || !istype(affected_human))
 		return FALSE
 
-	var/obj/item/organ/external/genital/breasts/breasts = owner.get_organ_slot(ORGAN_SLOT_BREASTS)
+	var/obj/item/organ/genital/breasts/breasts = owner.get_organ_slot(ORGAN_SLOT_BREASTS)
 	if(!breasts || !breasts.lactates)
 		return FALSE
 
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm
index 34d27290e00..20f47b2dba3 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/_aphrodisiac.dm
@@ -151,7 +151,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_penis the penis to cause to grow
 */
-/datum/reagent/drug/aphrodisiac/proc/grow_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
+/datum/reagent/drug/aphrodisiac/proc/grow_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
 
 	// Check if we actually have a penis to grow
 	if(!mob_penis)
@@ -191,7 +191,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_testicles - the testicles to cause to grow
 */
-/datum/reagent/drug/aphrodisiac/proc/grow_balls(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES))
+/datum/reagent/drug/aphrodisiac/proc/grow_balls(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES))
 
 	//no balls
 	if(!mob_testicles)
@@ -201,7 +201,7 @@
 	if(!exposed_mob.client?.prefs?.read_preference(/datum/preference/toggle/erp/penis_enlargement))
 		return
 
-	var/obj/item/organ/external/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS)
+	var/obj/item/organ/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS)
 
 	if(mob_testicles.genital_size < balls_big_size && prob(balls_increase_chance)) // Add some randomness so growth happens more gradually in most cases
 		mob_testicles.genital_size = min(mob_testicles.genital_size + testicles_size_increase_step, balls_max_size)
@@ -220,7 +220,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_breasts the breasts to cause to grow
 */
-/datum/reagent/drug/aphrodisiac/proc/grow_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
+/datum/reagent/drug/aphrodisiac/proc/grow_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
 
 	if(!mob_breasts)
 		return
@@ -276,7 +276,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_penis the penis to shrink
 */
-/datum/reagent/drug/aphrodisiac/proc/shrink_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
+/datum/reagent/drug/aphrodisiac/proc/shrink_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
 
 	// Is there a penis to shrink?
 	if(!mob_penis)
@@ -310,7 +310,7 @@
 * mob_penis, mob_testicles - the mob's penis and testicles
 * message - the message to send to chat
 */
-/datum/reagent/drug/aphrodisiac/proc/shrink_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS), obj/item/organ/external/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES))
+/datum/reagent/drug/aphrodisiac/proc/shrink_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS), obj/item/organ/genital/testicles/mob_testicles = exposed_mob?.get_organ_slot(ORGAN_SLOT_TESTICLES))
 
 	if(!mob_testicles)
 		return
@@ -335,7 +335,7 @@
 * mob_breasts - the breasts to be shrunk
 * message - the message to send to chat
 */
-/datum/reagent/drug/aphrodisiac/proc/shrink_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
+/datum/reagent/drug/aphrodisiac/proc/shrink_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
 
 	if(!mob_breasts)
 		return
@@ -359,7 +359,7 @@
 * mob_vagina - the vagina to shrink
 * message - the message to send to chat
 */
-/datum/reagent/drug/aphrodisiac/proc/shrink_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA))
+/datum/reagent/drug/aphrodisiac/proc/shrink_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA))
 	var/message = "You can the feel the muscles in your groin begin to tighten as your vagina seals itself completely shut."
 	remove_genital(exposed_mob, mob_vagina, suppress_chat, message)
 
@@ -370,7 +370,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_womb - the womb to shrink
 */
-/datum/reagent/drug/aphrodisiac/proc/shrink_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB))
+/datum/reagent/drug/aphrodisiac/proc/shrink_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB))
 	remove_genital(exposed_mob, mob_womb, suppress_chat)
 
 /** ---- Genital Removal ----
@@ -383,13 +383,13 @@
 * message - the message to send to chat
 */
 /datum/reagent/drug/aphrodisiac/proc/remove_genitals(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, list/genitals_to_remove, message)
-	for(var/obj/item/organ/external/genital/mob_genital in genitals_to_remove)
+	for(var/obj/item/organ/genital/mob_genital in genitals_to_remove)
 		remove_genital(exposed_mob, mob_genital, suppress_chat)
 
 	if(!suppress_chat && message)
 		to_chat(exposed_mob, span_purple(message))
 
-/datum/reagent/drug/aphrodisiac/proc/remove_genital(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/mob_genital, suppress_chat = FALSE, message)
+/datum/reagent/drug/aphrodisiac/proc/remove_genital(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/mob_genital, suppress_chat = FALSE, message)
 
 	if(!mob_genital)
 		return
@@ -432,7 +432,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_penis the mob's penis
 */
-/datum/reagent/drug/aphrodisiac/proc/create_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
+/datum/reagent/drug/aphrodisiac/proc/create_penis(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/penis/mob_penis = exposed_mob?.get_organ_slot(ORGAN_SLOT_PENIS))
 
 	// Create the new penis if we don't already have one and if prefs allow
 	if(mob_penis)
@@ -461,7 +461,7 @@
 		exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_PENIS][MUTANT_INDEX_COLOR_LIST] = list(colour)
 
 	// Create the new penis
-	var/obj/item/organ/external/genital/penis/new_penis = new
+	var/obj/item/organ/genital/penis/new_penis = new
 	new_penis.build_from_dna(exposed_mob.dna, ORGAN_SLOT_PENIS)
 	new_penis.Insert(exposed_mob, 0, FALSE)
 	new_penis.genital_size = 4
@@ -478,7 +478,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_testicles - the mob's testicles
 */
-/datum/reagent/drug/aphrodisiac/proc/create_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/testicles/mob_balls = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES))
+/datum/reagent/drug/aphrodisiac/proc/create_testicles(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/testicles/mob_balls = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES))
 
 	// Create the new testicles if we don't already have them and if prefs allow
 	if(mob_balls)
@@ -487,7 +487,7 @@
 	if(!exposed_mob.client?.prefs.read_preference(/datum/preference/toggle/erp/new_genitalia_growth))
 		return
 
-	var/obj/item/organ/external/genital/testicles/new_balls = new
+	var/obj/item/organ/genital/testicles/new_balls = new
 	new_balls.build_from_dna(exposed_mob.dna, ORGAN_SLOT_TESTICLES)
 	new_balls.Insert(exposed_mob, 0, FALSE)
 	new_balls.genital_size = 0
@@ -502,7 +502,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_breasts - the mob's breasts
 */
-/datum/reagent/drug/aphrodisiac/proc/create_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
+/datum/reagent/drug/aphrodisiac/proc/create_breasts(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
 
 	// Make sure we don't already have them
 	if(mob_breasts)
@@ -516,7 +516,7 @@
 		exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_BREASTS][MUTANT_INDEX_NAME] = "Pair"
 
 	// Create the new breasts
-	var/obj/item/organ/external/genital/breasts/new_breasts = new
+	var/obj/item/organ/genital/breasts/new_breasts = new
 	new_breasts.build_from_dna(exposed_mob.dna, ORGAN_SLOT_BREASTS)
 	new_breasts.Insert(exposed_mob, FALSE, FALSE)
 	new_breasts.genital_size = 2
@@ -541,7 +541,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_vagina - the mob's vagina
 */
-/datum/reagent/drug/aphrodisiac/proc/create_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA))
+/datum/reagent/drug/aphrodisiac/proc/create_vagina(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/vagina/mob_vagina = exposed_mob?.get_organ_slot(ORGAN_SLOT_VAGINA))
 
 	// Add new vagina if we don't already have one. Use dna prefs before assigning a default human one.
 	if(mob_vagina)
@@ -553,7 +553,7 @@
 	if (exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_VAGINA][MUTANT_INDEX_NAME] == "None")
 		exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_VAGINA][MUTANT_INDEX_NAME] = "Human"
 
-	var/obj/item/organ/external/genital/vagina/new_vagina = new
+	var/obj/item/organ/genital/vagina/new_vagina = new
 	new_vagina.build_from_dna(exposed_mob.dna, ORGAN_SLOT_VAGINA)
 	new_vagina.Insert(exposed_mob, 0, FALSE)
 	update_appearance(exposed_mob)
@@ -567,7 +567,7 @@
 * suppress_chat - whether or not to display a message in chat
 * mob_womb - the mob's womb
 */
-/datum/reagent/drug/aphrodisiac/proc/create_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/external/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB))
+/datum/reagent/drug/aphrodisiac/proc/create_womb(mob/living/carbon/human/exposed_mob, suppress_chat = FALSE, obj/item/organ/genital/womb/mob_womb = exposed_mob?.get_organ_slot(ORGAN_SLOT_WOMB))
 
 	// Add a new womb if we don't already have one. Use dna prefs before assigning a default normal one.
 	if(mob_womb)
@@ -576,7 +576,7 @@
 	if (exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_WOMB][MUTANT_INDEX_NAME] == "None")
 		exposed_mob.dna.mutant_bodyparts[ORGAN_SLOT_WOMB][MUTANT_INDEX_NAME] = "Normal"
 
-	var/obj/item/organ/external/genital/womb/new_womb = new
+	var/obj/item/organ/genital/womb/new_womb = new
 	new_womb.build_from_dna(exposed_mob.dna, ORGAN_SLOT_WOMB)
 	new_womb.Insert(exposed_mob, 0, FALSE)
 	update_appearance(exposed_mob)
@@ -588,12 +588,12 @@
 * genital - the genital that is causing the messages
 * suppress_chat - whether or not to display a message in chat
 */
-/datum/reagent/drug/aphrodisiac/proc/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/genital, suppress_chat = FALSE)
+/datum/reagent/drug/aphrodisiac/proc/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/genital, suppress_chat = FALSE)
 
 /**
 * Called after growth/shrinkage to update mob sprites
 */
-/datum/reagent/drug/aphrodisiac/proc/update_appearance(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/genital, mutations_overlay = FALSE)
+/datum/reagent/drug/aphrodisiac/proc/update_appearance(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/genital, mutations_overlay = FALSE)
 	if(genital)
 		genital.update_sprite_suffix()
 	if(exposed_mob)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm
index d5542ea5740..ca861099f86 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/camphor.dm
@@ -30,7 +30,7 @@
 		exposed_mob.set_gender(exposed_mob.client?.prefs?.read_preference(/datum/preference/choiced/gender))
 
 	if(exposed_mob.get_organ_slot(ORGAN_SLOT_BREASTS))
-		var/obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob.get_organ_slot(ORGAN_SLOT_BREASTS)
+		var/obj/item/organ/genital/breasts/mob_breasts = exposed_mob.get_organ_slot(ORGAN_SLOT_BREASTS)
 		var/original_breast_size = GLOB.breast_size_to_number[exposed_mob.client?.prefs.read_preference(/datum/preference/choiced/breasts_size)]
 		if(original_breast_size)
 			if(mob_breasts?.genital_size > original_breast_size)
@@ -43,7 +43,7 @@
 				modified_genitals = TRUE
 
 	if(exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS))
-		var/obj/item/organ/external/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS)
+		var/obj/item/organ/genital/penis/mob_penis = exposed_mob.get_organ_slot(ORGAN_SLOT_PENIS)
 		if(exposed_mob.client?.prefs?.read_preference(/datum/preference/numeric/penis_length))
 			var/original_penis_length = exposed_mob.client?.prefs.read_preference(/datum/preference/numeric/penis_length)
 			var/original_penis_girth = exposed_mob.client?.prefs.read_preference(/datum/preference/numeric/penis_girth)
@@ -66,7 +66,7 @@
 				modified_genitals = TRUE
 
 	if(exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES))
-		var/obj/item/organ/external/genital/testicles/mob_testicles = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
+		var/obj/item/organ/genital/testicles/mob_testicles = exposed_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
 		if(exposed_mob.client?.prefs?.read_preference(/datum/preference/numeric/balls_size))
 			var/original_ball_size = exposed_mob.client?.prefs.read_preference(/datum/preference/numeric/balls_size)
 			if(mob_testicles?.genital_size > original_ball_size)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm
index abb45ae5c04..070cea0cd53 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/crocin.dm
@@ -37,7 +37,7 @@
 	exposed_mob.adjust_pain(pain_adjust_amount)
 
 	var/modified_genitals = FALSE
-	for(var/obj/item/organ/external/genital/mob_genitals in exposed_mob.organs)
+	for(var/obj/item/organ/genital/mob_genitals in exposed_mob.organs)
 		if(!mob_genitals.aroused == AROUSAL_CANT)
 			mob_genitals.aroused = AROUSAL_FULL
 			mob_genitals.update_sprite_suffix()
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm
index 6b5f8ee4f57..80a7611de60 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/incubus_draft.dm
@@ -87,13 +87,13 @@
 	if(exposed_mob.client?.prefs?.read_preference(/datum/preference/toggle/erp/penis_enlargement))
 		// Attempt to make new male genitals if applicable
 		create_genitals(exposed_mob, suppress_chat, list(GENITAL_PENIS, GENITAL_TESTICLES))
-				
+
 		// Make the balls bigger if they're small.
 		grow_balls(exposed_mob, suppress_chat)
-	
+
 	// Separates gender change stuff from cock growth, breast shrinkage, and female genitalia removal
 	change_gender(exposed_mob, MALE, suppress_chat)
-		
+
 	// Attempt genital shrinkage where applicable
 	shrink_genitals(exposed_mob, suppress_chat, list(GENITAL_BREASTS, GENITAL_VAGINA, GENITAL_WOMB))
 
@@ -102,14 +102,14 @@
 *
 * exposed_mob - the mob being affected by the reagent
 * genital - the genital that is causing the messages
-*/ 
-/datum/reagent/drug/aphrodisiac/incubus_draft/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/mob_genital, suppress_chat = FALSE)
+*/
+/datum/reagent/drug/aphrodisiac/incubus_draft/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/mob_genital, suppress_chat = FALSE)
 	if(!mob_genital)
 		return
-	
-	if(istype(mob_genital, /obj/item/organ/external/genital/penis))
+
+	if(istype(mob_genital, /obj/item/organ/genital/penis))
 		penis_growth_to_chat(exposed_mob, mob_genital)
-	else if(istype(mob_genital, /obj/item/organ/external/genital/testicles))
+	else if(istype(mob_genital, /obj/item/organ/genital/testicles))
 		testicles_growth_to_chat(exposed_mob, mob_genital, suppress_chat)
 
 /**
@@ -118,12 +118,12 @@
 * exposed_mob - the mob being affected by the reagent
 * mob_penis - the penis that is causing the message
 * NOTE: this function doesn't get called often enough to warrant suppressing chat, hence the var's omission
-*/ 
-/datum/reagent/drug/aphrodisiac/incubus_draft/proc/penis_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/penis/mob_penis)
+*/
+/datum/reagent/drug/aphrodisiac/incubus_draft/proc/penis_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/penis/mob_penis)
 
 	if(!mob_penis)
 		return
-		
+
 	if(mob_penis.visibility_preference == GENITAL_ALWAYS_SHOW || exposed_mob.is_bottomless())
 		if(mob_penis.genital_size >= (penis_max_length - 2))
 			if(exposed_mob.dna.features["penis_sheath"] == SHEATH_SLIT)
@@ -142,14 +142,14 @@
 			to_chat(exposed_mob, span_purple("Your [pick(words_for_bigger_cock)] [pick(bigger_cock_text_list)] [pick(cock_action_text_list)]about [mob_penis.genital_size] inches long, and [mob_penis.girth] inches in circumference."))
 		else
 			to_chat(exposed_mob, span_purple("Your [pick(cock_text_list)] [pick(cock_action_text_list)]about [mob_penis.genital_size] inches long, and [mob_penis.girth] inches in circumference."))
-			
+
 /**
 * Helper function for the helper function used to display the messages that appear in chat while the testicles growth is occurring
 *
 * exposed_mob - the mob being affected by the reagent
 * mob_testicles - the testicles that are causing the message
-*/ 
-/datum/reagent/drug/aphrodisiac/incubus_draft/proc/testicles_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/testicles/mob_testicles, suppress_chat = FALSE)
+*/
+/datum/reagent/drug/aphrodisiac/incubus_draft/proc/testicles_growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/testicles/mob_testicles, suppress_chat = FALSE)
 
 	// So we don't spam chat
 	if(suppress_chat)
@@ -157,13 +157,13 @@
 
 	if(!mob_testicles)
 		return
-	
+
 	// Display a different message when they reach 'enormous'
-	if(mob_testicles.genital_size <= balls_big_size) 
-		to_chat(exposed_mob, span_purple("Your balls [pick(ball_action_text_list)]. They are now [mob_testicles.balls_size_to_description(mob_testicles.genital_size)]."))	
+	if(mob_testicles.genital_size <= balls_big_size)
+		to_chat(exposed_mob, span_purple("Your balls [pick(ball_action_text_list)]. They are now [mob_testicles.balls_size_to_description(mob_testicles.genital_size)]."))
 	else if(mob_testicles.genital_size == balls_max_size)
-		to_chat(exposed_mob, span_purple("You can feel your heavy balls churn as they swell to enormous proportions!"))		
-			
+		to_chat(exposed_mob, span_purple("You can feel your heavy balls churn as they swell to enormous proportions!"))
+
 // Notify the user that they're overdosing. Doesn't affect their mood.
 /datum/reagent/drug/aphrodisiac/incubus_draft/overdose_start(mob/living/carbon/human/exposed_mob)
 	to_chat(exposed_mob, span_userdanger("You feel like you took too much [name]!"))
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm
index 50dd2095f35..5c8f7419cd5 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_chemistry/reagents/succubus_milk.dm
@@ -113,7 +113,7 @@
 * suppress_chat - whether or not to display a message in chat
 * NOTE: this function doesn't get called often enough to warrant suppressing chat, hence the var's omission
 */
-/datum/reagent/drug/aphrodisiac/succubus_milk/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/external/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
+/datum/reagent/drug/aphrodisiac/succubus_milk/growth_to_chat(mob/living/carbon/human/exposed_mob, obj/item/organ/genital/breasts/mob_breasts = exposed_mob?.get_organ_slot(ORGAN_SLOT_BREASTS))
 
 	if(!mob_breasts)
 		return
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm
index 688f29650fa..993495a5a47 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/latex_catsuit.dm
@@ -32,7 +32,7 @@
 /obj/item/clothing/under/misc/latex_catsuit/equipped(mob/living/affected_mob, slot)
 	. = ..()
 	var/mob/living/carbon/human/affected_human = affected_mob
-	var/obj/item/organ/external/genital/breasts/affected_breasts = affected_human.get_organ_slot(ORGAN_SLOT_BREASTS)
+	var/obj/item/organ/genital/breasts/affected_breasts = affected_human.get_organ_slot(ORGAN_SLOT_BREASTS)
 	if(src == affected_human.w_uniform)
 		if(affected_mob.gender == FEMALE)
 			icon_state = "latex_catsuit_female"
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm
index f0ab08638b8..88d57070358 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_clothing/strapon.dm
@@ -56,10 +56,10 @@
 /obj/item/clothing/strapon/equipped(mob/user, slot)
 	. = ..()
 	var/mob/living/carbon/human/affected_mob = user
-	var/obj/item/organ/external/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
-	var/obj/item/organ/external/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB)
-	var/obj/item/organ/external/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS)
-	var/obj/item/organ/external/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
+	var/obj/item/organ/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
+	var/obj/item/organ/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB)
+	var/obj/item/organ/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS)
+	var/obj/item/organ/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
 
 	if(src == affected_mob.belt)
 		affected_vagina?.visibility_preference = GENITAL_NEVER_SHOW
@@ -73,10 +73,10 @@
 /obj/item/clothing/strapon/dropped(mob/living/user)
 	. = ..()
 	var/mob/living/carbon/human/affected_mob = user
-	var/obj/item/organ/external/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
-	var/obj/item/organ/external/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB)
-	var/obj/item/organ/external/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS)
-	var/obj/item/organ/external/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
+	var/obj/item/organ/genital/vagina/affected_vagina = affected_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
+	var/obj/item/organ/genital/womb/affected_womb = affected_mob.get_organ_slot(ORGAN_SLOT_WOMB)
+	var/obj/item/organ/genital/penis/affected_penis = affected_mob.get_organ_slot(ORGAN_SLOT_PENIS)
+	var/obj/item/organ/genital/testicles/affected_testicles = affected_mob.get_organ_slot(ORGAN_SLOT_TESTICLES)
 
 	if(strapon_item && !ismob(loc) && in_hands == TRUE && src != affected_mob.belt)
 		qdel(strapon_item)
@@ -193,7 +193,7 @@
 		return
 
 	var/message = ""
-	var/obj/item/organ/external/genital/vagina = hit_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
+	var/obj/item/organ/genital/vagina = hit_mob.get_organ_slot(ORGAN_SLOT_VAGINA)
 	if(hit_mob.check_erp_prefs(/datum/preference/toggle/erp/sex_toy, user, src))
 		switch(user.zone_selected) //to let code know what part of body we gonna fuck
 			if(BODY_ZONE_PRECISE_GROIN)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm
index 2e3de6cf96b..0227bd63bea 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/human.dm
@@ -38,7 +38,7 @@
 
 /// Returns true if the human has an accessible penis for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines.
 /mob/living/carbon/human/proc/has_penis(required_state = REQUIRE_GENITAL_ANY)
-	var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_PENIS)
+	var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_PENIS)
 	if(!genital)
 		return FALSE
 
@@ -54,7 +54,7 @@
 
 /// Returns true if the human has a accessible balls for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines.
 /mob/living/carbon/human/proc/has_balls(required_state = REQUIRE_GENITAL_ANY)
-	var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_TESTICLES)
+	var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_TESTICLES)
 	if(!genital)
 		return FALSE
 
@@ -70,7 +70,7 @@
 
 /// Returns true if the human has an accessible vagina for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines.
 /mob/living/carbon/human/proc/has_vagina(required_state = REQUIRE_GENITAL_ANY)
-	var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_VAGINA)
+	var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_VAGINA)
 	if(!genital)
 		return FALSE
 
@@ -86,7 +86,7 @@
 
 /// Returns true if the human has a accessible breasts for the parameter. Accepts any of the `REQUIRE_GENITAL_` defines.
 /mob/living/carbon/human/proc/has_breasts(required_state = REQUIRE_GENITAL_ANY)
-	var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_BREASTS)
+	var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_BREASTS)
 	if(!genital)
 		return FALSE
 
@@ -104,7 +104,7 @@
 /mob/living/carbon/human/proc/has_anus(required_state = REQUIRE_GENITAL_ANY)
 	if(issilicon(src))
 		return TRUE
-	var/obj/item/organ/external/genital/genital = get_organ_slot(ORGAN_SLOT_ANUS)
+	var/obj/item/organ/genital/genital = get_organ_slot(ORGAN_SLOT_ANUS)
 	if(!genital)
 		return FALSE
 
@@ -380,5 +380,5 @@
 	..()
 
 /// Checks if the tail is exposed.
-/obj/item/organ/external/tail/proc/is_exposed()
+/obj/item/organ/tail/proc/is_exposed()
 	return TRUE // your tail is always exposed, dummy! why are you checking this
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm
index 1730e8f121a..098917bfe61 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_helpers/organs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/brain/on_life(seconds_per_tick, times_fired) //All your horny is here *points to the head*
+/obj/item/organ/brain/on_life(seconds_per_tick, times_fired) //All your horny is here *points to the head*
 	. = ..()
 	var/mob/living/carbon/human/brain_owner = owner
 	if(istype(brain_owner, /mob/living/carbon/human) && brain_owner.client?.prefs?.read_preference(/datum/preference/toggle/erp/sex_toy))
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm
index 315af756af4..7f3fe235c3a 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/_masturbation_item.dm
@@ -18,8 +18,8 @@
 		return
 
 	var/mob/living/carbon/human/affected_human = user
-	var/obj/item/organ/external/genital/testicles/testicles = affected_human.get_organ_slot(ORGAN_SLOT_TESTICLES)
-	var/obj/item/organ/external/genital/penis/penis = affected_human.get_organ_slot(ORGAN_SLOT_PENIS)
+	var/obj/item/organ/genital/testicles/testicles = affected_human.get_organ_slot(ORGAN_SLOT_TESTICLES)
+	var/obj/item/organ/genital/penis/penis = affected_human.get_organ_slot(ORGAN_SLOT_PENIS)
 	var/datum/sprite_accessory/genital/penis_sprite = SSaccessories.sprite_accessories[ORGAN_SLOT_PENIS][affected_human.dna.species.mutant_bodyparts[ORGAN_SLOT_PENIS][MUTANT_INDEX_NAME]]
 	if(penis_sprite.is_hidden(affected_human))
 		to_chat(user, span_notice("You need to expose yourself in order to masturbate."))
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm
index aa24175ebef..c0e7826d666 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/clamps.dm
@@ -40,7 +40,7 @@
 	. = ..()
 	if(!istype(user))
 		return
-	var/obj/item/organ/external/genital/breasts/user_breast = user.get_organ_slot(ORGAN_SLOT_BREASTS)
+	var/obj/item/organ/genital/breasts/user_breast = user.get_organ_slot(ORGAN_SLOT_BREASTS)
 
 	if(src == user.nipples)
 		if(user_breast)
@@ -70,7 +70,7 @@
 /obj/item/clothing/sextoy/nipple_clamps/process(seconds_per_tick)
 	. = ..()
 	var/mob/living/carbon/human/target = loc
-	var/obj/item/organ/external/genital/breasts/target_breast = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+	var/obj/item/organ/genital/breasts/target_breast = target.get_organ_slot(ORGAN_SLOT_BREASTS)
 	if(!target || !target_breast)
 		return
 	target.adjust_arousal(1 * seconds_per_tick)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm
index cac7a71e7ac..820ce6f9cf9 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/dildo.dm
@@ -105,7 +105,7 @@
 	var/list/possible_emotes = list("moan")
 	switch(user.zone_selected) //to let code know what part of body we gonna fuck
 		if(BODY_ZONE_PRECISE_GROIN)
-			var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
+			var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
 			if(!vagina)
 				to_chat(user, span_danger("[target] don't have suitable genitalia for that!"))
 				return FALSE
@@ -327,11 +327,11 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors
 	. = ..()
 	if(!istype(user))
 		return
-	var/obj/item/organ/external/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA)
-	var/obj/item/organ/external/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB)
-	var/obj/item/organ/external/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS)
-	var/obj/item/organ/external/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES)
-	var/obj/item/organ/external/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS)
+	var/obj/item/organ/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA)
+	var/obj/item/organ/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB)
+	var/obj/item/organ/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS)
+	var/obj/item/organ/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES)
+	var/obj/item/organ/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS)
 
 	if(src == user.vagina)
 		vagina?.visibility_preference = GENITAL_NEVER_SHOW
@@ -360,11 +360,11 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors
 	if(other_end)
 		QDEL_NULL(other_end)
 
-	var/obj/item/organ/external/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA)
-	var/obj/item/organ/external/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB)
-	var/obj/item/organ/external/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS)
-	var/obj/item/organ/external/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES)
-	var/obj/item/organ/external/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS)
+	var/obj/item/organ/genital/vagina/vagina = user.get_organ_slot(ORGAN_SLOT_VAGINA)
+	var/obj/item/organ/genital/womb/womb = user.get_organ_slot(ORGAN_SLOT_WOMB)
+	var/obj/item/organ/genital/penis/penis = user.get_organ_slot(ORGAN_SLOT_PENIS)
+	var/obj/item/organ/genital/testicles/testicles = user.get_organ_slot(ORGAN_SLOT_TESTICLES)
+	var/obj/item/organ/genital/anus/anus = user.get_organ_slot(ORGAN_SLOT_ANUS)
 
 	if(!(src == user.vagina))
 		anus?.visibility_preference = GENITAL_HIDDEN_BY_CLOTHES
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm
index 3248b9b35ea..423431f78b4 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/feather.dm
@@ -29,7 +29,7 @@
 
 		if(BODY_ZONE_CHEST)
 			targetedsomewhere = TRUE
-			var/obj/item/organ/external/genital/badonkers = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+			var/obj/item/organ/genital/badonkers = target.get_organ_slot(ORGAN_SLOT_BREASTS)
 			if(!(target.is_topless() || badonkers.visibility_preference == GENITAL_ALWAYS_SHOW))
 				to_chat(user, span_danger("[target]'s chest is covered!"))
 				return
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm
index 10ae92b9200..8cd272a2258 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/fleshlight.dm
@@ -61,7 +61,7 @@
 		return
 	switch(user.zone_selected) //to let code know what part of body we gonna... Uhh... You get the point.
 		if(BODY_ZONE_PRECISE_GROIN)
-			var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
+			var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
 			if(!penis)
 				to_chat(user, span_danger("[target] doesn't have a penis!"))
 				return
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm
index 2330cc87729..cac170fed7b 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/kinky_shocker.dm
@@ -124,8 +124,8 @@
 	switch(user.zone_selected) //to let code know what part of body we gonna tickle
 		if(BODY_ZONE_PRECISE_GROIN)
 			targetedsomewhere = TRUE
-			var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
-			var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
+			var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
+			var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
 			if(vagina && penis)
 				if(target.is_bottomless() || (penis.visibility_preference == GENITAL_ALWAYS_SHOW && vagina.visibility_preference == GENITAL_ALWAYS_SHOW))
 					message = (user == target) ? pick("leans [src] against [target.p_their()] penis, letting it shock it. Ouch...",
@@ -184,7 +184,7 @@
 
 		if(BODY_ZONE_CHEST)
 			targetedsomewhere = TRUE
-			var/obj/item/organ/external/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+			var/obj/item/organ/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
 			if(breasts)
 				if(breasts.visibility_preference == GENITAL_ALWAYS_SHOW || target.is_topless())
 					message = (user == target) ? pick("leans [src] against [target.p_their()] breasts, letting it shock it.",
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm
index 80add499a9a..8bac2f1bba8 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/magic_wand.dm
@@ -117,8 +117,8 @@
 
 	switch(user.zone_selected)
 		if(BODY_ZONE_PRECISE_GROIN)
-			var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
-			var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
+			var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
+			var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
 
 			if(!vagina && !penis)
 				return FALSE
@@ -144,7 +144,7 @@
 			target.adjust_pleasure((vibration_mode == "low" ? 2 : (vibration_mode == "high" ? 10 : 5)))
 
 		if(BODY_ZONE_CHEST)
-			var/obj/item/organ/external/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+			var/obj/item/organ/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
 			if(!(target.is_topless() || breasts.visibility_preference == GENITAL_ALWAYS_SHOW))
 				to_chat(user, span_danger("Looks like [target]'s chest is covered!"))
 				return FALSE
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm
index aa786d4c593..c59afdcc427 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/torture_candle.dm
@@ -147,8 +147,8 @@
 	switch(user.zone_selected) //to let code know what part of body we gonna wax
 		if(BODY_ZONE_PRECISE_GROIN)
 			targeted_somewhere = TRUE
-			var/obj/item/organ/external/genital/penis = attacked.get_organ_slot(ORGAN_SLOT_PENIS)
-			var/obj/item/organ/external/genital/vagina = attacked.get_organ_slot(ORGAN_SLOT_VAGINA)
+			var/obj/item/organ/genital/penis = attacked.get_organ_slot(ORGAN_SLOT_PENIS)
+			var/obj/item/organ/genital/vagina = attacked.get_organ_slot(ORGAN_SLOT_VAGINA)
 			if((vagina && penis) && (attacked.is_bottomless() || vagina.visibility_preference == GENITAL_ALWAYS_SHOW && penis.visibility_preference == GENITAL_ALWAYS_SHOW))
 				message = (user == attacked) ? pick("drips some wax on [attacked.p_their()] genitals, moaning in pleasure",
 											"drips some wax on [attacked.p_them()]self, moaning in pleasure as it reaches [attacked.p_their()] genitals") : pick(
@@ -180,7 +180,7 @@
 
 		if(BODY_ZONE_CHEST)
 			targeted_somewhere = TRUE
-			var/obj/item/organ/external/genital/breasts = attacked.get_organ_slot(ORGAN_SLOT_BREASTS)
+			var/obj/item/organ/genital/breasts = attacked.get_organ_slot(ORGAN_SLOT_BREASTS)
 			if(attacked.is_topless() || breasts.visibility_preference == GENITAL_ALWAYS_SHOW)
 				var/breasts_or_nipples = breasts ? ORGAN_SLOT_BREASTS : ORGAN_SLOT_NIPPLES
 				message = (user == attacked) ? pick("drips some wax on [attacked.p_their()] [breasts_or_nipples], releasing all [attacked.p_their()] lustness", "drips some wax right on [attacked.p_their()] [breasts ? "tits" : "chest"], making [attacked.p_their()] feel faint.") : pick("pours the wax that is slowly dripping from [src] onto [attacked]'s [breasts_or_nipples], [attacked.p_they()] shows pure enjoyment.", "tilts the candle. Right in the moment when wax drips on [attacked]'s [breasts_or_nipples], [attacked.p_they()] shivers", "tilts the candle. Just when hot drops of wax fell on [attacked]'s [breasts_or_nipples], [attacked.p_they()] quietly moans in pleasure")
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm
index 5e12ff253d6..9667f5d1641 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibrator.dm
@@ -124,8 +124,8 @@
 	switch(user.zone_selected) //to let code know what part of body we gonna vibe
 		if(BODY_ZONE_PRECISE_GROIN)
 			targetedsomewhere = TRUE
-			var/obj/item/organ/external/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
-			var/obj/item/organ/external/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
+			var/obj/item/organ/genital/penis = target.get_organ_slot(ORGAN_SLOT_PENIS)
+			var/obj/item/organ/genital/vagina = target.get_organ_slot(ORGAN_SLOT_VAGINA)
 			if((vagina && penis) && (vagina.visibility_preference == GENITAL_ALWAYS_SHOW && penis.visibility_preference == GENITAL_ALWAYS_SHOW || target.is_bottomless()))
 				message = (user == target) ? pick("massages their vagina with the [src]", "[vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] teases their pussy with [src]", "massages their penis with the [src]", "[vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] teases their penis with [src]") : pick("[vibration_mode == "low" ? "delicately" : ""][vibration_mode = "hard" ? "aggressively" : ""] massages [target]'s vagina with [src]", "uses [src] to [vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] massage [target]'s crotch", "leans the massager against [target]'s pussy", "[vibration_mode == "low" ? "delicately" : ""][vibration_mode = "hard" ? "aggressively" : ""] massages [target]'s penis with [src]", "uses [src] to [vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] massage [target]'s penis", "leans the massager against [target]'s penis")
 				target.adjust_arousal(DEFAULT_AROUSAL_INCREASE)
@@ -150,7 +150,7 @@
 
 		if(BODY_ZONE_CHEST)
 			targetedsomewhere = TRUE
-			var/obj/item/organ/external/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
+			var/obj/item/organ/genital/breasts = target.get_organ_slot(ORGAN_SLOT_BREASTS)
 			if(target.is_topless() || breasts.visibility_preference == GENITAL_ALWAYS_SHOW)
 				var/breasts_or_nipples = breasts ? ORGAN_SLOT_BREASTS : ORGAN_SLOT_NIPPLES
 				message = (user == target) ? pick("massages their [breasts_or_nipples] with the [src]", "[vibration_mode == "low" ? "gently" : ""][vibration_mode = "hard" ? "roughly" : ""] teases their tits with [src]") : pick("[vibration_mode == "low" ? "delicately" : ""][vibration_mode = "hard" ? "aggressively" : ""] teases [target]'s [breasts_or_nipples] with [src]", "uses [src] to[vibration_mode == "low" ? " slowly" : ""] massage [target]'s [breasts ? "tits" : ORGAN_SLOT_NIPPLES]", "uses [src] to tease [target]'s [breasts ? "boobs" : ORGAN_SLOT_NIPPLES]", "rubs [target]'s [breasts ? "tits" : ORGAN_SLOT_NIPPLES] with [src]")
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm
index 9991547d878..5f338310fe4 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/vibroring.dm
@@ -80,7 +80,7 @@
 	var/mob/living/carbon/human/user = loc
 	if(!user || !istype(user))
 		return PROCESS_KILL
-	var/obj/item/organ/external/genital/testicles/balls = user.get_organ_slot(ORGAN_SLOT_PENIS)
+	var/obj/item/organ/genital/testicles/balls = user.get_organ_slot(ORGAN_SLOT_PENIS)
 	if(!toy_on || !balls)
 		return
 	user.adjust_arousal(1 * seconds_per_tick)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm
index 8db24c2ee5f..3a8e054a827 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/milking_machine.dm
@@ -43,17 +43,17 @@
 */
 
 	/// What organ is fluid being extracted from?
-	var/obj/item/organ/external/genital/current_selected_organ = null
+	var/obj/item/organ/genital/current_selected_organ = null
 	/// What beaker is liquid being outputted to?
 	var/obj/item/reagent_containers/cup/beaker = null
 	/// What human mob is currently buckled to the machine?
 	var/mob/living/carbon/human/current_mob = null
 	/// What is the current breast organ of the buckled mob?
-	var/obj/item/organ/external/genital/breasts/current_breasts = null
+	var/obj/item/organ/genital/breasts/current_breasts = null
 	/// What is the current testicles organ of the buckled mob?
-	var/obj/item/organ/external/genital/testicles/current_testicles = null
+	var/obj/item/organ/genital/testicles/current_testicles = null
 	/// What is the current vagina organ of the buckled mob?
-	var/obj/item/organ/external/genital/vagina/current_vagina = null
+	var/obj/item/organ/genital/vagina/current_vagina = null
 
 	/// What color is the machine currently set to?
 	var/machine_color = "pink"
@@ -355,7 +355,7 @@
 		update_all_visuals()
 		return FALSE
 
-	if((istype(current_selected_organ, /obj/item/organ/external/genital/testicles) && (semen_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/external/genital/vagina) && (girlcum_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/external/genital/breasts) && (milk_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)))
+	if((istype(current_selected_organ, /obj/item/organ/genital/testicles) && (semen_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/genital/vagina) && (girlcum_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)) || (istype(current_selected_organ, /obj/item/organ/genital/breasts) && (milk_vessel.reagents.total_volume == MILKING_PUMP_MAX_CAPACITY)))
 		current_mode = MILKING_PUMP_MODE_OFF
 		pump_state = MILKING_PUMP_STATE_OFF
 		update_all_visuals()
@@ -386,11 +386,11 @@
 	var/obj/item/reagent_containers/target_container
 
 	switch(current_selected_organ.type)
-		if(/obj/item/organ/external/genital/breasts)
+		if(/obj/item/organ/genital/breasts)
 			target_container = milk_vessel
-		if(/obj/item/organ/external/genital/vagina)
+		if(/obj/item/organ/genital/vagina)
 			target_container = girlcum_vessel
-		if(/obj/item/organ/external/genital/testicles)
+		if(/obj/item/organ/genital/testicles)
 			target_container = semen_vessel
 
 	if(!target_container || current_selected_organ.internal_fluid_count <= 0)
@@ -449,7 +449,7 @@
 		var/current_selected_organ_size = current_selected_organ.genital_size
 		cut_overlay(organ_overlay)
 
-		if(istype(current_selected_organ, /obj/item/organ/external/genital/breasts))
+		if(istype(current_selected_organ, /obj/item/organ/genital/breasts))
 			switch(current_selected_organ.genital_type)
 				if("pair")
 					current_selected_organ_type = "double_breast"
@@ -473,14 +473,14 @@
 					else
 						current_selected_organ_size = "5"
 
-		if(istype(current_selected_organ, /obj/item/organ/external/genital/testicles))
+		if(istype(current_selected_organ, /obj/item/organ/genital/testicles))
 			current_selected_organ_type = ORGAN_SLOT_PENIS
 
-		if(istype(current_selected_organ, /obj/item/organ/external/genital/vagina))
+		if(istype(current_selected_organ, /obj/item/organ/genital/vagina))
 			current_selected_organ_type = ORGAN_SLOT_VAGINA
 
 		organ_overlay_new_icon_state = "[current_selected_organ_type]_pump_[pump_state]"
-		if(istype(current_selected_organ, /obj/item/organ/external/genital/breasts))
+		if(istype(current_selected_organ, /obj/item/organ/genital/breasts))
 			organ_overlay_new_icon_state += "_[current_selected_organ_size]"
 
 		if(current_mode == MILKING_PUMP_MODE_OFF)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm
index 176750d8d64..f93a67c5adb 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_machinery/washing_machine.dm
@@ -30,8 +30,8 @@
 		if (covered)
 			continue
 
-		var/obj/item/organ/external/genital/vagina/found_vagina = buckled_human.get_organ_slot(ORGAN_SLOT_VAGINA)
-		var/obj/item/organ/external/genital/vagina/found_penis = buckled_human.get_organ_slot(ORGAN_SLOT_PENIS)
+		var/obj/item/organ/genital/vagina/found_vagina = buckled_human.get_organ_slot(ORGAN_SLOT_VAGINA)
+		var/obj/item/organ/genital/vagina/found_penis = buckled_human.get_organ_slot(ORGAN_SLOT_PENIS)
 
 		var/arousal_mult = seconds_per_tick
 		var/message_chance = 40
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm
index ff1fdfe8cb5..319683e3c39 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/_genital.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/external/genital
+/obj/item/organ/genital
 	/// The fluid count of the genital.
 	var/internal_fluid_count = 0
 
@@ -12,15 +12,15 @@
 	var/obj/item/inserted_item
 
 /// Helper proc for checking if internal fluids are full or not.
-/obj/item/organ/external/genital/proc/internal_fluid_full()
+/obj/item/organ/genital/proc/internal_fluid_full()
 	return internal_fluid_count >= internal_fluid_maximum
 
 /// Adds the given amount to the internal fluid count, clamping it between 0 and internal_fluid_maximum.
-/obj/item/organ/external/genital/proc/adjust_internal_fluid(amount)
+/obj/item/organ/genital/proc/adjust_internal_fluid(amount)
 	internal_fluid_count = clamp(internal_fluid_count + amount, 0, internal_fluid_maximum)
 
 /// Tries to add the specified amount to the target reagent container, or removes it if none are available. Keeps in mind internal_fluid_count.
-/obj/item/organ/external/genital/proc/transfer_internal_fluid(datum/reagents/reagent_container = null, attempt_amount)
+/obj/item/organ/genital/proc/transfer_internal_fluid(datum/reagents/reagent_container = null, attempt_amount)
 	if(!internal_fluid_datum || !internal_fluid_count || !internal_fluid_maximum)
 		return FALSE
 
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm
index 8899db9d003..9e2686001a3 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/breasts.dm
@@ -1,7 +1,7 @@
-/obj/item/organ/external/genital/breasts
+/obj/item/organ/genital/breasts
 	internal_fluid_datum = /datum/reagent/consumable/breast_milk
 
-/obj/item/organ/external/genital/breasts/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/breasts/build_from_dna(datum/dna/DNA, associated_key)
 	. = ..()
 	var/breasts_capacity = 0
 	var/size = 0.5
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm
index e9864538174..dfe777b38a6 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/testicles.dm
@@ -1,7 +1,7 @@
-/obj/item/organ/external/genital/testicles
+/obj/item/organ/genital/testicles
 	internal_fluid_datum = /datum/reagent/consumable/cum
 
-/obj/item/organ/external/genital/testicles/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/testicles/build_from_dna(datum/dna/DNA, associated_key)
 	. = ..()
 	var/size = 0.5
 	if(DNA.features["balls_size"] > 0)
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm
index c74995845a1..9a201ea5c5e 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_organs/vagina.dm
@@ -1,6 +1,6 @@
-/obj/item/organ/external/genital/vagina
+/obj/item/organ/genital/vagina
 	internal_fluid_datum = /datum/reagent/consumable/femcum
 
-/obj/item/organ/external/genital/vagina/build_from_dna(datum/dna/DNA, associated_key)
+/obj/item/organ/genital/vagina/build_from_dna(datum/dna/DNA, associated_key)
 	. = ..()
 	internal_fluid_maximum = 10
diff --git a/modular_nova/modules/modular_persistence/code/modular_persistence.dm b/modular_nova/modules/modular_persistence/code/modular_persistence.dm
index 2919b4e3837..834f6a3bf59 100644
--- a/modular_nova/modules/modular_persistence/code/modular_persistence.dm
+++ b/modular_nova/modules/modular_persistence/code/modular_persistence.dm
@@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
 	"stored_character_slot_index",
 ))
 
-/obj/item/organ/internal/brain
+/obj/item/organ/brain
 	/// The modular persistence data for a character.
 	var/datum/modular_persistence/modular_persistence
 
@@ -30,7 +30,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
 		player.save_individual_persistence()
 
 /// Loads the contents of the player's modular_persistence file to their character.
-/datum/controller/subsystem/persistence/proc/load_modular_persistence(obj/item/organ/internal/brain/brain)
+/datum/controller/subsystem/persistence/proc/load_modular_persistence(obj/item/organ/brain/brain)
 	if(!brain)
 		return FALSE
 
@@ -51,11 +51,11 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
 	/// The owner's character slot index.
 	var/stored_character_slot_index
 
-/datum/modular_persistence/New(obj/item/organ/internal/brain/brain, list/persistence_data)
+/datum/modular_persistence/New(obj/item/organ/brain/brain, list/persistence_data)
 	owner_brain = WEAKREF(brain)
 	. = ..()
 
-	var/obj/item/organ/internal/brain/our_brain = owner_brain?.resolve()
+	var/obj/item/organ/brain/our_brain = owner_brain?.resolve()
 	if(!our_brain)
 		owner_brain = null
 		return
@@ -74,7 +74,9 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
 
 		if(var_entry)
 			vars[var_name] = var_entry
-
+	if(findtext(nif_path, "/obj/item/organ/internal"))
+		var/trimmed_nif_path = copytext(nif_path, length("/obj/item/organ/internal") + 1)
+		nif_path = "/obj/item/organ[trimmed_nif_path]"
 	if(!our_brain.owner)
 		CRASH("Tried to load modular persistence on a brain with no owner! How did this happen?! (\ref[brain], [brain.brainmob?.ckey], [brain])")
 
@@ -94,7 +96,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
 /datum/modular_persistence/proc/serialize_contents_to_list()
 	var/list/returned_list = list()
 
-	var/obj/item/organ/internal/brain/our_brain = owner_brain?.resolve()
+	var/obj/item/organ/brain/our_brain = owner_brain?.resolve()
 	if(!our_brain)
 		owner_brain = null
 		return
@@ -115,7 +117,7 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
 
 /// Saves the held persistence data to where it needs to go.
 /datum/modular_persistence/proc/save_data(var/ckey)
-	var/obj/item/organ/internal/brain/our_brain = owner_brain?.resolve()
+	var/obj/item/organ/brain/our_brain = owner_brain?.resolve()
 	if(!our_brain)
 		owner_brain = null
 		return
@@ -139,6 +141,6 @@ GLOBAL_LIST_INIT(modular_persistence_ignored_vars, list(
 
 /// Saves the persistence data for the owner.
 /mob/living/carbon/human/proc/save_individual_persistence(var/ckey)
-	var/obj/item/organ/internal/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/brain = get_organ_slot(ORGAN_SLOT_BRAIN)
 
 	return brain?.modular_persistence?.save_data(ckey)
diff --git a/modular_nova/modules/modular_vending/code/wardrobes.dm b/modular_nova/modules/modular_vending/code/wardrobes.dm
index 1ada597beba..1026917e24c 100644
--- a/modular_nova/modules/modular_vending/code/wardrobes.dm
+++ b/modular_nova/modules/modular_vending/code/wardrobes.dm
@@ -75,7 +75,7 @@
 	)
 
 	contraband_nova = list(
-		/obj/item/organ/internal/tongue/lizard/robot = 2,
+		/obj/item/organ/tongue/lizard/robot = 2,
 	)
 
 /obj/machinery/vending/wardrobe/science_wardrobe
diff --git a/modular_nova/modules/moretraitoritems/code/autosurgeon.dm b/modular_nova/modules/moretraitoritems/code/autosurgeon.dm
index fcd156c7475..fa773964ba0 100644
--- a/modular_nova/modules/moretraitoritems/code/autosurgeon.dm
+++ b/modular_nova/modules/moretraitoritems/code/autosurgeon.dm
@@ -1,36 +1,36 @@
 /obj/item/autosurgeon/toolset
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/toolset
+	starting_organ = /obj/item/organ/cyberimp/arm/toolset
 
 /obj/item/autosurgeon/surgery
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/surgery
+	starting_organ = /obj/item/organ/cyberimp/arm/surgery
 
 /obj/item/autosurgeon/botany
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/botany
+	starting_organ = /obj/item/organ/cyberimp/arm/botany
 
 /obj/item/autosurgeon/janitor
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/janitor
+	starting_organ = /obj/item/organ/cyberimp/arm/janitor
 
 /obj/item/autosurgeon/armblade
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/armblade
+	starting_organ = /obj/item/organ/cyberimp/arm/armblade
 
 /obj/item/autosurgeon/muscle
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/strongarm
+	starting_organ = /obj/item/organ/cyberimp/arm/strongarm
 
 //syndie
 /obj/item/autosurgeon/syndicate/hackerman
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/hacker
+	starting_organ = /obj/item/organ/cyberimp/arm/hacker
 
 /obj/item/autosurgeon/syndicate/esword_arm
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/esword
+	starting_organ = /obj/item/organ/cyberimp/arm/esword
 
 /obj/item/autosurgeon/syndicate/nodrop
-	starting_organ = /obj/item/organ/internal/cyberimp/brain/anti_drop
+	starting_organ = /obj/item/organ/cyberimp/brain/anti_drop
 
 /obj/item/autosurgeon/syndicate/baton
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/baton
+	starting_organ = /obj/item/organ/cyberimp/arm/baton
 
 /obj/item/autosurgeon/syndicate/flash
-	starting_organ = /obj/item/organ/internal/cyberimp/arm/flash
+	starting_organ = /obj/item/organ/cyberimp/arm/flash
 
 //bodypart
 /obj/item/autosurgeon/bodypart/r_arm_robotic
@@ -45,9 +45,9 @@
 	name = "strange autosurgeon"
 	icon = 'modular_nova/modules/moretraitoritems/icons/alien.dmi'
 	surgery_speed = 2
-	organ_whitelist = list(/obj/item/organ/internal/alien)
+	organ_whitelist = list(/obj/item/organ/alien)
 
-/obj/item/organ/internal/alien/plasmavessel/opfor
+/obj/item/organ/alien/plasmavessel/opfor
 	stored_plasma = 500
 	max_plasma = 500
 	plasma_rate = 10
@@ -62,12 +62,12 @@
 
 /obj/item/storage/organbox/strange/PopulateContents()
 	new /obj/item/autosurgeon/xeno(src)
-	new /obj/item/organ/internal/alien/plasmavessel/opfor(src)
-	new /obj/item/organ/internal/alien/resinspinner(src)
-	new /obj/item/organ/internal/alien/acid(src)
-	new /obj/item/organ/internal/alien/neurotoxin(src)
-	new /obj/item/organ/internal/alien/hivenode(src)
+	new /obj/item/organ/alien/plasmavessel/opfor(src)
+	new /obj/item/organ/alien/resinspinner(src)
+	new /obj/item/organ/alien/acid(src)
+	new /obj/item/organ/alien/neurotoxin(src)
+	new /obj/item/organ/alien/hivenode(src)
 
 /obj/item/storage/organbox/strange/eggsac/PopulateContents()
 	. = ..()
-	new /obj/item/organ/internal/alien/eggsac(src)
+	new /obj/item/organ/alien/eggsac(src)
diff --git a/modular_nova/modules/mutants/code/mutant_species.dm b/modular_nova/modules/mutants/code/mutant_species.dm
index 773baefb150..e353d724a64 100644
--- a/modular_nova/modules/mutants/code/mutant_species.dm
+++ b/modular_nova/modules/mutants/code/mutant_species.dm
@@ -19,7 +19,7 @@
 		TRAIT_NO_ZOMBIFY,
 	)
 	inherent_biotypes = MOB_UNDEAD | MOB_HUMANOID
-	mutanttongue = /obj/item/organ/internal/tongue/zombie
+	mutanttongue = /obj/item/organ/tongue/zombie
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | ERT_SPAWN
 	bodytemp_normal = T0C // They have no natural body heat, the environment regulates body temp
 	bodytemp_heat_damage_limit = FIRE_MINIMUM_TEMPERATURE_TO_SPREAD // Take damage at fire temp
@@ -56,7 +56,7 @@
 	name = "Mutated Abomination"
 	id = SPECIES_MUTANT_INFECTIOUS
 	damage_modifier = 10
-	mutanteyes = /obj/item/organ/internal/eyes/zombie
+	mutanteyes = /obj/item/organ/eyes/zombie
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN
 	bodypart_overrides = list(
 		BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant_zombie,
diff --git a/modular_nova/modules/night_vision/night_vision.dm b/modular_nova/modules/night_vision/night_vision.dm
index 942d52fa645..5e2bfc04c52 100644
--- a/modular_nova/modules/night_vision/night_vision.dm
+++ b/modular_nova/modules/night_vision/night_vision.dm
@@ -21,7 +21,7 @@
 
 /datum/quirk/night_vision/proc/refresh_quirk_holder_eyes()
 	var/mob/living/carbon/human/human_quirk_holder = quirk_holder
-	var/obj/item/organ/internal/eyes/eyes = human_quirk_holder.get_organ_by_type(/obj/item/organ/internal/eyes)
+	var/obj/item/organ/eyes/eyes = human_quirk_holder.get_organ_by_type(/obj/item/organ/eyes)
 	if(!eyes)
 		return
 	// We've either added or removed TRAIT_NIGHT_VISION before calling this proc. Just refresh the eyes.
diff --git a/modular_nova/modules/organs/code/ears.dm b/modular_nova/modules/organs/code/ears.dm
index f7bbd6d622f..c5567132e7d 100644
--- a/modular_nova/modules/organs/code/ears.dm
+++ b/modular_nova/modules/organs/code/ears.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/ears/teshari
+/obj/item/organ/ears/teshari
 	name = "teshari ears"
 	desc = "A set of four long rabbit-like ears, a Teshari's main tool while hunting. Naturally extremely sensitive to loud sounds."
 	damage_multiplier = 1.5
@@ -6,7 +6,7 @@
 	overrides_sprite_datum_organ_type = TRUE
 	bodypart_overlay = /datum/bodypart_overlay/mutant/ears
 
-/obj/item/organ/internal/ears/teshari/on_mob_remove(mob/living/carbon/ear_owner)
+/obj/item/organ/ears/teshari/on_mob_remove(mob/living/carbon/ear_owner)
 	. = ..()
 	REMOVE_TRAIT(ear_owner, TRAIT_GOOD_HEARING, ORGAN_TRAIT)
 
@@ -41,7 +41,7 @@
 	user.visible_message(span_notice("[user], pricks up [user.p_their()] four ears, each twitching intently!"), span_notice("You perk up all four of your ears, hunting for even the quietest sounds."))
 	update_button_state("echolocation_on")
 
-	var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
 	if(ears)
 		ears.damage_multiplier = 3
 
@@ -53,7 +53,7 @@
 	user.visible_message(span_notice("[user] drops [user.p_their()] ears down a bit, no longer listening as closely."), span_notice("You drop your ears down, no longer paying close attention."))
 	update_button_state("echolocation_off")
 
-	var/obj/item/organ/internal/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
+	var/obj/item/organ/ears/ears = user.get_organ_slot(ORGAN_SLOT_EARS)
 	if(ears)
 		ears.damage_multiplier = 1.5
 
diff --git a/modular_nova/modules/organs/code/heart.dm b/modular_nova/modules/organs/code/heart.dm
index 7764b29685a..59966fd0a3a 100644
--- a/modular_nova/modules/organs/code/heart.dm
+++ b/modular_nova/modules/organs/code/heart.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/snail
+/obj/item/organ/heart/snail
 	name = "twin gastropod hearts"
 	desc = "A primary heart normally nestled inside a gastropod's shell, and another in the owner's actual chest; necessary to maintain ample bloodflow through essentially two torsos."
 	icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
@@ -9,7 +9,7 @@
 
 	COOLDOWN_DECLARE(shell_effect_cd)
 
-/obj/item/organ/internal/heart/snail/on_mob_insert(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/snail/on_mob_insert(mob/living/carbon/organ_owner, special)
 	. = ..()
 	if(!ishuman(organ_owner))
 		return
@@ -22,7 +22,7 @@
 	RegisterSignal(human_owner, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(modify_damage))
 	RegisterSignal(human_owner, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(do_block_effect))
 
-/obj/item/organ/internal/heart/snail/on_mob_remove(mob/living/carbon/organ_owner, special)
+/obj/item/organ/heart/snail/on_mob_remove(mob/living/carbon/organ_owner, special)
 	. = ..()
 	if(!ishuman(organ_owner) || QDELETED(organ_owner))
 		return
@@ -36,7 +36,7 @@
  *
  * Adds a 0.5 modifier to attacks from the back, code borrowed (wholesale) from the roach heart.
  */
-/obj/item/organ/internal/heart/snail/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
+/obj/item/organ/heart/snail/proc/modify_damage(mob/living/carbon/human/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item)
 	SIGNAL_HANDLER
 
 	if(!is_blocking(source, damage_amount, damagetype, attack_direction))
@@ -49,7 +49,7 @@
  *
  * Does a special effect if we blocked damage with our shell.
  */
-/obj/item/organ/internal/heart/snail/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item)
+/obj/item/organ/heart/snail/proc/do_block_effect(mob/living/carbon/human/source, damage_dealt, damagetype, def_zone, blocked, wound_bonus, bare_wound_bonus, sharpness, attack_direction, obj/item/attacking_item)
 	SIGNAL_HANDLER
 
 	if(!is_blocking(source, damage_dealt, damagetype, attack_direction))
@@ -62,7 +62,7 @@
 	COOLDOWN_START(src, shell_effect_cd, 5 SECONDS) // Cooldown resets EVERY time we get hit
 
 /// Checks if the passed mob is in a valid state to be blocking damage with the snail shell
-/obj/item/organ/internal/heart/snail/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction)
+/obj/item/organ/heart/snail/proc/is_blocking(mob/living/carbon/human/blocker, damage_amount, damagetype, attack_direction)
 	if(damage_amount < 5 || damagetype != BRUTE || !attack_direction)
 		return
 	if(!ishuman(blocker) || blocker.stat >= UNCONSCIOUS)
diff --git a/modular_nova/modules/organs/code/liver.dm b/modular_nova/modules/organs/code/liver.dm
index 628ce9add87..9d7114f5b30 100644
--- a/modular_nova/modules/organs/code/liver.dm
+++ b/modular_nova/modules/organs/code/liver.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/liver/snail
+/obj/item/organ/liver/snail
 	name = "gastropod liver"
 	icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
 	icon_state = "liver-snail"
diff --git a/modular_nova/modules/organs/code/lungs.dm b/modular_nova/modules/organs/code/lungs.dm
index 9b60ef7d1d1..e7110a6b0a0 100644
--- a/modular_nova/modules/organs/code/lungs.dm
+++ b/modular_nova/modules/organs/code/lungs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/lungs/cold
+/obj/item/organ/lungs/cold
 	name = "cold-adapted lungs"
 	icon = 'modular_nova/modules/organs/icons/lungs.dmi'
 	desc = "A set of lungs adapted to low temperatures, though they are more susceptible to high temperatures"
@@ -22,7 +22,7 @@
 	heat_damage_type = BURN
 
 
-/obj/item/organ/internal/lungs/hot
+/obj/item/organ/lungs/hot
 	name = "heat-adapted lungs"
 	icon = 'modular_nova/modules/organs/icons/lungs.dmi'
 	desc = "A set of lungs adapted to high temperatures, though they are more susceptible to low temperatures"
@@ -45,7 +45,7 @@
 	heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_2
 	heat_damage_type = BURN
 
-/obj/item/organ/internal/lungs/toxin
+/obj/item/organ/lungs/toxin
 	name = "toxin-adapted lungs"
 	icon = 'modular_nova/modules/organs/icons/lungs.dmi'
 	desc = "A set of lungs adapted to toxic environments, though more susceptible to extreme temperatures."
@@ -72,7 +72,7 @@
 	heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3
 	heat_damage_type = BURN
 
-/obj/item/organ/internal/lungs/oxy
+/obj/item/organ/lungs/oxy
 	name = "low-oxygen-adapted lungs"
 	icon = 'modular_nova/modules/organs/icons/lungs.dmi'
 	desc = "A set of lungs adapted to lower-pressure environments, though more susceptible to extreme temperatures."
@@ -97,7 +97,7 @@
 	cold_level_3_damage = COLD_GAS_DAMAGE_LEVEL_3
 	cold_damage_type = BURN
 
-/obj/item/organ/internal/lungs/ethereal
+/obj/item/organ/lungs/ethereal
 	cold_level_1_threshold = 208
 	cold_level_2_threshold = 200
 	cold_level_3_threshold = 170
diff --git a/modular_nova/modules/organs/code/stomach.dm b/modular_nova/modules/organs/code/stomach.dm
index b43d364f989..cd68bfc4c36 100644
--- a/modular_nova/modules/organs/code/stomach.dm
+++ b/modular_nova/modules/organs/code/stomach.dm
@@ -1,8 +1,8 @@
-/obj/item/organ/internal/stomach
+/obj/item/organ/stomach
 	/// Whether the organ is an oversized version
 	var/is_oversized
 
-/obj/item/organ/internal/stomach/oversized
+/obj/item/organ/stomach/oversized
 	name = "huge guts"
 	desc = "Typically found in huge creatures, this monstrous engine has developed to be highly efficient, made to get an enormous amount of nutrients to an enormous eater."
 	icon = 'modular_nova/modules/organs/icons/stomach.dmi'
@@ -11,7 +11,7 @@
 	metabolism_efficiency = 0.07
 	is_oversized = TRUE
 
-/obj/item/organ/internal/stomach/synth/oversized
+/obj/item/organ/stomach/synth/oversized
 	name = "huge synthetic bio-reactor"
 	desc = "Typically found in huge synthetics, this monstrous engine has been developed to be highly efficient, made to provide an enormous amount of power to an enormous machine."
 	icon = 'modular_nova/modules/organs/icons/stomach.dmi'
@@ -20,7 +20,7 @@
 	metabolism_efficiency = 0.07
 	is_oversized = TRUE
 
-/obj/item/organ/internal/stomach/slime/oversized
+/obj/item/organ/stomach/slime/oversized
 	name = "huge golgi apparatus"
 	desc = "Typically found in huge slimes, this monstrous organelle has been developed to be highly efficient, made to provide an enormous amount of nutrients to an enormous ooze."
 	maxHealth = 1.5 * STANDARD_ORGAN_THRESHOLD
@@ -28,12 +28,12 @@
 	is_oversized = TRUE
 
 // Not a stomach, but suitable for where we keep oversized schtuff.
-/obj/item/organ/internal/brain/slime/oversized
+/obj/item/organ/brain/slime/oversized
 	name = "oversized core"
 	desc = "The central core of a slimeperson, technically their 'extract.' Where the cytoplasm, membrane, and organelles come from; perhaps this is also a mitochondria? This one is enormous."
 	brain_size = 2
 
-/obj/item/organ/internal/stomach/ethereal/proc/ethereal_shock_absorb(mob/living/stomach_owner = owner, shock_damage, shock_source, siemens_coeff = 1, flags = NONE)
+/obj/item/organ/stomach/ethereal/proc/ethereal_shock_absorb(mob/living/stomach_owner = owner, shock_damage, shock_source, siemens_coeff = 1, flags = NONE)
 	do_sparks(number = 5, cardinal_only = TRUE, source = shock_source)
 	playsound(src, SFX_SPARKS, 75, TRUE, -1)
 	adjust_charge(25)
@@ -50,7 +50,7 @@
 	return COMPONENT_LIVING_BLOCK_SHOCK
 
 //lithovore stomach - modified golem - this whole section calls to the vars set under stomach/golem, they work in game
-/obj/item/organ/internal/stomach/lithovore
+/obj/item/organ/stomach/lithovore
 	name = "litho-adapted stomach"
 	icon_state = "stomach-p"
 	desc = "An unfamiliar digestive organ that excels in material deconstruction."
@@ -59,7 +59,7 @@
 	organ_traits = list(TRAIT_ROCK_EATER)
 
 //i eat MORE ROCKS. WORSE.
-/obj/item/organ/internal/stomach/lithovore/oversized
+/obj/item/organ/stomach/lithovore/oversized
 	name = "huge litho-adapted stomach"
 	icon = 'modular_nova/modules/organs/icons/stomach.dmi'
 	icon_state = "stomach_big_p"
diff --git a/modular_nova/modules/organs/code/tongue.dm b/modular_nova/modules/organs/code/tongue.dm
index 57ff8f5714c..31cce08e47b 100644
--- a/modular_nova/modules/organs/code/tongue.dm
+++ b/modular_nova/modules/organs/code/tongue.dm
@@ -1,60 +1,60 @@
-/obj/item/organ/internal/tongue/copy_traits_from(obj/item/organ/internal/tongue/old_tongue, copy_actions = FALSE)
+/obj/item/organ/tongue/copy_traits_from(obj/item/organ/tongue/old_tongue, copy_actions = FALSE)
 	. = ..()
 	// make sure we get food preferences too, because those are now tied to tongues for some reason
 	liked_foodtypes = old_tongue.liked_foodtypes
 	disliked_foodtypes = old_tongue.disliked_foodtypes
 	toxic_foodtypes = old_tongue.toxic_foodtypes
 
-/obj/item/organ/internal/tongue/dog
+/obj/item/organ/tongue/dog
 	name = "long tongue"
 	desc = "A long and wet tongue. It seems to jump when it's called good, oddly enough."
 	say_mod = "woofs"
 	icon_state = "tongue"
 	modifies_speech = TRUE
 
-/obj/item/organ/internal/tongue/dog/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/tongue/dog/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
 	. = ..()
 	signer.verb_ask = "arfs"
 	signer.verb_exclaim = "wans"
 	signer.verb_whisper = "whimpers"
 	signer.verb_yell = "barks"
 
-/obj/item/organ/internal/tongue/dog/mob_remove(mob/living/carbon/speaker, special = FALSE)
+/obj/item/organ/tongue/dog/mob_remove(mob/living/carbon/speaker, special = FALSE)
 	. = ..()
 	speaker.verb_ask = initial(verb_ask)
 	speaker.verb_exclaim = initial(verb_exclaim)
 	speaker.verb_whisper = initial(verb_whisper)
 	speaker.verb_yell = initial(verb_yell)
 
-/obj/item/organ/internal/tongue/cat/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/tongue/cat/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
 	. = ..()
 	signer.verb_ask = "mrrps"
 	signer.verb_exclaim = "mrrowls"
 	signer.verb_whisper = "purrs"
 	signer.verb_yell = "yowls"
 
-/obj/item/organ/internal/tongue/cat/mob_remove(mob/living/carbon/speaker, special = FALSE)
+/obj/item/organ/tongue/cat/mob_remove(mob/living/carbon/speaker, special = FALSE)
 	. = ..()
 	speaker.verb_ask = initial(verb_ask)
 	speaker.verb_exclaim = initial(verb_exclaim)
 	speaker.verb_whisper = initial(verb_whisper)
 	speaker.verb_yell = initial(verb_yell)
 
-/obj/item/organ/internal/tongue/avian
+/obj/item/organ/tongue/avian
 	name = "avian tongue"
 	desc = "A short and stubby tongue that craves seeds."
 	say_mod = "chirps"
 	icon_state = "tongue"
 	modifies_speech = TRUE
 
-/obj/item/organ/internal/tongue/avian/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
+/obj/item/organ/tongue/avian/mob_insert(mob/living/carbon/signer, special = FALSE, movement_flags = DELETE_IF_REPLACED)
 	. = ..()
 	signer.verb_ask = "peeps"
 	signer.verb_exclaim = "squawks"
 	signer.verb_whisper = "murmurs"
 	signer.verb_yell = "shrieks"
 
-/obj/item/organ/internal/tongue/avian/mob_remove(mob/living/carbon/speaker, special = FALSE)
+/obj/item/organ/tongue/avian/mob_remove(mob/living/carbon/speaker, special = FALSE)
 	. = ..()
 	speaker.verb_ask = initial(verb_ask)
 	speaker.verb_exclaim = initial(verb_exclaim)
@@ -63,10 +63,10 @@
 
 /// This "human" tongue is only used in Character Preferences / Augmentation menu.
 /// The base tongue class lacked a say_mod. With say_mod included it makes a non-Human user sound like a Human.
-/obj/item/organ/internal/tongue/human
+/obj/item/organ/tongue/human
 	say_mod = "says"
 
-/obj/item/organ/internal/tongue/lizard/robot
+/obj/item/organ/tongue/lizard/robot
 	name = "robotic lizard voicebox"
 	desc = "A lizard-like voice synthesizer that can interface with organic lifeforms."
 	organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
@@ -81,14 +81,14 @@
 	organ_traits = list(TRAIT_SILICON_EMOTES_ALLOWED)
 	voice_filter = "alimiter=0.9,acompressor=threshold=0.2:ratio=20:attack=10:release=50:makeup=2,highpass=f=1000"
 
-/obj/item/organ/internal/tongue/lizard/robot/can_speak_language(language)
+/obj/item/organ/tongue/lizard/robot/can_speak_language(language)
 	return TRUE // THE MAGIC OF ELECTRONICS
 
-/obj/item/organ/internal/tongue/lizard/robot/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/lizard/robot/modify_speech(datum/source, list/speech_args)
 	. = ..()
 	speech_args[SPEECH_SPANS] |= SPAN_ROBOT
 
-/obj/item/organ/internal/tongue/lizard/cybernetic
+/obj/item/organ/tongue/lizard/cybernetic
 	name = "forked cybernetic tongue"
 	icon = 'modular_nova/modules/organs/icons/cyber_tongue.dmi'
 	icon_state = "cybertongue-lizard"
@@ -100,7 +100,7 @@
 	disliked_foodtypes = NONE
 	modifies_speech = TRUE
 
-/obj/item/organ/internal/tongue/cybernetic
+/obj/item/organ/tongue/cybernetic
 	name = "cybernetic tongue"
 	icon = 'modular_nova/modules/organs/icons/cyber_tongue.dmi'
 	icon_state = "cybertongue"
@@ -112,20 +112,20 @@
 	liked_foodtypes = NONE
 	disliked_foodtypes = NONE
 
-/obj/item/organ/internal/tongue/vox
+/obj/item/organ/tongue/vox
 	name = "vox tongue"
 	desc = "A fleshy muscle mostly used for skreeing."
 	say_mod = "skrees"
 	liked_foodtypes = MEAT | FRIED
 
-/obj/item/organ/internal/tongue/dwarven
+/obj/item/organ/tongue/dwarven
 	name = "dwarven tongue"
 	desc = "A fleshy muscle mostly used for bellowing."
 	say_mod = "bellows"
 	liked_foodtypes = ALCOHOL | MEAT | DAIRY //Dwarves like alcohol, meat, and dairy products.
 	disliked_foodtypes = JUNKFOOD | FRIED | CLOTH //Dwarves hate foods that have no nutrition other than alcohol.
 
-/obj/item/organ/internal/tongue/ghoul
+/obj/item/organ/tongue/ghoul
 	name = "ghoulish tongue"
 	desc = "A fleshy muscle mostly used for rasping."
 	say_mod = "rasps"
@@ -133,7 +133,7 @@
 	disliked_foodtypes = VEGETABLES | FRUIT | CLOTH
 	toxic_foodtypes = DAIRY | PINEAPPLE
 
-/obj/item/organ/internal/tongue/insect
+/obj/item/organ/tongue/insect
 	name = "insect tongue"
 	desc = "A fleshy muscle mostly used for chittering."
 	say_mod = "chitters"
@@ -141,7 +141,7 @@
 	disliked_foodtypes = CLOTH | GRAIN | FRIED
 	toxic_foodtypes = DAIRY
 
-/obj/item/organ/internal/tongue/xeno_hybrid
+/obj/item/organ/tongue/xeno_hybrid
 	name = "alien tongue"
 	desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"."
 	icon_state = "tonguexeno"
@@ -149,21 +149,21 @@
 	taste_sensitivity = 10
 	liked_foodtypes = MEAT
 
-/obj/item/organ/internal/tongue/xeno_hybrid/Initialize(mapload)
+/obj/item/organ/tongue/xeno_hybrid/Initialize(mapload)
 	. = ..()
-	voice_filter = /obj/item/organ/internal/tongue/alien::voice_filter
+	voice_filter = /obj/item/organ/tongue/alien::voice_filter
 
-/obj/item/organ/internal/tongue/skrell
+/obj/item/organ/tongue/skrell
 	name = "skrell tongue"
 	desc = "A fleshy muscle mostly used for warbling."
 	say_mod = "warbles"
 
-/obj/item/organ/internal/tongue/lizard/filterless
+/obj/item/organ/tongue/lizard/filterless
 	name = "smooth forked tongue"
 
 	voice_filter = null
 
-/obj/item/organ/internal/tongue/lizard/filterless/Initialize(mapload)
+/obj/item/organ/tongue/lizard/filterless/Initialize(mapload)
 	. = ..()
 
 	desc += " This one is noticeably smooth, and would lack any non-hissing lisps if used."
diff --git a/modular_nova/modules/oversized/code/oversized_quirk.dm b/modular_nova/modules/oversized/code/oversized_quirk.dm
index 7b17b666365..85ce0a4c673 100644
--- a/modular_nova/modules/oversized/code/oversized_quirk.dm
+++ b/modular_nova/modules/oversized/code/oversized_quirk.dm
@@ -75,9 +75,9 @@
 			continue
 
 		// if it's a brain, make sure the mob doesn't get stuck outside their body
-		var/obj/item/organ/internal/brain/possibly_a_brain = organ_to_restore
+		var/obj/item/organ/brain/possibly_a_brain = organ_to_restore
 		if(istype(possibly_a_brain))
-			var/obj/item/organ/internal/brain/current_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN)
+			var/obj/item/organ/brain/current_brain = human_holder.get_organ_slot(ORGAN_SLOT_BRAIN)
 			possibly_a_brain.brainmob = current_brain.brainmob
 
 		organ_to_restore.replace_into(quirk_holder)
diff --git a/modular_nova/modules/primitive_catgirls/code/organs.dm b/modular_nova/modules/primitive_catgirls/code/organs.dm
index 94e8acd121d..4a57693ba54 100644
--- a/modular_nova/modules/primitive_catgirls/code/organs.dm
+++ b/modular_nova/modules/primitive_catgirls/code/organs.dm
@@ -2,13 +2,13 @@
 
 // Lungs
 
-/obj/item/organ/internal/lungs/icebox_adapted
+/obj/item/organ/lungs/icebox_adapted
 	name = "hardy lungs"
 	desc = "Lungs adapted to frozen environments that would be otherwise inhospitable to most races. Feels cold."
 	icon_state = "hardylungs"
 	icon = 'modular_nova/modules/primitive_catgirls/icons/organs.dmi'
 
-/obj/item/organ/internal/lungs/icebox_adapted/Initialize(mapload)
+/obj/item/organ/lungs/icebox_adapted/Initialize(mapload)
 	. = ..()
 
 	var/datum/gas_mixture/immutable/planetary/mix = SSair.planetary[ICEMOON_DEFAULT_ATMOS]
@@ -59,12 +59,12 @@
 
 // Eyes
 
-/obj/item/organ/internal/eyes/low_light_adapted
+/obj/item/organ/eyes/low_light_adapted
 	color_cutoffs = list(30, 15, 15)
 
 
 // Tongue
-/obj/item/organ/internal/tongue/cat/primitive
+/obj/item/organ/tongue/cat/primitive
 	liked_foodtypes = SEAFOOD | MEAT | GORE
 
 
diff --git a/modular_nova/modules/primitive_catgirls/code/spawner.dm b/modular_nova/modules/primitive_catgirls/code/spawner.dm
index b7657298c12..1d4045aea65 100644
--- a/modular_nova/modules/primitive_catgirls/code/spawner.dm
+++ b/modular_nova/modules/primitive_catgirls/code/spawner.dm
@@ -137,7 +137,7 @@
 		return
 
 	if(target.key && target != user)
-		if(!target.get_organ_by_type(/obj/item/organ/internal/brain) || (target.mind && !target.ssd_indicator))
+		if(!target.get_organ_by_type(/obj/item/organ/brain) || (target.mind && !target.ssd_indicator))
 			to_chat(user, span_danger("Awake kin cannot be put back to sleep against their will."))
 			return
 
diff --git a/modular_nova/modules/primitive_catgirls/code/species.dm b/modular_nova/modules/primitive_catgirls/code/species.dm
index e52207d31ef..6cdab65720a 100644
--- a/modular_nova/modules/primitive_catgirls/code/species.dm
+++ b/modular_nova/modules/primitive_catgirls/code/species.dm
@@ -16,9 +16,9 @@
 	name = "Primitive Demihuman"
 	id = SPECIES_FELINE_PRIMITIVE
 
-	mutantlungs = /obj/item/organ/internal/lungs/icebox_adapted
-	mutanteyes = /obj/item/organ/internal/eyes/low_light_adapted
-	mutanttongue = /obj/item/organ/internal/tongue/cat/primitive
+	mutantlungs = /obj/item/organ/lungs/icebox_adapted
+	mutanteyes = /obj/item/organ/eyes/low_light_adapted
+	mutanttongue = /obj/item/organ/tongue/cat/primitive
 
 	species_language_holder = /datum/language_holder/primitive_felinid
 	language_prefs_whitelist = list(/datum/language/primitive_catgirl)
diff --git a/modular_nova/modules/resleeving/code/rsd_interface.dm b/modular_nova/modules/resleeving/code/rsd_interface.dm
index b065891d171..9c90c1869e2 100644
--- a/modular_nova/modules/resleeving/code/rsd_interface.dm
+++ b/modular_nova/modules/resleeving/code/rsd_interface.dm
@@ -9,7 +9,7 @@
 
 /// Attempts to use the item on the target brain.
 /obj/item/rsd_interface/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
-	if(!istype(interacting_with, /obj/item/organ/internal/brain))
+	if(!istype(interacting_with, /obj/item/organ/brain))
 		return NONE
 
 	if(HAS_TRAIT(interacting_with, TRAIT_RSD_COMPATIBLE))
@@ -25,7 +25,7 @@
 
 /datum/element/rsd_interface/Attach(datum/target)
 	. = ..()
-	if(!istype(target, /obj/item/organ/internal/brain))
+	if(!istype(target, /obj/item/organ/brain))
 		return ELEMENT_INCOMPATIBLE
 
 	RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
diff --git a/modular_nova/modules/roundstart_implants/code/loadout_implants.dm b/modular_nova/modules/roundstart_implants/code/loadout_implants.dm
index a104481367f..bb396316511 100644
--- a/modular_nova/modules/roundstart_implants/code/loadout_implants.dm
+++ b/modular_nova/modules/roundstart_implants/code/loadout_implants.dm
@@ -2,22 +2,22 @@
 
 // EYE IMPLANTS
 
-/obj/item/organ/internal/eyes/robotic/binoculars
+/obj/item/organ/eyes/robotic/binoculars
 	name = "digital magnification optics"
 	desc = "Commonly used on frontier worlds with comparatively vast overland distances to aid in visual acquisition of coworkers and targets."
 	actions_types = list(/datum/action/item_action/organ_action/toggle)
 	var/zoomed = FALSE
 	var/range_power = 2 // what kind of range modifier do we feed to the scope component?
 
-/obj/item/organ/internal/eyes/robotic/binoculars/Initialize(mapload)
+/obj/item/organ/eyes/robotic/binoculars/Initialize(mapload)
 	. = ..()
 	AddComponent(/datum/component/scope, range_modifier = range_power)
 
-/obj/item/organ/internal/eyes/robotic/binoculars/ui_action_click(mob/user, actiontype)
+/obj/item/organ/eyes/robotic/binoculars/ui_action_click(mob/user, actiontype)
 	if (istype(actiontype, /datum/action/item_action/organ_action/toggle))
 		toggle_active(user)
 
-/obj/item/organ/internal/eyes/robotic/binoculars/proc/toggle_active(mob/user)
+/obj/item/organ/eyes/robotic/binoculars/proc/toggle_active(mob/user)
 	//this is so unbelievably, hysterically jank. i actually cannot believe this works. what the fuck
 	var/datum/component/scope/zoom = src.GetComponent(/datum/component/scope)
 	if (zoomed)
@@ -33,67 +33,67 @@
 		zoomed = TRUE
 
 // ARM IMPLANTS
-/obj/item/organ/internal/cyberimp/arm/adjuster
+/obj/item/organ/cyberimp/arm/adjuster
 	name = "adjuster arm implant"
 	desc = "A miniaturized toolset implant containing a simple fingertip-mounted universal screwdriver bit with an inverted torque-wrench head. Most commonly used when rearranging furniture or other station machinery."
 	items_to_create = list(/obj/item/wrench/integrated, /obj/item/screwdriver/integrated)
 
-/obj/item/organ/internal/cyberimp/arm/adjuster/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/adjuster/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/manufacturer_examine, COMPANY_NAKAMURA)
 
-/obj/item/organ/internal/cyberimp/arm/electrical_toolset
+/obj/item/organ/cyberimp/arm/electrical_toolset
 	name = "electrical toolset implant"
 	desc = "Bereft of any kind of insulation to speak of, this aug has a very distinct nickname amongst frontier outpost crews: 'the sizzler'. Often used in high verticality environments where loadout space is at a premium."
 	items_to_create = list(/obj/item/screwdriver/integrated, /obj/item/multitool/integrated, /obj/item/wirecutters/integrated)
 
-/obj/item/organ/internal/cyberimp/arm/electrical_toolset/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/electrical_toolset/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/manufacturer_examine, COMPANY_NAKAMURA)
 
-/obj/item/organ/internal/cyberimp/arm/arc_welder
+/obj/item/organ/cyberimp/arm/arc_welder
 	name = "shipbreaker's toolset implant"
 	desc = "A specialized salvage-grade implant that houses an arc welder, miniaturized crowbar within the bearer's arm, plus a fingertip torque-wrench rated for enough newtons to get the job done. Renowned across the frontier for being the 'trashy tattoo' equivalent of someone's first aug."
 	items_to_create = list(/obj/item/wrench/integrated, /obj/item/crowbar/integrated, /obj/item/weldingtool/electric/arc_welder/integrated)
 
-/obj/item/organ/internal/cyberimp/arm/arc_welder/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/arc_welder/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER)
 
-/obj/item/organ/internal/cyberimp/arm/emt_triage
+/obj/item/organ/cyberimp/arm/emt_triage
 	name = "triage actuator implant"
 	desc = "Pioneered by Interdyne Pharmaceuticals for use in their frontier postings, this set of in-arm augments allows medical staff to perform basic life-saving surgeries out on the field with the assistance of a bladed instrument."
 	items_to_create = list(/obj/item/surgical_drapes/integrated, /obj/item/retractor/integrated, /obj/item/hemostat/integrated)
 
-/obj/item/organ/internal/cyberimp/arm/emt_triage/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/emt_triage/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/manufacturer_examine, COMPANY_INTERDYNE)
 
-/obj/item/organ/internal/cyberimp/arm/civilian_barstaff
+/obj/item/organ/cyberimp/arm/civilian_barstaff
 	name = "waitstaff implant"
 	desc = "The galactic service industry demands only the finest from its (underpaid) employees, leading to the development of this sordid piece of technology which substitutes a user's organic arm for a food storage space and an integrated chamois cleaning cloth. Why?"
 	items_to_create = list(/obj/item/storage/bag/tray/integrated, /obj/item/reagent_containers/cup/rag/integrated)
 
-/obj/item/organ/internal/cyberimp/arm/civilian_lighter
+/obj/item/organ/cyberimp/arm/civilian_lighter
 	name = "thumbtip lighter implant"
 	desc = "This extraordinarily useless implant was a product of market demand, and it exists because the galactic diaspora apparently craves the ability to light things with their thumbtips."
 	items_to_create = list(/obj/item/lighter/integrated)
 
-/obj/item/organ/internal/cyberimp/arm/blacksteel_forging
+/obj/item/organ/cyberimp/arm/blacksteel_forging
 	name = "Blacksteel 'Starforge' metalworking toolset implant"
 	desc = "A galactic favorite amongst burgeoning starfarer races with a fascination for basic metallurgy or mundane weaponry, this unlikely toolset augmentation is one of the Foundation's most popular products."
 	items_to_create = list(/obj/item/forging/hammer/integrated, /obj/item/forging/tongs/integrated, /obj/item/forging/billow/integrated)
 
-/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/Initialize(mapload)
+/obj/item/organ/cyberimp/arm/blacksteel_forging/Initialize(mapload)
 	. = ..()
 	AddElement(/datum/element/manufacturer_examine, COMPANY_BLACKSTEEL)
 
-/obj/item/organ/internal/cyberimp/arm/bureaucracy
+/obj/item/organ/cyberimp/arm/bureaucracy
 	name = "bureaucrat's 'Jacent' toolset implant"
 	desc = "Popular amongst coreworld corporates, this integrated toolset includes a wrist-sheathed four-colour pen, a special motorized sheaf hollow for holding up to ten pieces of galactic-standard A4 paper and a set of two fingertip stamps for approving and denying things. Does not replenish."
 	items_to_create = list(/obj/item/pen/fourcolor/integrated, /obj/item/paper_bin/integrated, /obj/item/stamp/integrated, /obj/item/stamp/denied/integrated)
 
-/obj/item/organ/internal/cyberimp/arm/cargo
+/obj/item/organ/cyberimp/arm/cargo
 	name = "FTU 'Deckhand' toolset implant"
 	desc = "Containing a fingertip-mounted universal scanner and a boxcutter, deck workers across the sector favor this cheap and effective implant as both a means of self-defense from irate consumers and for keeping a set of handy scanners quite literally, close at hand."
 	items_to_create = list(/obj/item/universal_scanner/integrated, /obj/item/boxcutter/extended/integrated)
diff --git a/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm b/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm
index 84562826077..f25d82fc1e0 100644
--- a/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm
+++ b/modular_nova/modules/roundstart_implants/code/loadout_subtypes.dm
@@ -2,90 +2,90 @@
 //Purely code readability.
 
 // ARM IMPLANTS
-/obj/item/organ/internal/cyberimp/arm/adjuster/left_arm
+/obj/item/organ/cyberimp/arm/adjuster/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/adjuster/right_arm
+/obj/item/organ/cyberimp/arm/adjuster/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/power_cord/left_arm
+/obj/item/organ/cyberimp/arm/power_cord/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/power_cord/right_arm
+/obj/item/organ/cyberimp/arm/power_cord/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/lighter/left_arm
+/obj/item/organ/cyberimp/arm/lighter/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/lighter/right_arm
+/obj/item/organ/cyberimp/arm/lighter/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/arc_welder/left_arm
+/obj/item/organ/cyberimp/arm/arc_welder/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/arc_welder/right_arm
+/obj/item/organ/cyberimp/arm/arc_welder/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/electrical_toolset/left_arm
+/obj/item/organ/cyberimp/arm/electrical_toolset/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/electrical_toolset/right_arm
+/obj/item/organ/cyberimp/arm/electrical_toolset/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/emt_triage/left_arm
+/obj/item/organ/cyberimp/arm/emt_triage/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/emt_triage/right_arm
+/obj/item/organ/cyberimp/arm/emt_triage/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/civilian_barstaff/left_arm
+/obj/item/organ/cyberimp/arm/civilian_barstaff/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/civilian_barstaff/right_arm
+/obj/item/organ/cyberimp/arm/civilian_barstaff/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/civilian_lighter/left_arm
+/obj/item/organ/cyberimp/arm/civilian_lighter/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/civilian_lighter/right_arm
+/obj/item/organ/cyberimp/arm/civilian_lighter/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/left_arm
+/obj/item/organ/cyberimp/arm/blacksteel_forging/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/blacksteel_forging/right_arm
+/obj/item/organ/cyberimp/arm/blacksteel_forging/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/bureaucracy/left_arm
+/obj/item/organ/cyberimp/arm/bureaucracy/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/bureaucracy/right_arm
+/obj/item/organ/cyberimp/arm/bureaucracy/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/cargo/left_arm
+/obj/item/organ/cyberimp/arm/cargo/left_arm
 	zone = BODY_ZONE_L_ARM
 	slot = ORGAN_SLOT_LEFT_ARM_AUG
 
-/obj/item/organ/internal/cyberimp/arm/cargo/right_arm
+/obj/item/organ/cyberimp/arm/cargo/right_arm
 	zone = BODY_ZONE_R_ARM
 	slot = ORGAN_SLOT_RIGHT_ARM_AUG
diff --git a/modular_nova/modules/synths/code/bodyparts/brain.dm b/modular_nova/modules/synths/code/bodyparts/brain.dm
index 953b2bad433..f0f7a8de28f 100644
--- a/modular_nova/modules/synths/code/bodyparts/brain.dm
+++ b/modular_nova/modules/synths/code/bodyparts/brain.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/brain/synth
+/obj/item/organ/brain/synth
 	name = "compact positronic brain"
 	slot = ORGAN_SLOT_BRAIN
 	zone = BODY_ZONE_CHEST
@@ -11,7 +11,7 @@
 	var/last_message_time = 0
 	organ_traits = list(TRAIT_SILICON_EMOTES_ALLOWED)
 
-/obj/item/organ/internal/brain/synth/mob_insert(mob/living/carbon/brain_owner, special, movement_flags)
+/obj/item/organ/brain/synth/mob_insert(mob/living/carbon/brain_owner, special, movement_flags)
 	. = ..()
 
 	if(brain_owner.stat != DEAD || !ishuman(brain_owner))
@@ -21,7 +21,7 @@
 	if(HAS_TRAIT(human_brain_owner, TRAIT_REVIVES_BY_HEALING) && human_brain_owner.health > SYNTH_BRAIN_WAKE_THRESHOLD)
 		human_brain_owner.revive(FALSE)
 
-/obj/item/organ/internal/brain/synth/emp_act(severity) // EMP act against the posi, keep the cap far below the organ health
+/obj/item/organ/brain/synth/emp_act(severity) // EMP act against the posi, keep the cap far below the organ health
 	. = ..()
 
 	if(!owner || . & EMP_PROTECT_SELF)
@@ -38,7 +38,7 @@
 			to_chat(owner, span_warning("Alert: Electromagnetic damage taken in central processing unit. Error Code: 401-YT"))
 			apply_organ_damage(SYNTH_ORGAN_LIGHT_EMP_DAMAGE, SYNTH_EMP_BRAIN_DAMAGE_MAXIMUM, required_organ_flag = ORGAN_ROBOTIC)
 
-/obj/item/organ/internal/brain/synth/apply_organ_damage(damage_amount, maximum, required_organ_flag)
+/obj/item/organ/brain/synth/apply_organ_damage(damage_amount, maximum, required_organ_flag)
 	. = ..()
 
 	if(owner && damage > 0 && (world.time - last_message_time) > SYNTH_BRAIN_DAMAGE_MESSAGE_INTERVAL)
@@ -51,7 +51,7 @@
 		if(damage > BRAIN_DAMAGE_MILD)
 			to_chat(owner, span_warning("Alert: Minor corruption in central processing unit. Error Code: 001-HP"))
 
-/obj/item/organ/internal/brain/synth/circuit
+/obj/item/organ/brain/synth/circuit
 	name = "compact AI circuit"
 	desc = "A compact and extremely complex circuit, perfectly dimensioned to fit in the same slot as a synthetic-compatible positronic brain. It is usually slotted into the chest of synthetic crewmembers."
 	icon = 'modular_nova/master_files/icons/obj/alt_silicon_brains.dmi'
@@ -60,7 +60,7 @@
 	lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
 	righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
 
-/obj/item/organ/internal/brain/synth/mmi
+/obj/item/organ/brain/synth/mmi
 	name = "compact man-machine interface"
 	desc = "A compact man-machine interface, perfectly dimensioned to fit in the same slot as a synthetic-compatible positronic brain. Unfortunately, the brain seems to be permanently attached to the circuitry, and it seems relatively sensitive to its environment. It is usually slotted into the chest of synthetic crewmembers."
 	icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
diff --git a/modular_nova/modules/synths/code/bodyparts/ears.dm b/modular_nova/modules/synths/code/bodyparts/ears.dm
index cc5906bb7f8..a3a0213a067 100644
--- a/modular_nova/modules/synths/code/bodyparts/ears.dm
+++ b/modular_nova/modules/synths/code/bodyparts/ears.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/ears/synth
+/obj/item/organ/ears/synth
 	name = "auditory sensors"
 	icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
 	icon_state = "ears-ipc"
@@ -11,7 +11,7 @@
 	overrides_sprite_datum_organ_type = TRUE
 	bodypart_overlay = /datum/bodypart_overlay/mutant/ears
 
-/obj/item/organ/internal/ears/synth/emp_act(severity)
+/obj/item/organ/ears/synth/emp_act(severity)
 	. = ..()
 
 	if(!owner || . & EMP_PROTECT_SELF)
@@ -39,7 +39,7 @@
 		/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/ears/synth
+	build_path = /obj/item/organ/ears/synth
 	category = list(
 		RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
 	)
diff --git a/modular_nova/modules/synths/code/bodyparts/eyes.dm b/modular_nova/modules/synths/code/bodyparts/eyes.dm
index 80f54876b7e..aa72a25c46e 100644
--- a/modular_nova/modules/synths/code/bodyparts/eyes.dm
+++ b/modular_nova/modules/synths/code/bodyparts/eyes.dm
@@ -1,11 +1,11 @@
-/obj/item/organ/internal/eyes/synth
+/obj/item/organ/eyes/synth
 	name = "optical sensors"
 	icon_state = "cybernetic_eyeballs"
 	desc = "A very basic set of optical sensors with no extra vision modes or functions."
 	maxHealth = 1 * STANDARD_ORGAN_THRESHOLD
 	organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
 
-/obj/item/organ/internal/eyes/synth/emp_act(severity)
+/obj/item/organ/eyes/synth/emp_act(severity)
 	. = ..()
 
 	if(!owner || . & EMP_PROTECT_SELF)
@@ -29,7 +29,7 @@
 		/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/eyes/synth
+	build_path = /obj/item/organ/eyes/synth
 	category = list(
 		RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
 	)
diff --git a/modular_nova/modules/synths/code/bodyparts/heart.dm b/modular_nova/modules/synths/code/bodyparts/heart.dm
index a8f8f46b4e4..b23dc1a4967 100644
--- a/modular_nova/modules/synths/code/bodyparts/heart.dm
+++ b/modular_nova/modules/synths/code/bodyparts/heart.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/heart/synth
+/obj/item/organ/heart/synth
 	name = "hydraulic pump engine"
 	desc = "An electronic device that handles the hydraulic pumps, powering one's robotic limbs. Without this, synthetics are unable to move."
 	organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
@@ -10,7 +10,7 @@
 	slot = ORGAN_SLOT_HEART
 	var/last_message_time = 0
 
-/obj/item/organ/internal/heart/synth/emp_act(severity)
+/obj/item/organ/heart/synth/emp_act(severity)
 	. = ..()
 
 	if(!owner || . & EMP_PROTECT_SELF)
@@ -37,7 +37,7 @@
 		/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/heart/synth
+	build_path = /obj/item/organ/heart/synth
 	category = list(
 		RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
 	)
diff --git a/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm b/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm
index cb20bb9737c..d6dd1f08c49 100644
--- a/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm
+++ b/modular_nova/modules/synths/code/bodyparts/internal_computer/brain.dm
@@ -1,17 +1,17 @@
-/obj/item/organ/internal/brain/synth
+/obj/item/organ/brain/synth
 	var/obj/item/modular_computer/pda/synth/internal_computer
 	actions_types = list(/datum/action/item_action/synth/open_internal_computer)
 
-/obj/item/organ/internal/brain/synth/Initialize(mapload)
+/obj/item/organ/brain/synth/Initialize(mapload)
 	. = ..()
 	internal_computer = new(src)
 	ADD_TRAIT(src, TRAIT_SILICON_EMOTES_ALLOWED, INNATE_TRAIT)
 
-/obj/item/organ/internal/brain/synth/Destroy()
+/obj/item/organ/brain/synth/Destroy()
 	QDEL_NULL(internal_computer)
 	return ..()
 
-/obj/item/organ/internal/brain/synth/on_mob_insert(mob/living/carbon/human/brain_owner, special, movement_flags)
+/obj/item/organ/brain/synth/on_mob_insert(mob/living/carbon/human/brain_owner, special, movement_flags)
 	. = ..()
 	if(!istype(brain_owner))
 		return
@@ -19,7 +19,7 @@
 	if(internal_computer && brain_owner.wear_id)
 		internal_computer.handle_id_slot(brain_owner, brain_owner.wear_id)
 
-/obj/item/organ/internal/brain/synth/on_mob_remove(mob/living/carbon/human/brain_owner, special)
+/obj/item/organ/brain/synth/on_mob_remove(mob/living/carbon/human/brain_owner, special)
 	. = ..()
 	if(!istype(brain_owner))
 		return
@@ -28,7 +28,7 @@
 		internal_computer.handle_id_slot(brain_owner)
 		internal_computer.clear_id_slot_signals(brain_owner.wear_id)
 
-/obj/item/organ/internal/brain/synth/proc/on_equip_signal(datum/source, obj/item/item, slot)
+/obj/item/organ/brain/synth/proc/on_equip_signal(datum/source, obj/item/item, slot)
 	SIGNAL_HANDLER
 	if(isnull(internal_computer))
 		return
diff --git a/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm b/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm
index 2e0bdd6385a..70d8e34600c 100644
--- a/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm
+++ b/modular_nova/modules/synths/code/bodyparts/internal_computer/internal_computer.dm
@@ -15,7 +15,7 @@
 	. = ..()
 
 	// prevent these from being created outside of synth brains
-	if(!istype(loc, /obj/item/organ/internal/brain/synth))
+	if(!istype(loc, /obj/item/organ/brain/synth))
 		return INITIALIZE_HINT_QDEL
 
 /obj/item/modular_computer/pda/synth/check_power_override()
@@ -28,14 +28,14 @@
 
 /datum/action/item_action/synth/open_internal_computer/Trigger(trigger_flags)
 	. = ..()
-	var/obj/item/organ/internal/brain/synth/targetmachine = target
+	var/obj/item/organ/brain/synth/targetmachine = target
 	targetmachine.internal_computer.interact(owner)
 
 /obj/item/modular_computer/pda/synth/ui_state(mob/user)
 	return GLOB.default_state
 
 /obj/item/modular_computer/pda/synth/ui_status(mob/user)
-	var/obj/item/organ/internal/brain/synth/brain_loc = loc
+	var/obj/item/organ/brain/synth/brain_loc = loc
 	if(!istype(brain_loc))
 		return UI_CLOSE
 
@@ -49,7 +49,7 @@
 
 /// Id card arg is optional. Leaving it null causes the id to become unpaired from the synth computer
 /obj/item/modular_computer/pda/synth/proc/update_id_slot(obj/item/card/id/id_card)
-	var/obj/item/organ/internal/brain/synth/brain_loc = loc
+	var/obj/item/organ/brain/synth/brain_loc = loc
 	if(!istype(brain_loc))
 		return
 	if(isnull(brain_loc.internal_computer))
@@ -144,7 +144,7 @@
 	if(!istype(targetmachine))
 		return ..()
 
-	var/obj/item/organ/internal/brain/synth/robotbrain = targetmachine.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/synth/robotbrain = targetmachine.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(istype(robotbrain))
 		if(user.zone_selected == BODY_ZONE_PRECISE_EYES)
 			balloon_alert(user, "Establishing SSH login with persocom...")
@@ -157,7 +157,7 @@
 
 /obj/item/modular_computer/pda/synth/get_header_data()
 	var/list/data = ..()
-	var/obj/item/organ/internal/brain/synth/brain_loc = loc
+	var/obj/item/organ/brain/synth/brain_loc = loc
 	// Battery level is now according to the synth charge
 	if(istype(brain_loc))
 		var/charge_level = (brain_loc.owner.nutrition / NUTRITION_LEVEL_FULL) * 100
diff --git a/modular_nova/modules/synths/code/bodyparts/limbs.dm b/modular_nova/modules/synths/code/bodyparts/limbs.dm
index c2d826e3e64..4fe4120fa8d 100644
--- a/modular_nova/modules/synths/code/bodyparts/limbs.dm
+++ b/modular_nova/modules/synths/code/bodyparts/limbs.dm
@@ -112,7 +112,7 @@
 	bodypart_flags = BODYPART_UNHUSKABLE
 
 	wing_types = list(
-		/obj/item/organ/external/wings/functional/robotic,
+		/obj/item/organ/wings/functional/robotic,
 	)
 
 /datum/design/synth_chest
diff --git a/modular_nova/modules/synths/code/bodyparts/liver.dm b/modular_nova/modules/synths/code/bodyparts/liver.dm
index 9c1fe7382a0..b6713adfa98 100644
--- a/modular_nova/modules/synths/code/bodyparts/liver.dm
+++ b/modular_nova/modules/synths/code/bodyparts/liver.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/liver/synth
+/obj/item/organ/liver/synth
 	name = "reagent processing unit"
 	desc = "An electronic device that processes the beneficial chemicals for the synthetic user."
 	icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
@@ -9,7 +9,7 @@
 	maxHealth = 1 * STANDARD_ORGAN_THRESHOLD
 	organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
 
-/obj/item/organ/internal/liver/synth/emp_act(severity)
+/obj/item/organ/liver/synth/emp_act(severity)
 	. = ..()
 
 	if(!owner || . & EMP_PROTECT_SELF)
@@ -37,7 +37,7 @@
 		/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/liver/synth
+	build_path = /obj/item/organ/liver/synth
 	category = list(
 		RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
 	)
diff --git a/modular_nova/modules/synths/code/bodyparts/lungs.dm b/modular_nova/modules/synths/code/bodyparts/lungs.dm
index 1b5ce199c01..556e0388ed8 100644
--- a/modular_nova/modules/synths/code/bodyparts/lungs.dm
+++ b/modular_nova/modules/synths/code/bodyparts/lungs.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/lungs/synth
+/obj/item/organ/lungs/synth
 	name = "heatsink"
 	desc = "A device that transfers generated heat to a fluid medium to cool it down. Required to keep your synthetics cool-headed. Its shape resembles lungs." //Purposefully left the 'fluid medium' ambigious for interpretation of the character, whether it be air or fluid cooling
 	icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
@@ -14,7 +14,7 @@
 	maxHealth = 1.5 * STANDARD_ORGAN_THRESHOLD
 	organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
 
-/obj/item/organ/internal/lungs/synth/emp_act(severity)
+/obj/item/organ/lungs/synth/emp_act(severity)
 	. = ..()
 
 	if(!owner || . & EMP_PROTECT_SELF)
@@ -44,7 +44,7 @@
 		/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/lungs/synth
+	build_path = /obj/item/organ/lungs/synth
 	category = list(
 		RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
 	)
diff --git a/modular_nova/modules/synths/code/bodyparts/power_cord.dm b/modular_nova/modules/synths/code/bodyparts/power_cord.dm
index 58a55faf9a8..d0b97c94816 100644
--- a/modular_nova/modules/synths/code/bodyparts/power_cord.dm
+++ b/modular_nova/modules/synths/code/bodyparts/power_cord.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/cyberimp/arm/power_cord
+/obj/item/organ/cyberimp/arm/power_cord
 	name = "charging implant"
 	desc = "An internal power cord. Useful if you run on elecricity. Not so much otherwise."
 	items_to_create = list(/obj/item/synth_powercord)
@@ -46,7 +46,7 @@
 	var/nutrition_level_joules = user.nutrition * SYNTH_JOULES_PER_NUTRITION
 	user.changeNext_move(CLICK_CD_MELEE)
 
-	var/obj/item/organ/internal/stomach/synth/synth_cell = user.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/synth/synth_cell = user.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(QDELETED(synth_cell) || !istype(synth_cell))
 		to_chat(user, span_warning("You plug into [target], but nothing happens! It seems you don't have an internal cell to charge."))
 		return
diff --git a/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm b/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm
index 53092375080..409680e2c96 100644
--- a/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm
+++ b/modular_nova/modules/synths/code/bodyparts/silicon_alt_brains.dm
@@ -24,13 +24,13 @@
 /mob/living/proc/prefs_get_brain_to_use(value, is_cyborg = FALSE)
 	switch(value)
 		if(ORGAN_PREF_POSI_BRAIN)
-			return is_cyborg ? /obj/item/mmi/posibrain : /obj/item/organ/internal/brain/synth
+			return is_cyborg ? /obj/item/mmi/posibrain : /obj/item/organ/brain/synth
 
 		if(ORGAN_PREF_MMI_BRAIN)
-			return is_cyborg ? /obj/item/mmi : /obj/item/organ/internal/brain/synth/mmi
+			return is_cyborg ? /obj/item/mmi : /obj/item/organ/brain/synth/mmi
 
 		if(ORGAN_PREF_CIRCUIT_BRAIN)
-			return is_cyborg ? /obj/item/mmi/posibrain/circuit : /obj/item/organ/internal/brain/synth/circuit
+			return is_cyborg ? /obj/item/mmi/posibrain/circuit : /obj/item/organ/brain/synth/circuit
 
 /mob/living/silicon/robot/Initialize(mapload)
 	. = ..()
@@ -76,7 +76,7 @@
 	new_mmi = new new_mmi(src)
 
 	// Probably shitcode, but silicon code is spaghetti as fuck.
-	new_mmi.brain = new /obj/item/organ/internal/brain(new_mmi)
+	new_mmi.brain = new /obj/item/organ/brain(new_mmi)
 	new_mmi.brain.organ_flags |= ORGAN_FROZEN
 	new_mmi.brain.name = "[real_name]'s brain"
 	new_mmi.name = "[initial(new_mmi.name)]: [real_name]"
diff --git a/modular_nova/modules/synths/code/bodyparts/stomach.dm b/modular_nova/modules/synths/code/bodyparts/stomach.dm
index b297662d9f0..dc6a5168b03 100644
--- a/modular_nova/modules/synths/code/bodyparts/stomach.dm
+++ b/modular_nova/modules/synths/code/bodyparts/stomach.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/stomach/synth
+/obj/item/organ/stomach/synth
 	name = "synthetic bio-reactor"
 	icon = 'modular_nova/master_files/icons/obj/surgery.dmi'
 	icon_state = "stomach-ipc"
@@ -11,7 +11,7 @@
 	desc = "A specialised mini reactor, for synthetic use only. Has a low-power mode to ensure baseline functions. Without this, synthetics are unable to stay powered."
 	organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
 
-/obj/item/organ/internal/stomach/synth/emp_act(severity)
+/obj/item/organ/stomach/synth/emp_act(severity)
 	. = ..()
 
 	if(!owner || . & EMP_PROTECT_SELF)
@@ -41,22 +41,22 @@
 		/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/stomach/synth
+	build_path = /obj/item/organ/stomach/synth
 	category = list(
 		RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
 	)
 	departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
 
-/obj/item/organ/internal/stomach/synth/mob_insert(mob/living/carbon/receiver, special, movement_flags)
+/obj/item/organ/stomach/synth/mob_insert(mob/living/carbon/receiver, special, movement_flags)
 	. = ..()
 	RegisterSignal(receiver, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(on_borg_charge))
 
-/obj/item/organ/internal/stomach/synth/mob_remove(mob/living/carbon/stomach_owner, special)
+/obj/item/organ/stomach/synth/mob_remove(mob/living/carbon/stomach_owner, special)
 	. = ..()
 	UnregisterSignal(stomach_owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT)
 
 ///Handles charging the synth from borg chargers
-/obj/item/organ/internal/stomach/synth/proc/on_borg_charge(datum/source, datum/callback/charge_cell, seconds_per_tick)
+/obj/item/organ/stomach/synth/proc/on_borg_charge(datum/source, datum/callback/charge_cell, seconds_per_tick)
 	SIGNAL_HANDLER
 
 	if(owner.nutrition >= NUTRITION_LEVEL_FULL)
diff --git a/modular_nova/modules/synths/code/bodyparts/tongue.dm b/modular_nova/modules/synths/code/bodyparts/tongue.dm
index cc35fcf41b4..44ba4f11d9a 100644
--- a/modular_nova/modules/synths/code/bodyparts/tongue.dm
+++ b/modular_nova/modules/synths/code/bodyparts/tongue.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/internal/tongue/synth
+/obj/item/organ/tongue/synth
 	name = "synthetic voicebox"
 	desc = "A fully-functional synthetic tongue, encased in soft silicone. Features include high-resolution vocals and taste receptors."
 	icon = 'modular_nova/modules/organs/icons/cyber_tongue.dmi'
@@ -15,10 +15,10 @@
 	slot = ORGAN_SLOT_TONGUE
 	organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES
 
-/obj/item/organ/internal/tongue/synth/can_speak_language(language)
+/obj/item/organ/tongue/synth/can_speak_language(language)
 	return TRUE
 
-/obj/item/organ/internal/tongue/synth/handle_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/synth/handle_speech(datum/source, list/speech_args)
 	speech_args[SPEECH_SPANS] |= SPAN_ROBOT
 
 /datum/design/synth_tongue
@@ -31,7 +31,7 @@
 		/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT,
 		/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
 	)
-	build_path = /obj/item/organ/internal/tongue/synth
+	build_path = /obj/item/organ/tongue/synth
 	category = list(
 		RND_SUBCATEGORY_MECHFAB_ANDROID + RND_SUBCATEGORY_MECHFAB_ANDROID_ORGANS,
 	)
diff --git a/modular_nova/modules/synths/code/defib.dm b/modular_nova/modules/synths/code/defib.dm
index ecb6e2e952e..bd797d92f10 100644
--- a/modular_nova/modules/synths/code/defib.dm
+++ b/modular_nova/modules/synths/code/defib.dm
@@ -2,10 +2,10 @@
  * Global timer proc used in defib.dm. Removes the temporary trauma caused by being defibbed as a synth.
  *
  * Args:
- * * obj/item/organ/internal/brain/synth_brain: The brain with the trauma on it. Non-nullable.
+ * * obj/item/organ/brain/synth_brain: The brain with the trauma on it. Non-nullable.
  * * datum/brain_trauma/trauma: The trauma itself. Non-nullable.
  */
-/proc/remove_synth_defib_trauma(obj/item/organ/internal/brain/synth_brain, datum/brain_trauma/trauma)
+/proc/remove_synth_defib_trauma(obj/item/organ/brain/synth_brain, datum/brain_trauma/trauma)
 	if (QDELETED(synth_brain) || QDELETED(trauma))
 		return
 
diff --git a/modular_nova/modules/synths/code/species/synthetic.dm b/modular_nova/modules/synths/code/species/synthetic.dm
index 4c89c80bc1b..c5ef2264329 100644
--- a/modular_nova/modules/synths/code/species/synthetic.dm
+++ b/modular_nova/modules/synths/code/species/synthetic.dm
@@ -25,15 +25,15 @@
 	payday_modifier = 1.0 // Matches the rest of the pay penalties the non-human crew have
 	death_sound = 'modular_nova/master_files/sound/effects/hacked.ogg'
 	species_language_holder = /datum/language_holder/machine
-	mutant_organs = list(/obj/item/organ/internal/cyberimp/arm/power_cord/left_arm)
-	mutantbrain = /obj/item/organ/internal/brain/synth
-	mutantstomach = /obj/item/organ/internal/stomach/synth
-	mutantears = /obj/item/organ/internal/ears/synth
-	mutanttongue = /obj/item/organ/internal/tongue/synth
-	mutanteyes = /obj/item/organ/internal/eyes/synth
-	mutantlungs = /obj/item/organ/internal/lungs/synth
-	mutantheart = /obj/item/organ/internal/heart/synth
-	mutantliver = /obj/item/organ/internal/liver/synth
+	mutant_organs = list(/obj/item/organ/cyberimp/arm/power_cord/left_arm)
+	mutantbrain = /obj/item/organ/brain/synth
+	mutantstomach = /obj/item/organ/stomach/synth
+	mutantears = /obj/item/organ/ears/synth
+	mutanttongue = /obj/item/organ/tongue/synth
+	mutanteyes = /obj/item/organ/eyes/synth
+	mutantlungs = /obj/item/organ/lungs/synth
+	mutantheart = /obj/item/organ/heart/synth
+	mutantliver = /obj/item/organ/liver/synth
 	mutantappendix = null
 	exotic_blood = /datum/reagent/fuel/oil
 	bodypart_overrides = list(
@@ -95,7 +95,7 @@
 	sing_action.Grant(transformer)
 
 	var/screen_mutant_bodypart = transformer.dna.mutant_bodyparts[MUTANT_SYNTH_SCREEN]
-	var/obj/item/organ/internal/eyes/eyes = transformer.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = transformer.get_organ_slot(ORGAN_SLOT_EYES)
 
 	if(!screen && screen_mutant_bodypart && screen_mutant_bodypart[MUTANT_INDEX_NAME] && screen_mutant_bodypart[MUTANT_INDEX_NAME] != "None")
 
@@ -151,7 +151,7 @@
 
 	UnregisterSignal(human, COMSIG_ATOM_EMAG_ACT)
 
-	var/obj/item/organ/internal/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES)
+	var/obj/item/organ/eyes/eyes = human.get_organ_slot(ORGAN_SLOT_EYES)
 
 	if(eyes)
 		eyes.eye_icon_state = initial(eyes.eye_icon_state)
@@ -164,11 +164,11 @@
 	if(isnull(human_holder.loc))
 		return // preview characters don't need funny organs, prevents a runtime
 
-	var/obj/item/organ/internal/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/old_stomach = human_holder.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(old_stomach.is_oversized) // don't override augments that are already oversized
 		return
 
-	var/obj/item/organ/internal/stomach/synth/oversized/new_synth_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE reactor! RIP AND TEAR YOUR HUGE reactor!
+	var/obj/item/organ/stomach/synth/oversized/new_synth_stomach = new //YOU LOOK HUGE, THAT MUST MEAN YOU HAVE HUGE reactor! RIP AND TEAR YOUR HUGE reactor!
 
 	oversized_quirk.old_organs += list(old_stomach)
 
@@ -211,7 +211,7 @@
 		return
 
 	// This is awful. Please find a better way to do this.
-	var/obj/item/organ/external/synth_screen/screen_organ = transformer.get_organ_slot(ORGAN_SLOT_EXTERNAL_SYNTH_SCREEN)
+	var/obj/item/organ/synth_screen/screen_organ = transformer.get_organ_slot(ORGAN_SLOT_EXTERNAL_SYNTH_SCREEN)
 	if(!istype(screen_organ))
 		return
 
@@ -220,7 +220,7 @@
 	transformer.update_body()
 
 /datum/species/synthetic/get_types_to_preload()
-	return ..() - typesof(/obj/item/organ/internal/cyberimp/arm/power_cord) // Don't cache things that lead to hard deletions.
+	return ..() - typesof(/obj/item/organ/cyberimp/arm/power_cord) // Don't cache things that lead to hard deletions.
 
 /datum/species/synthetic/create_pref_unique_perks()
 	var/list/perk_descriptions = list()
diff --git a/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm
index 94ecc2907d0..07b1161bf0f 100644
--- a/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_brain_surgery.dm
@@ -16,7 +16,7 @@
 
 /datum/surgery/robot_brain_surgery/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
 	. = ..()
-	var/obj/item/organ/internal/brain/synth/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+	var/obj/item/organ/brain/synth/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
 	if(!istype(brain) && !issynthetic(target))
 		return FALSE
 	else
diff --git a/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm
index 21676fddfb4..64e2d96a3bc 100644
--- a/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_heart_surgery.dm
@@ -17,7 +17,7 @@
 	desc = "A mechanical surgery procedure designed to repair an androids internal hydraulic pump."
 
 /datum/surgery/hydraulic_maintenance/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/heart/hydraulic_pump = target.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/hydraulic_pump = target.get_organ_slot(ORGAN_SLOT_HEART)
 	if(isnull(hydraulic_pump) || !issynthetic(target) || hydraulic_pump.damage < 10)
 		return FALSE
 	return ..()
@@ -45,7 +45,7 @@
 
 /datum/surgery_step/hydraulic/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
 	var/mob/living/carbon/human/patient = target
-	var/obj/item/organ/internal/heart/hydraulic = patient.get_organ_slot(ORGAN_SLOT_HEART)
+	var/obj/item/organ/heart/hydraulic = patient.get_organ_slot(ORGAN_SLOT_HEART)
 	patient.setOrganLoss(ORGAN_SLOT_HEART, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
 	if(hydraulic.organ_flags & ORGAN_EMP)
 		hydraulic.organ_flags &= ~ORGAN_EMP
diff --git a/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm
index 685d36580ad..7b74de90793 100644
--- a/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_liver_surgery.dm
@@ -17,7 +17,7 @@
 	desc = "A mechanical list of actions to reset the reagent processor and purge built up minerals."
 
 /datum/surgery/reagent_pump/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
 	if(isnull(reagent_processor) || !issynthetic(target) || reagent_processor.damage < 10)
 		return FALSE
 	return ..()
@@ -46,7 +46,7 @@
 
 /datum/surgery_step/reagent_pump/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
 	var/mob/living/carbon/human/patient = target
-	var/obj/item/organ/internal/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
+	var/obj/item/organ/liver/reagent_processor = target.get_organ_slot(ORGAN_SLOT_LIVER)
 	patient.setOrganLoss(ORGAN_SLOT_LIVER, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
 	if(reagent_processor.organ_flags & ORGAN_EMP)
 		reagent_processor.organ_flags &= ~ORGAN_EMP
diff --git a/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm
index 3213cc954b3..684fa7cd560 100644
--- a/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_lung_surgery.dm
@@ -18,7 +18,7 @@
 	desc = "A mechanical surgery procedure designed to repair an androids internal heatsink."
 
 /datum/surgery/heatsink/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
-	var/obj/item/organ/internal/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS)
+	var/obj/item/organ/lungs/target_lungs = target.get_organ_slot(ORGAN_SLOT_LUNGS)
 	if(isnull(target_lungs) || !issynthetic(target) || target_lungs.damage < 10 )
 		return FALSE
 	return ..()
@@ -46,7 +46,7 @@
 /datum/surgery_step/heatsink/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
 	if(ishuman(target))
 		var/mob/living/carbon/human/patient = target
-		var/obj/item/organ/internal/lungs/heatsink = patient.get_organ_slot(ORGAN_SLOT_LUNGS)
+		var/obj/item/organ/lungs/heatsink = patient.get_organ_slot(ORGAN_SLOT_LUNGS)
 		patient.setOrganLoss(ORGAN_SLOT_LUNGS, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
 		if(heatsink.organ_flags & ORGAN_EMP)
 			heatsink.organ_flags &= ~ORGAN_EMP
diff --git a/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm b/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm
index 823eb48203d..2c8e05d2192 100644
--- a/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm
+++ b/modular_nova/modules/synths/code/surgery/robot_stomach_surgery.dm
@@ -17,7 +17,7 @@
 	desc = "A mechanical surgery procedure designed to repair an androids internal bioreactor."
 
 /datum/surgery/bioreactor/can_start(mob/user, mob/living/carbon/target)
-	var/obj/item/organ/internal/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
 	if(isnull(bioreactor) || !issynthetic(target) || bioreactor.damage < 10)
 		return FALSE
 	return ..()
@@ -46,7 +46,7 @@
 
 /datum/surgery_step/bioreactor/repair/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
 	var/mob/living/carbon/human/patient = target
-	var/obj/item/organ/internal/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
+	var/obj/item/organ/stomach/bioreactor = target.get_organ_slot(ORGAN_SLOT_STOMACH)
 	patient.setOrganLoss(ORGAN_SLOT_STOMACH, 0) // adjustOrganLoss didnt work here without runtimes spamming, setting to 0 as synths have no natural organ decay/regeneration
 	if(bioreactor.organ_flags & ORGAN_EMP)
 		bioreactor.organ_flags &= ~ORGAN_EMP
diff --git a/modular_nova/modules/taur_mechanics/code/constrict.dm b/modular_nova/modules/taur_mechanics/code/constrict.dm
index 952733dd05e..10b8c415be6 100644
--- a/modular_nova/modules/taur_mechanics/code/constrict.dm
+++ b/modular_nova/modules/taur_mechanics/code/constrict.dm
@@ -508,13 +508,13 @@
 		UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_GRAB, COMSIG_LIVING_TRY_PULL, COMSIG_LIVING_SET_BODY_POSITION, COMSIG_ATOM_POST_DIR_CHANGE))
 
 	if (owner)
-		var/obj/item/organ/external/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+		var/obj/item/organ/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
 		taur_body.hide_self = FALSE
 
 	owner = new_owner
 
 	if (owner)
-		var/obj/item/organ/external/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+		var/obj/item/organ/taur_body/taur_body = owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
 		taur_body.hide_self = TRUE
 
 	RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(owner_moved))
diff --git a/modular_nova/modules/taur_mechanics/code/preferences.dm b/modular_nova/modules/taur_mechanics/code/preferences.dm
index 35e9eba4a52..d050a0c5b60 100644
--- a/modular_nova/modules/taur_mechanics/code/preferences.dm
+++ b/modular_nova/modules/taur_mechanics/code/preferences.dm
@@ -15,6 +15,6 @@
 /datum/preference/toggle/naga_soles/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences)
 	if (value)
 		return
-	var/obj/item/organ/external/taur_body/serpentine/snake_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
+	var/obj/item/organ/taur_body/serpentine/snake_body = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAUR)
 	if (istype(snake_body))
 		snake_body.add_hardened_soles(target)
diff --git a/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm b/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm
index a17d0b338bf..638727bf7e1 100644
--- a/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm
+++ b/modular_nova/modules/taur_mechanics/code/serpentine_taur.dm
@@ -1,15 +1,15 @@
-/obj/item/organ/external/taur_body/serpentine
+/obj/item/organ/taur_body/serpentine
 	/// The constrict ability we have given our owner. Nullable, if we have no owner.
 	var/datum/action/innate/constrict/constrict_ability
 
 	/// Did our owner have their feet blocked before we ran on_mob_insert? Used for determining if we should unblock their feet slots on removal.
 	var/owner_blocked_feet_before_insert
 
-/obj/item/organ/external/taur_body/serpentine/Destroy()
+/obj/item/organ/taur_body/serpentine/Destroy()
 	QDEL_NULL(constrict_ability) // handled in remove, but lets be safe
 	return ..()
 
-/obj/item/organ/external/taur_body/serpentine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/taur_body/serpentine/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 
 	constrict_ability = new /datum/action/innate/constrict(organ_owner)
@@ -37,10 +37,10 @@
 		add_hardened_soles(organ_owner)
 
 /// Adds TRAIT_HARD_SOLES to our owner.
-/obj/item/organ/external/taur_body/serpentine/proc/add_hardened_soles(mob/living/carbon/organ_owner = owner)
+/obj/item/organ/taur_body/serpentine/proc/add_hardened_soles(mob/living/carbon/organ_owner = owner)
 	ADD_TRAIT(organ_owner, TRAIT_HARD_SOLES, ORGAN_TRAIT)
 
-/obj/item/organ/external/taur_body/serpentine/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
+/obj/item/organ/taur_body/serpentine/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
 	. = ..()
 
 	QDEL_NULL(constrict_ability)
diff --git a/modular_nova/modules/teshari/code/_teshari.dm b/modular_nova/modules/teshari/code/_teshari.dm
index 33268063ce4..ee58342b13b 100644
--- a/modular_nova/modules/teshari/code/_teshari.dm
+++ b/modular_nova/modules/teshari/code/_teshari.dm
@@ -15,7 +15,7 @@
 	digitigrade_customization = DIGITIGRADE_NEVER
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
 	payday_modifier = 1.0
-	mutanttongue = /obj/item/organ/internal/tongue/teshari
+	mutanttongue = /obj/item/organ/tongue/teshari
 	custom_worn_icons = list(
 		LOADOUT_ITEM_HEAD = TESHARI_HEAD_ICON,
 		LOADOUT_ITEM_MASK = TESHARI_MASK_ICON,
@@ -36,7 +36,7 @@
 	bodytemp_heat_damage_limit = (BODYTEMP_HEAT_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET)
 	bodytemp_cold_damage_limit = (BODYTEMP_COLD_DAMAGE_LIMIT + TESHARI_TEMP_OFFSET)
 	species_language_holder = /datum/language_holder/teshari
-	mutantears = /obj/item/organ/internal/ears/teshari
+	mutantears = /obj/item/organ/ears/teshari
 	body_size_restricted = TRUE
 	bodypart_overrides = list(
 		BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant/teshari,
@@ -54,7 +54,7 @@
 		"legs" = list("Normal Legs", FALSE),
 	)
 
-/obj/item/organ/internal/tongue/teshari
+/obj/item/organ/tongue/teshari
 	liked_foodtypes = MEAT | GORE | RAW
 	disliked_foodtypes = GROSS | GRAIN
 
diff --git a/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm b/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm
index bacf3a5ff39..11c4064e46f 100644
--- a/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm
+++ b/modular_nova/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm
@@ -3,7 +3,7 @@ GLOBAL_LIST_INIT(tier1_reward, list(
 	/obj/item/stack/sheet/sinew = 1,
 	/obj/item/stack/sheet/animalhide/goliath_hide = 1,
 	/obj/item/stack/sheet/bone = 1,
-	/obj/item/organ/internal/monster_core/regenerative_core/legion = 1,
+	/obj/item/organ/monster_core/regenerative_core/legion = 1,
 ))
 
 GLOBAL_LIST_INIT(tier2_reward, list(
@@ -96,7 +96,7 @@ GLOBAL_LIST_INIT(animal_reward, list(
 	/obj/item/stack/sheet/sinew = 1,
 	/obj/item/stack/sheet/animalhide/goliath_hide = 1,
 	/obj/item/stack/sheet/bone = 1,
-	/obj/item/organ/internal/monster_core/regenerative_core/legion = 1,
+	/obj/item/organ/monster_core/regenerative_core/legion = 1,
 ))
 
 GLOBAL_LIST_INIT(alien_reward, list(
diff --git a/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm b/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm
index 8afa84427f2..59379673fcb 100644
--- a/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm
+++ b/modular_nova/modules/xenoarchartifacts/obj/exosuit.dm
@@ -85,7 +85,7 @@
 		to_chat(carbon_mob, "<font color='red' size='7'>AAAAAAH</font>")
 		carbon_mob.SetSleeping(0)
 		carbon_mob.adjust_stutter(40 SECONDS)
-		var/obj/item/organ/internal/ears/ears = carbon_mob.get_organ_slot(ORGAN_SLOT_EARS)
+		var/obj/item/organ/ears/ears = carbon_mob.get_organ_slot(ORGAN_SLOT_EARS)
 		if(ears)
 			ears.adjustEarDamage(0, 30)
 		carbon_mob.Paralyze(6 SECONDS)
diff --git a/tff_modular/modules/autoaccent/code/autoaccent.dm b/tff_modular/modules/autoaccent/code/autoaccent.dm
index 87048a77423..239de67a25a 100644
--- a/tff_modular/modules/autoaccent/code/autoaccent.dm
+++ b/tff_modular/modules/autoaccent/code/autoaccent.dm
@@ -19,14 +19,14 @@
 		. += text
 	return jointext(., "")
 
-/obj/item/organ/internal/tongue/cat
+/obj/item/organ/tongue/cat
 	modifies_speech = TRUE
 	languages_native = list(/datum/language/nekomimetic, /datum/language/yangyu, /datum/language/primitive_catgirl) //IDK, Yangyu is native to Felinids? WHY?
 
 /proc/pick_cat_rawr(match)
 	return match[1] + text_mult(lowertext(match[1]), rand(1, 3))
 
-/obj/item/organ/internal/tongue/cat/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/cat/modify_speech(datum/source, list/speech_args)
 	var/message = speech_args[SPEECH_MESSAGE]
 	var/static/regex/cat_rawrs = new(@"[рРrR]+", "g")
 	if(message[1] != "*")
@@ -34,9 +34,9 @@
 	speech_args[SPEECH_MESSAGE] = message
 
 /datum/species/vulpkanin
-	mutanttongue = /obj/item/organ/internal/tongue/dog
+	mutanttongue = /obj/item/organ/tongue/dog
 
-/obj/item/organ/internal/tongue/dog
+/obj/item/organ/tongue/dog
 	modifies_speech = TRUE
 	languages_native = list(/datum/language/canilunzt)
 
@@ -44,7 +44,7 @@
 	return match[1] + text_mult(lowertext(match[1]), rand(0, 2))
 
 // Almost same as /obj/item/organ/internal/tongue/cat/modify_speech. Maybe there is way to uniform replaces for any tongue with maps.
-/obj/item/organ/internal/tongue/dog/modify_speech(datum/source, list/speech_args)
+/obj/item/organ/tongue/dog/modify_speech(datum/source, list/speech_args)
 	var/message = speech_args[SPEECH_MESSAGE]
 	var/static/regex/dog_rawrs = new(@"[рРrR]+", "g")
 	if(message[1] != "*")
diff --git a/tff_modular/modules/nabbers/code/_nabbers.dm b/tff_modular/modules/nabbers/code/_nabbers.dm
index a41e631eaac..f5d167c09c6 100644
--- a/tff_modular/modules/nabbers/code/_nabbers.dm
+++ b/tff_modular/modules/nabbers/code/_nabbers.dm
@@ -25,7 +25,7 @@
 	digitigrade_customization = DIGITIGRADE_NEVER
 	no_equip_flags = ITEM_SLOT_FEET | ITEM_SLOT_OCLOTHING | ITEM_SLOT_SUITSTORE | ITEM_SLOT_EYES | ITEM_SLOT_LEGCUFFED
 	inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
-	mutanttongue = /obj/item/organ/internal/tongue/nabber
+	mutanttongue = /obj/item/organ/tongue/nabber
 	always_customizable = TRUE
 	hair_alpha = 0
 	facial_hair_alpha = 0
@@ -33,12 +33,12 @@
 	changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
 	species_cookie = /obj/item/food/grown/cabbage
 	bodytemp_heat_damage_limit = (BODYTEMP_HEAT_DAMAGE_LIMIT - 10)
-	mutantbrain = /obj/item/organ/internal/brain/nabber
-	mutanteyes = /obj/item/organ/internal/eyes/nabber
-	mutantlungs = /obj/item/organ/internal/lungs/nabber
-	mutantheart = /obj/item/organ/internal/heart/nabber
-	mutantliver = /obj/item/organ/internal/liver/nabber
-	mutantears = /obj/item/organ/internal/ears/nabber
+	mutantbrain = /obj/item/organ/brain/nabber
+	mutanteyes = /obj/item/organ/eyes/nabber
+	mutantlungs = /obj/item/organ/lungs/nabber
+	mutantheart = /obj/item/organ/heart/nabber
+	mutantliver = /obj/item/organ/liver/nabber
+	mutantears = /obj/item/organ/ears/nabber
 	mutantappendix = null
 	bodypart_overrides = list(
 		BODY_ZONE_HEAD = /obj/item/bodypart/head/mutant/nabber,
diff --git a/tff_modular/modules/nabbers/code/abilites/nabber_welding_eyes.dm b/tff_modular/modules/nabbers/code/abilites/nabber_welding_eyes.dm
index 60a8dd241d3..22eb9a56764 100644
--- a/tff_modular/modules/nabbers/code/abilites/nabber_welding_eyes.dm
+++ b/tff_modular/modules/nabbers/code/abilites/nabber_welding_eyes.dm
@@ -2,7 +2,7 @@
 	name = "Toggle welding shield"
 	desc = "Toggle your eyes welding shield"
 
-	var/obj/item/organ/internal/eyes/nabber/eyes
+	var/obj/item/organ/eyes/nabber/eyes
 
 /datum/action/toggle_welding/Trigger(trigger_flags)
 	. = ..()
diff --git a/tff_modular/modules/nabbers/code/nabber_organs.dm b/tff_modular/modules/nabbers/code/nabber_organs.dm
index 083f1c56439..1ed4500cb08 100644
--- a/tff_modular/modules/nabbers/code/nabber_organs.dm
+++ b/tff_modular/modules/nabbers/code/nabber_organs.dm
@@ -8,7 +8,7 @@
 
 #define ORGGAN_ICON_NABBER 'tff_modular/modules/nabbers/icons/organs/nabber_organs.dmi'
 
-/obj/item/organ/internal/tongue/nabber
+/obj/item/organ/tongue/nabber
 	name = "nabber tongue"
 	liked_foodtypes = RAW | GORE | GRAIN
 	disliked_foodtypes = CLOTH | FRIED | TOXIC
@@ -18,26 +18,26 @@
 		/datum/language/nabber,
 	))
 
-/obj/item/organ/internal/tongue/nabber/get_possible_languages()
+/obj/item/organ/tongue/nabber/get_possible_languages()
 	RETURN_TYPE(/list)
 	return languages_possible_gas
 
-/obj/item/organ/internal/ears/nabber
+/obj/item/organ/ears/nabber
 	name = "nabber ears"
 	icon = ORGGAN_ICON_NABBER
 	icon_state = "ears"
 
-/obj/item/organ/internal/heart/nabber
+/obj/item/organ/heart/nabber
 	name = "nabber heart"
 	icon = ORGGAN_ICON_NABBER
 	icon_state = "heart"
 
-/obj/item/organ/internal/brain/nabber
+/obj/item/organ/brain/nabber
 	name = "nabber brain"
 	icon = ORGGAN_ICON_NABBER
 	icon_state = "brain"
 
-/obj/item/organ/internal/eyes/nabber
+/obj/item/organ/eyes/nabber
 	name = "nabber eyes"
 	desc = "Small orange orbs. With pair welding shield linses."
 	icon = ORGGAN_ICON_NABBER
@@ -46,7 +46,7 @@
 	var/datum/action/toggle_welding/shield
 	var/active = FALSE
 
-/obj/item/organ/internal/eyes/nabber/Insert(mob/living/carbon/eye_recipient, special, movement_flags)
+/obj/item/organ/eyes/nabber/Insert(mob/living/carbon/eye_recipient, special, movement_flags)
 	. = ..()
 	shield = new(eye_recipient)
 	shield.button_icon = ORGGAN_ICON_NABBER
@@ -54,7 +54,7 @@
 	shield.Grant(eye_recipient)
 	shield.eyes = src
 
-/obj/item/organ/internal/eyes/nabber/proc/toggle_shielding()
+/obj/item/organ/eyes/nabber/proc/toggle_shielding()
 	if(!owner)
 		return
 
@@ -73,13 +73,13 @@
 	owner.update_tint()
 	owner.balloon_alert(owner, "Welder eyelids open!")
 
-/obj/item/organ/internal/eyes/nabber/Remove(mob/living/carbon/eye_owner, special)
+/obj/item/organ/eyes/nabber/Remove(mob/living/carbon/eye_owner, special)
 	. = ..()
 	shield.Destroy()
 	active = FALSE
 	toggle_shielding()
 
-/obj/item/organ/internal/lungs/nabber
+/obj/item/organ/lungs/nabber
 	name = "nabber lungs"
 	icon = ORGGAN_ICON_NABBER
 	icon_state = "lungs"
@@ -103,7 +103,7 @@
 	heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3
 	heat_damage_type = BURN
 
-/obj/item/organ/internal/liver/nabber
+/obj/item/organ/liver/nabber
 	name = "nabber liver"
 	icon_state = "liver"
 	icon = ORGGAN_ICON_NABBER
diff --git a/tgstation.dme b/tgstation.dme
index def8c55eca7..14f3ecd3edc 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -5838,6 +5838,7 @@
 #include "code\modules\reagents\chemistry\items.dm"
 #include "code\modules\reagents\chemistry\reagents.dm"
 #include "code\modules\reagents\chemistry\recipes.dm"
+#include "code\modules\reagents\chemistry\taste.dm"
 #include "code\modules\reagents\chemistry\holder\holder.dm"
 #include "code\modules\reagents\chemistry\holder\mob_life.dm"
 #include "code\modules\reagents\chemistry\holder\properties.dm"
diff --git a/tgui/packages/tgui/interfaces/MODsuit.tsx b/tgui/packages/tgui/interfaces/MODsuit.tsx
index 8f45a323dc0..9f57de5c081 100644
--- a/tgui/packages/tgui/interfaces/MODsuit.tsx
+++ b/tgui/packages/tgui/interfaces/MODsuit.tsx
@@ -25,25 +25,29 @@ import { Window } from '../layouts';
 type MODsuitData = {
   // Static
   ui_theme: string;
-  control: string;
   complexity_max: number;
-  parts: PartData[];
   // Dynamic
   suit_status: SuitStatus;
   user_status: UserStatus;
   module_custom_status: ModuleCustomStatus;
   module_info: Module[];
+  control: string;
+  parts: PartData[];
 };
 
 type PartData = {
   slot: string;
   name: string;
+  deployed: BooleanLike;
+  ref: string;
 };
 
 type SuitStatus = {
   core_name: string;
-  cell_charge_current: number;
-  cell_charge_max: number;
+  charge_current: number;
+  charge_max: number;
+  chargebar_color: string;
+  chargebar_string: string;
   active: BooleanLike;
   open: BooleanLike;
   seconds_electrified: number;
@@ -53,8 +57,8 @@ type SuitStatus = {
   complexity: number;
   selected_module: string;
   ai_name: string;
-  has_pai: boolean;
-  is_ai: boolean;
+  has_pai: BooleanLike;
+  is_ai: BooleanLike;
   link_id: string;
   link_freq: string;
   link_call: string;
@@ -257,6 +261,20 @@ const ConfigurePinEntry = (props) => {
   );
 };
 
+// fuck u smartkar configs werent meant to be used as actions 🖕🖕🖕
+// and really u couldnt be bothered to make this and instead used
+// the pin entry? 🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕
+const ConfigureButtonEntry = (props) => {
+  const { name, value, module_ref } = props;
+  const { act } = useBackend();
+  return (
+    <Button
+      onClick={() => act('configure', { key: name, ref: module_ref })}
+      icon={value}
+    />
+  );
+};
+
 const ConfigureDataEntry = (props) => {
   const { name, display_name, type, value, values, module_ref } = props;
   const configureEntryTypes = {
@@ -264,6 +282,7 @@ const ConfigureDataEntry = (props) => {
     bool: <ConfigureBoolEntry {...props} />,
     color: <ConfigureColorEntry {...props} />,
     list: <ConfigureListEntry {...props} />,
+    button: <ConfigureButtonEntry {...props} />,
     pin: <ConfigurePinEntry {...props} />,
   };
   return (
@@ -347,9 +366,10 @@ const radiationLevels = (param) => {
 const SuitStatusSection = (props) => {
   const { act, data } = useBackend<MODsuitData>();
   const {
-    core_name,
-    cell_charge_current,
-    cell_charge_max,
+    charge_current,
+    charge_max,
+    chargebar_color,
+    chargebar_string,
     active,
     open,
     seconds_electrified,
@@ -368,9 +388,6 @@ const SuitStatusSection = (props) => {
     : active
       ? 'Active'
       : 'Inactive';
-  const charge_percent = Math.round(
-    (100 * cell_charge_current) / cell_charge_max,
-  );
 
   return (
     <Section
@@ -388,31 +405,13 @@ const SuitStatusSection = (props) => {
       <LabeledList>
         <LabeledList.Item label="Charge">
           <ProgressBar
-            value={cell_charge_current / cell_charge_max}
-            ranges={{
-              good: [0.6, Infinity],
-              average: [0.3, 0.6],
-              bad: [-Infinity, 0.3],
-            }}
+            value={charge_current / charge_max}
+            color={chargebar_color}
             style={{
               textShadow: '1px 1px 0 black',
             }}
           >
-            {!core_name
-              ? 'No Core Detected'
-              : cell_charge_max === 1
-                ? 'Power Cell Missing'
-                : cell_charge_current === 1e31
-                  ? 'Infinite'
-                  : `${formatSiUnit(
-                      cell_charge_current,
-                      0,
-                      'J',
-                    )} of ${formatSiUnit(
-                      cell_charge_max,
-                      0,
-                      'J',
-                    )} (${charge_percent}%)`}
+            {chargebar_string}
           </ProgressBar>
         </LabeledList.Item>
         <LabeledList.Item label="ID Lock">
@@ -483,14 +482,14 @@ const HardwareSection = (props) => {
   return (
     <Section title="Hardware" style={{ textTransform: 'capitalize' }}>
       <LabeledList>
-        <LabeledList.Item label="AI Assistant">
-          {ai_name || 'No AI Detected'}
-        </LabeledList.Item>
+        <LabeledList.Item label="Control Unit">{control}</LabeledList.Item>
         <LabeledList.Item label="Core">
           {core_name || 'No Core Detected'}
         </LabeledList.Item>
-        <LabeledList.Item label="Control Unit">{control}</LabeledList.Item>
         <ModParts />
+        <LabeledList.Item label="AI Assistant">
+          {ai_name || 'No AI Detected'}
+        </LabeledList.Item>
       </LabeledList>
     </Section>
   );
@@ -503,7 +502,18 @@ const ModParts = (props) => {
     <>
       {parts.map((part) => {
         return (
-          <LabeledList.Item key={part.slot} label={part.slot + ' Slot'}>
+          <LabeledList.Item
+            key={part.slot}
+            label={part.slot + ' Slot'}
+            buttons={
+              <Button
+                selected={part.deployed}
+                icon={part.deployed ? 'arrow-down' : 'arrow-up'}
+                content={part.deployed ? 'Retract' : 'Deploy'}
+                onClick={() => act('deploy', { ref: part.ref })}
+              />
+            }
+          >
             {part.name}
           </LabeledList.Item>
         );
diff --git a/tools/UpdatePaths/Scripts/87434_internal_external_organ_death.txt b/tools/UpdatePaths/Scripts/87434_internal_external_organ_death.txt
new file mode 100644
index 00000000000..153f7dff82c
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/87434_internal_external_organ_death.txt
@@ -0,0 +1,2 @@
+/obj/item/organ/internal/@SUBTYPES : /obj/item/organ/@SUBTYPES{@OLD}
+/obj/item/organ/external/@SUBTYPES : /obj/item/organ/@SUBTYPES{@OLD}

From 5a496260f20db5e26728d85acd3addfb2086b11a Mon Sep 17 00:00:00 2001
From: "tgstation-ci[bot]"
 <179393467+tgstation-ci[bot]@users.noreply.github.com>
Date: Thu, 19 Dec 2024 21:12:20 +0000
Subject: [PATCH 23/23] Automatic changelog compile [ci skip]

---
 html/changelogs/AutoChangeLog-pr-4957.yml  | 17 -----
 html/changelogs/AutoChangeLog-pr-4973.yml  |  4 --
 html/changelogs/AutoChangeLog-pr-5159.yml  |  4 --
 html/changelogs/AutoChangeLog-pr-87306.yml |  5 --
 html/changelogs/AutoChangeLog-pr-87329.yml | 16 -----
 html/changelogs/AutoChangeLog-pr-87434.yml |  7 --
 html/changelogs/AutoChangeLog-pr-87622.yml |  4 --
 html/changelogs/AutoChangeLog-pr-87726.yml | 10 ---
 html/changelogs/AutoChangeLog-pr-87782.yml |  4 --
 html/changelogs/AutoChangeLog-pr-87789.yml |  4 --
 html/changelogs/AutoChangeLog-pr-87792.yml |  4 --
 html/changelogs/AutoChangeLog-pr-87869.yml |  4 --
 html/changelogs/AutoChangeLog-pr-87898.yml |  4 --
 html/changelogs/AutoChangeLog-pr-88326.yml |  4 --
 html/changelogs/archive/2024-12.yml        | 75 ++++++++++++++++++++++
 15 files changed, 75 insertions(+), 91 deletions(-)
 delete mode 100644 html/changelogs/AutoChangeLog-pr-4957.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-4973.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-5159.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87306.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87329.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87434.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87622.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87726.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87782.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87789.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87792.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87869.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-87898.yml
 delete mode 100644 html/changelogs/AutoChangeLog-pr-88326.yml

diff --git a/html/changelogs/AutoChangeLog-pr-4957.yml b/html/changelogs/AutoChangeLog-pr-4957.yml
deleted file mode 100644
index 900b7d4e96e..00000000000
--- a/html/changelogs/AutoChangeLog-pr-4957.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-author: "Oxotnak"
-delete-after: True
-changes:
-  - rscadd: "GAS now have basic noslip"
-  - rscadd: "GAS now able to grab in scythes"
-  - rscadd: "GAS now faster in threat form"
-  - rscadd: "GAS now raises scythes faster and can move at same time"
-  - rscadd: "GAS now able to wear scouter-huds"
-  - rscadd: "GAS now more resistant to tackle"
-  - rscadd: "GAS now have own language"
-  - rscadd: "GAS now have sol implant. Damages by emp. Fixable via replacing implant"
-  - rscadd: "GAS now immune to bolas and beartrap"
-  - rscadd: "GAS now can raise scythes in cuffs. Can't be cuffed with raised scythes"
-  - rscadd: "GAS now moves fast while grabbing in scythes"
-  - rscadd: "GAS now have special cookie"
-  - bugfix: "GAS now can't pick languages"
-  - qol: "GAS now have quirks blacklist"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-4973.yml b/html/changelogs/AutoChangeLog-pr-4973.yml
deleted file mode 100644
index 0fed758e920..00000000000
--- a/html/changelogs/AutoChangeLog-pr-4973.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Vishenka0704"
-delete-after: True
-changes:
-  - rscadd: "Eventmaker admin-subsystem."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-5159.yml b/html/changelogs/AutoChangeLog-pr-5159.yml
deleted file mode 100644
index dd718c2744d..00000000000
--- a/html/changelogs/AutoChangeLog-pr-5159.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Axidyuwu"
-delete-after: True
-changes:
-  - balance: "Damage buffs for herethic, void walker and nightmare items or spells"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87306.yml b/html/changelogs/AutoChangeLog-pr-87306.yml
deleted file mode 100644
index 5117e29fac8..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87306.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "necromanceranne"
-delete-after: True
-changes:
-  - code_imp: "Introduces a INHALE method for reagent transfer. Cigarettes and smoke reactions use this new method."
-  - balance: "Nitrous oxide now brain damage if you inhale it. So don't do that."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87329.yml b/html/changelogs/AutoChangeLog-pr-87329.yml
deleted file mode 100644
index 703c0b9fdb9..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87329.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-author: "00-Steven"
-delete-after: True
-changes:
-  - refactor: "Refactored tasting code. Please report any jank tasting behaviours."
-  - bugfix: "You taste what you eat instead of the contents of your own stomach."
-  - bugfix: "Other basic nutriment subtypes also carry food flavours, instead of outweighing the food flavours with their lack of flavour."
-  - bugfix: "Basic nutriment subtypes have a flavour they default to, in case of not carrying any food flavours."
-  - bugfix: "Oils taste like oil instead of tasting indescribable."
-  - bugfix: "Clothing eaten by moths actually carries its flavours instead of tasting indescribable."
-  - bugfix: "Organs use organ tissue instead of nutriment."
-  - bugfix: "You can actually taste organ tissue."
-  - qol: "Mineral slurry tastes like minerals instead of tasting indescribable."
-  - bugfix: "Tasted flavours can actually be \"strong\" in addition to mild or \"a hint of\", as intended."
-  - qol: "Flavours are only strong when their percentage of what you're tasting is more than 4x taste sensitivity instead of 3x, for most default tongues being 60% and lizards 40% of the drink."
-  - qol: "Tasted flavours are sorted by strength, stronger flavours coming first."
-  - qol: "Tasted flavours are grouped into \"strong\", \"mild\", and \"hint\" in the message, replacing \"You can taste a hint of bitterness, alcohol, a hint of sweetness, and a hint of cola\" with \"You can taste alcohol and a hint of bitterness, sweetness, and cola\"."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87434.yml b/html/changelogs/AutoChangeLog-pr-87434.yml
deleted file mode 100644
index a59dd32cdf1..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87434.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
-  - code_imp: "Removed internal/external pathing from organs in favor of a bit flag. Hopefully this shouldn't break anything about organs."
-  - bugfix: "Fixed invisible fox ears."
-  - bugfix: "Fixed mushpeople caps not being colored red by default."
-  - rscadd: "You can now dye most tails, podpeople hair, mushpeople caps etc. with a hair dye spray."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87622.yml b/html/changelogs/AutoChangeLog-pr-87622.yml
deleted file mode 100644
index 03a06eab36c..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87622.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "carlarctg"
-delete-after: True
-changes:
-  - bugfix: "vampires are a human subtype & have stomachs/lungs"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87726.yml b/html/changelogs/AutoChangeLog-pr-87726.yml
deleted file mode 100644
index a61ff714127..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87726.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-author: "Fikou"
-delete-after: True
-changes:
-  - bugfix: "a modsuit being deleted will delete its parts correctly"
-  - bugfix: "a modsuit needs its boots out to be moved by an AI"
-  - qol: "you can extend or retract a modsuits parts from the ui panel"
-  - qol: "modsuit cores have colorcoded charge bars in the ui panel"
-  - qol: "weapon recall module makes you pick up the weapon if its on your tile"
-  - code_imp: "tether module has its own button for cutting tethers instead of stealing it from pins"
-  - bugfix: "armor booster doesnt protect from head injury without the helmet on"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87782.yml b/html/changelogs/AutoChangeLog-pr-87782.yml
deleted file mode 100644
index 1e83a98093d..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87782.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "SmArtKar"
-delete-after: True
-changes:
-  - refactor: "Eye color effects are now controlled via a new overrides system, which should prevent conflicts between different sources."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87789.yml b/html/changelogs/AutoChangeLog-pr-87789.yml
deleted file mode 100644
index 062e7ea55b1..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87789.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "larentoun"
-delete-after: True
-changes:
-  - bugfix: "Fixes a runtime when wingless creature flaps their wings"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87792.yml b/html/changelogs/AutoChangeLog-pr-87792.yml
deleted file mode 100644
index e8ff0af1935..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87792.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "GremlinSeeker"
-delete-after: True
-changes:
-  - bugfix: "Syndicate Biodome fixes"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87869.yml b/html/changelogs/AutoChangeLog-pr-87869.yml
deleted file mode 100644
index 41532da0005..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87869.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "SmArtKar"
-delete-after: True
-changes:
-  - bugfix: "Fixed ayylmao's brain examine lines"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-87898.yml b/html/changelogs/AutoChangeLog-pr-87898.yml
deleted file mode 100644
index aa4f5a81aa9..00000000000
--- a/html/changelogs/AutoChangeLog-pr-87898.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "xPokee"
-delete-after: True
-changes:
-  - bugfix: "fixed brains turning invisible after being washed"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-88326.yml b/html/changelogs/AutoChangeLog-pr-88326.yml
deleted file mode 100644
index 7059d4747e1..00000000000
--- a/html/changelogs/AutoChangeLog-pr-88326.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "SmArtKar"
-delete-after: True
-changes:
-  - sound: "Modsuits no longer horrifically screech when taken off"
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-12.yml b/html/changelogs/archive/2024-12.yml
index d3a8ea2f477..39692f926f7 100644
--- a/html/changelogs/archive/2024-12.yml
+++ b/html/changelogs/archive/2024-12.yml
@@ -811,14 +811,89 @@
   - rscadd: Added the Half Bob hairstyle
   - image: Added the hair_bob_half state to hair.dmi
 2024-12-19:
+  00-Steven:
+  - refactor: Refactored tasting code. Please report any jank tasting behaviours.
+  - bugfix: You taste what you eat instead of the contents of your own stomach.
+  - bugfix: Other basic nutriment subtypes also carry food flavours, instead of outweighing
+      the food flavours with their lack of flavour.
+  - bugfix: Basic nutriment subtypes have a flavour they default to, in case of not
+      carrying any food flavours.
+  - bugfix: Oils taste like oil instead of tasting indescribable.
+  - bugfix: Clothing eaten by moths actually carries its flavours instead of tasting
+      indescribable.
+  - bugfix: Organs use organ tissue instead of nutriment.
+  - bugfix: You can actually taste organ tissue.
+  - qol: Mineral slurry tastes like minerals instead of tasting indescribable.
+  - bugfix: Tasted flavours can actually be "strong" in addition to mild or "a hint
+      of", as intended.
+  - qol: Flavours are only strong when their percentage of what you're tasting is
+      more than 4x taste sensitivity instead of 3x, for most default tongues being
+      60% and lizards 40% of the drink.
+  - qol: Tasted flavours are sorted by strength, stronger flavours coming first.
+  - qol: Tasted flavours are grouped into "strong", "mild", and "hint" in the message,
+      replacing "You can taste a hint of bitterness, alcohol, a hint of sweetness,
+      and a hint of cola" with "You can taste alcohol and a hint of bitterness, sweetness,
+      and cola".
+  Axidyuwu:
+  - balance: Damage buffs for herethic, void walker and nightmare items or spells
   FeenieRU:
   - rscadd: Streletz suit in security vends.
+  Fikou:
+  - bugfix: a modsuit being deleted will delete its parts correctly
+  - bugfix: a modsuit needs its boots out to be moved by an AI
+  - qol: you can extend or retract a modsuits parts from the ui panel
+  - qol: modsuit cores have colorcoded charge bars in the ui panel
+  - qol: weapon recall module makes you pick up the weapon if its on your tile
+  - code_imp: tether module has its own button for cutting tethers instead of stealing
+      it from pins
+  - bugfix: armor booster doesnt protect from head injury without the helmet on
+  Ghommie:
+  - code_imp: Removed internal/external pathing from organs in favor of a bit flag.
+      Hopefully this shouldn't break anything about organs.
+  - bugfix: Fixed invisible fox ears.
+  - bugfix: Fixed mushpeople caps not being colored red by default.
+  - rscadd: You can now dye most tails, podpeople hair, mushpeople caps etc. with
+      a hair dye spray.
+  GremlinSeeker:
+  - bugfix: Syndicate Biodome fixes
   Kocma-san:
   - bugfix: civil defense symptom kitis now available for purchase
   OrbisAnima:
   - qol: Allows those with the Water Hater Quirk (Felinids, Tajarans, etc) to bathe
       or shower without getting stamina damage. They still get a negative Moodlet
       and dont heal as others do.
+  Oxotnak:
+  - rscadd: GAS now have basic noslip
+  - rscadd: GAS now able to grab in scythes
+  - rscadd: GAS now faster in threat form
+  - rscadd: GAS now raises scythes faster and can move at same time
+  - rscadd: GAS now able to wear scouter-huds
+  - rscadd: GAS now more resistant to tackle
+  - rscadd: GAS now have own language
+  - rscadd: GAS now have sol implant. Damages by emp. Fixable via replacing implant
+  - rscadd: GAS now immune to bolas and beartrap
+  - rscadd: GAS now can raise scythes in cuffs. Can't be cuffed with raised scythes
+  - rscadd: GAS now moves fast while grabbing in scythes
+  - rscadd: GAS now have special cookie
+  - bugfix: GAS now can't pick languages
+  - qol: GAS now have quirks blacklist
   RatFromTheJungle:
   - rscadd: Adds tinypaks, smaller backpacks to the loadout that are less 'visually
       disruptive.'
+  SmArtKar:
+  - bugfix: Fixed ayylmao's brain examine lines
+  - sound: Modsuits no longer horrifically screech when taken off
+  - refactor: Eye color effects are now controlled via a new overrides system, which
+      should prevent conflicts between different sources.
+  Vishenka0704:
+  - rscadd: Eventmaker admin-subsystem.
+  carlarctg:
+  - bugfix: vampires are a human subtype & have stomachs/lungs
+  larentoun:
+  - bugfix: Fixes a runtime when wingless creature flaps their wings
+  necromanceranne:
+  - code_imp: Introduces a INHALE method for reagent transfer. Cigarettes and smoke
+      reactions use this new method.
+  - balance: Nitrous oxide now brain damage if you inhale it. So don't do that.
+  xPokee:
+  - bugfix: fixed brains turning invisible after being washed