diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index b941ece9d16..0497543d0ee 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -150,6 +150,7 @@
M.visible_message("[user] buckles [M] to [src]!",\
"[user] buckles you to [src]!",\
"You hear metal clanking.")
+ M?.pulledby.stop_pulling()
/atom/movable/proc/user_unbuckle_mob(mob/living/buckled_mob, mob/user)
var/mob/living/M = unbuckle_mob(buckled_mob)
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index 6c5794dd56a..6a251597119 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -26,6 +26,11 @@ LINEN BINS
var/list/nightmare_messages = list("black")
var/comfort = 0.5
+/obj/item/bedsheet/attack_hand(mob/user)
+ if(isturf(loc) && user.Move_Pulled(src)) // make sure its on the ground first, prevents a speed exploit
+ return
+ return ..()
+
/obj/item/bedsheet/attack_self(mob/user as mob)
user.drop_item()
if(layer == initial(layer))
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 77759371f80..46e8a9e7a74 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -30,6 +30,11 @@
. = ..()
. += "Click dragging someone to a bed will buckle them in. Functions just like a chair except you can walk over them."
+/obj/structure/bed/attack_hand(mob/user)
+ if(user.Move_Pulled(src))
+ return
+ return ..()
+
/obj/structure/bed/psych
name = "psych bed"
desc = "For prime comfort during psychiatric evaluations."
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 809fcefbce0..fca6cac9d4f 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -84,6 +84,11 @@
return
. = ..()
+/obj/structure/chair/attack_hand(mob/user)
+ if(user.Move_Pulled(src))
+ return
+ return ..()
+
/obj/structure/chair/attack_tk(mob/user as mob)
if(!anchored || has_buckled_mobs() || !isturf(user.loc))
..()
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index fb9a3880876..ee7c2136362 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -375,7 +375,7 @@
M.start_pulling(t)
else
step(pulling, get_dir(pulling.loc, A))
- return
+ return TRUE
/mob/proc/update_gravity(has_gravity)
return