diff --git a/code/datums/components/storage/concrete/rped.dm b/code/datums/components/storage/concrete/rped.dm
index d919828e8e..06de0ceb33 100644
--- a/code/datums/components/storage/concrete/rped.dm
+++ b/code/datums/components/storage/concrete/rped.dm
@@ -16,6 +16,32 @@
to_chat(M, "[parent] only accepts machine parts!")
return FALSE
+/datum/component/storage/concrete/rped/quick_empty(mob/M)
+ var/atom/A = parent
+ if(!M.canUseStorage() || !A.Adjacent(M) || M.incapacitated())
+ return
+ if(check_locked(null, M, TRUE))
+ return FALSE
+ A.add_fingerprint(M)
+ var/list/things = contents()
+ var/lowest_rating = INFINITY
+ for(var/obj/item/B in things)
+ if(B.get_part_rating() < lowest_rating)
+ lowest_rating = B.get_part_rating()
+ for(var/obj/item/B in things)
+ if(B.get_part_rating() > lowest_rating)
+ things.Remove(B)
+ if(lowest_rating = INFINITY)
+ to_chat(M, "There's no parts to dump out from [parent].")
+ return
+ to_chat(M, "You start dumping out tier/cell rating [lowest_rating] parts from [parent].")
+ var/turf/T = get_turf(A)
+ var/datum/progressbar/progress = new(M, length(things), T)
+ while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
+ stoplag(1)
+ qdel(progress)
+ A.do_squish(0.8, 1.2)
+
/datum/component/storage/concrete/bluespace/rped
collection_mode = COLLECT_EVERYTHING
allow_quick_gather = TRUE
@@ -33,5 +59,29 @@
to_chat(M, "[parent] only accepts machine parts!")
return FALSE
-/datum/component/storage/concrete/cyborg/rped
- max_items = 150
+
+/datum/component/storage/concrete/bluespace/rped/quick_empty(mob/M)
+ var/atom/A = parent
+ if(!M.canUseStorage() || !A.Adjacent(M) || M.incapacitated())
+ return
+ if(check_locked(null, M, TRUE))
+ return FALSE
+ A.add_fingerprint(M)
+ var/list/things = contents()
+ var/lowest_rating = INFINITY
+ for(var/obj/item/B in things)
+ if(B.get_part_rating() < lowest_rating)
+ lowest_rating = B.get_part_rating()
+ for(var/obj/item/B in things)
+ if(B.get_part_rating() > lowest_rating)
+ things.Remove(B)
+ if(lowest_rating = INFINITY)
+ to_chat(M, "There's no parts to dump out from [parent].")
+ return
+ to_chat(M, "You start dumping out tier/cell rating [lowest_rating] parts from [parent].")
+ var/turf/T = get_turf(A)
+ var/datum/progressbar/progress = new(M, length(things), T)
+ while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
+ stoplag(1)
+ qdel(progress)
+ A.do_squish(0.8, 1.2)