diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 54a982ced76..a64275ae2f2 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -845,8 +845,18 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user,
else if(istype(over_object, /obj/screen))
switch(over_object.name)
if("l_hand")
+ if(istype(loc,/obj/item/weapon/storage))
+ var/obj/item/weapon/storage/S = loc
+ S.remove_from_storage(src,M)
+ else
+ M.unEquip(src)
M.put_in_l_hand(src)
else if("r_hand")
+ if(istype(loc,/obj/item/weapon/storage))
+ var/obj/item/weapon/storage/S = loc
+ S.remove_from_storage(src,M)
+ else
+ M.unEquip(src)
M.put_in_r_hand(src)
usr << "You pick up the deck."
else
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 98be5d71110..90d68ba6e62 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -356,8 +356,12 @@
var/obj/item/stack/rods/R = I
if (R.use(1))
var/obj/item/weapon/flamethrower/F = new /obj/item/weapon/flamethrower(user.loc)
- user.unEquip(src)
- loc = F
+ if(istype(loc,/obj/item/weapon/storage))
+ var/obj/item/weapon/storage/S = loc
+ S.remove_from_storage(src,F)
+ else
+ user.unEquip(src)
+ loc = F
F.weldtool = src
add_fingerprint(user)
user << "You add a rod to a welder, starting to build a flamethrower."
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 7f3a9545228..077e771ad05 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -23,10 +23,15 @@
update_icon()
/obj/item/device/assembly_holder/proc/attach(var/obj/item/device/assembly/A, var/mob/user)
- if(user)
- user.remove_from_mob(A)
+ if(istype(A.loc,/obj/item/weapon/storage))
+ var/obj/item/weapon/storage/S = A.loc
+ S.remove_from_storage(A,src)
+ else
+ if(user)
+ user.remove_from_mob(A)
+ A.loc = src
+
A.holder = src
- A.loc = src
A.toggle_secure()
if(!a_left)
a_left = A
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 5d34743e722..bb1daa9c1b4 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -23,10 +23,18 @@
else if(istype(over_object, /obj/screen))
switch(over_object.name)
if("r_hand")
- M.unEquip(src)
+ if(istype(loc,/obj/item/weapon/storage))
+ var/obj/item/weapon/storage/S = loc
+ S.remove_from_storage(src,M)
+ else
+ M.unEquip(src)
M.put_in_r_hand(src)
if("l_hand")
- M.unEquip(src)
+ if(istype(loc,/obj/item/weapon/storage))
+ var/obj/item/weapon/storage/S = loc
+ S.remove_from_storage(src,M)
+ else
+ M.unEquip(src)
M.put_in_l_hand(src)
add_fingerprint(M)