diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 030cfe2ef4..6c0f2cfc0e 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -341,6 +341,97 @@
can_be_pushed = FALSE
hat_offset = 3
+/obj/item/robot_module/k9
+ name = "Security K-9 Unit module"
+ basic_modules = list(
+ /obj/item/restraints/handcuffs/cable/zipties/cyborg/dog,
+ /obj/item/dogborg/jaws/big,
+ /obj/item/dogborg/pounce,
+ /obj/item/clothing/mask/gas/sechailer/cyborg,
+ /obj/item/soap/tongue,
+ /obj/item/device/analyzer/nose,
+ /obj/item/device/dogborg/sleeper/K9,
+ /obj/item/gun/energy/disabler/cyborg)
+ emag_modules = list(/obj/item/gun/energy/laser/cyborg)
+ ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
+ /obj/item/clockwork/ratvarian_spear/cyborg)
+ cyborg_base_icon = "k9"
+ moduleselect_icon = "k9"
+ feedback_key = "cyborg_k9"
+ can_be_pushed = FALSE
+ hat_offset = INFINITY
+
+/obj/item/robot_module/k9/do_transform_animation()
+ ..()
+ to_chat(loc,"While you have picked the security-k9 module, you still have to follow your laws, NOT Space Law. \
+ For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to.")
+
+/obj/item/robot_module/security/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
+ ..()
+ var/obj/item/gun/energy/e_gun/advtaser/cyborg/T = locate(/obj/item/gun/energy/e_gun/advtaser/cyborg) in basic_modules
+ if(T)
+ if(T.cell.charge < T.cell.maxcharge)
+ var/obj/item/ammo_casing/energy/S = T.ammo_type[T.select]
+ T.cell.give(S.e_cost * coeff)
+ T.update_icon()
+ else
+ T.charge_tick = 0
+
+/obj/item/robot_module/medihound
+ name = "MediHound module"
+ basic_modules = list(
+ /obj/item/dogborg/jaws/small,
+ /obj/item/device/analyzer/nose,
+ /obj/item/soap/tongue,
+ /obj/item/device/healthanalyzer,
+ /obj/item/device/dogborg/sleeper,
+ /obj/item/twohanded/shockpaddles/hound,
+ /obj/item/device/sensor_device)
+ emag_modules = list(/obj/item/dogborg/pounce)
+ ratvar_modules = list(/obj/item/clockwork/slab/cyborg/medical,
+ /obj/item/clockwork/ratvarian_spear/cyborg)
+ cyborg_base_icon = "medihound"
+ moduleselect_icon = "medihound"
+ feedback_key = "cyborg_medihound"
+ can_be_pushed = FALSE
+ hat_offset = INFINITY
+
+/obj/item/robot_module/medihound/do_transform_animation()
+ ..()
+ to_chat(loc, "Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \
+ You are not a security module and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.")
+
+/obj/item/robot_module/scrubpup
+ name = "Janitor"
+ basic_modules = list(
+ /obj/item/device/assembly/flash/cyborg,
+ /obj/item/dogborg/jaws/small,
+ /obj/item/device/analyzer/nose,
+ /obj/item/soap/tongue,
+ /obj/item/device/lightreplacer/cyborg,
+ /obj/item/device/dogborg/sleeper/compactor)
+ emag_modules = list(/obj/item/dogborg/pounce)
+ ratvar_modules = list(
+ /obj/item/clockwork/slab/cyborg/janitor,
+ /obj/item/clockwork/replica_fabricator/cyborg)
+ cyborg_base_icon = "scrubpup"
+ moduleselect_icon = "scrubpup"
+ feedback_key = "cyborg_scrubpup"
+ hat_offset = INFINITY
+ clean_on_move = TRUE
+
+/obj/item/robot_module/scrubpup/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
+ ..()
+ var/obj/item/device/lightreplacer/LR = locate(/obj/item/device/lightreplacer) in basic_modules
+ if(LR)
+ for(var/i in 1 to coeff)
+ LR.Charge(R)
+
+/obj/item/robot_module/scrubpup/do_transform_animation()
+ ..()
+ to_chat(loc,"As tempting as it might be, do not begin binging on important items. Eat your garbage responsibly. People are not included under Garbage.")
+
+
/obj/item/robot_module/security/do_transform_animation()
..()
to_chat(loc, "While you have picked the security module, you still have to follow your laws, NOT Space Law. \