diff --git a/code/modules/surgery/nutcracker.dm b/code/modules/surgery/nutcracker.dm
new file mode 100644
index 0000000000..6b7b6ee261
--- /dev/null
+++ b/code/modules/surgery/nutcracker.dm
@@ -0,0 +1,29 @@
+/obj/item/nutcracker
+ name = "nutcracker"
+ desc = "It seems oversized... quite much... you could fit a head in it."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "nutcracker"
+ force = 10
+ flags_1 = CONDUCT_1
+ w_class = WEIGHT_CLASS_NORMAL
+ attack_verb = list("smashed", "beaten", "crushed")
+
+/obj/item/nutcracker/attack(mob/living/carbon/M, mob/user)
+ if(!istype(M))
+ return
+ if(user && imp)
+ if(M != user)
+ M.visible_message("[user] is attempting to implant [M].")
+
+ var/turf/T = get_turf(M)
+ if(T && (M == user || do_mob(user, M, 50)))
+ if(src && imp)
+ if(imp.implant(M, user))
+ if (M == user)
+ to_chat(user, "You implant yourself.")
+ else
+ M.visible_message("[user] has implanted [M].", "[user] implants you.")
+ imp = null
+ update_icon()
+ else
+ to_chat(user, "[src] fails to implant [M].")
diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi
index 4ab614cf83..1a3b344566 100755
Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 12a91dfaa9..f6f46bb72b 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2666,6 +2666,7 @@
#include "code\modules\surgery\limb_augmentation.dm"
#include "code\modules\surgery\lipoplasty.dm"
#include "code\modules\surgery\mechanic_steps.dm"
+#include "code\modules\surgery\nutcracker.dm"
#include "code\modules\surgery\organ_manipulation.dm"
#include "code\modules\surgery\organic_steps.dm"
#include "code\modules\surgery\plastic_surgery.dm"