diff --git a/baystation12.dme b/baystation12.dme
index 10bfe047744..7932372004b 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -5,6 +5,74 @@
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
+#define FILE_DIR "code"
+#define FILE_DIR "code/TriDimension"
+#define FILE_DIR "code/unused"
+#define FILE_DIR "code/unused/goonheist"
+#define FILE_DIR "code/WorkInProgress"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/ShieldGen"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter"
+#define FILE_DIR "code/WorkInProgress/Susan"
+#define FILE_DIR "html"
+#define FILE_DIR "icons"
+#define FILE_DIR "icons/48x48"
+#define FILE_DIR "icons/ass"
+#define FILE_DIR "icons/effects"
+#define FILE_DIR "icons/mecha"
+#define FILE_DIR "icons/misc"
+#define FILE_DIR "icons/mob"
+#define FILE_DIR "icons/mob/human_races"
+#define FILE_DIR "icons/mob/in-hand"
+#define FILE_DIR "icons/mob/in-hand/left"
+#define FILE_DIR "icons/mob/in-hand/right"
+#define FILE_DIR "icons/mob/otherHuman"
+#define FILE_DIR "icons/mob/species"
+#define FILE_DIR "icons/mob/species/vox"
+#define FILE_DIR "icons/mob/species/vox/armalis"
+#define FILE_DIR "icons/mob/spirits"
+#define FILE_DIR "icons/NTOS"
+#define FILE_DIR "icons/obj"
+#define FILE_DIR "icons/obj/assemblies"
+#define FILE_DIR "icons/obj/atmospherics"
+#define FILE_DIR "icons/obj/clothing"
+#define FILE_DIR "icons/obj/doors"
+#define FILE_DIR "icons/obj/flora"
+#define FILE_DIR "icons/obj/machines"
+#define FILE_DIR "icons/obj/pipes"
+#define FILE_DIR "icons/obj/power_cond"
+#define FILE_DIR "icons/pda_icons"
+#define FILE_DIR "icons/pods"
+#define FILE_DIR "icons/spideros_icons"
+#define FILE_DIR "icons/stamp_icons"
+#define FILE_DIR "icons/Testing"
+#define FILE_DIR "icons/turf"
+#define FILE_DIR "icons/vending_icons"
+#define FILE_DIR "nano"
+#define FILE_DIR "nano/images"
+#define FILE_DIR "sound"
+#define FILE_DIR "sound/AI"
+#define FILE_DIR "sound/ambience"
+#define FILE_DIR "sound/effects"
+#define FILE_DIR "sound/effects/turret"
+#define FILE_DIR "sound/effects/wind"
+#define FILE_DIR "sound/hallucinations"
+#define FILE_DIR "sound/items"
+#define FILE_DIR "sound/machines"
+#define FILE_DIR "sound/mecha"
+#define FILE_DIR "sound/misc"
+#define FILE_DIR "sound/music"
+#define FILE_DIR "sound/piano"
+#define FILE_DIR "sound/turntable"
+#define FILE_DIR "sound/violin"
+#define FILE_DIR "sound/voice"
+#define FILE_DIR "sound/voice/complionator"
+#define FILE_DIR "sound/voice/Serithi"
+#define FILE_DIR "sound/vox"
+#define FILE_DIR "sound/vox_fem"
+#define FILE_DIR "sound/weapons"
// END_FILE_DIR
// BEGIN_PREFERENCES
#define DEBUG
@@ -892,10 +960,10 @@
#include "code\modules\customitems\item_spawning.dm"
#include "code\modules\customitems\definitions\base.dm"
#include "code\modules\destilery\main.dm"
-#include "code\modules\detectivework\detective_work.dm"
-#include "code\modules\detectivework\evidence.dm"
-#include "code\modules\detectivework\footprints_and_rag.dm"
-#include "code\modules\detectivework\scanner.dm"
+#include "code\modules\DetectiveWork\detective_work.dm"
+#include "code\modules\DetectiveWork\evidence.dm"
+#include "code\modules\DetectiveWork\footprints_and_rag.dm"
+#include "code\modules\DetectiveWork\scanner.dm"
#include "code\modules\economy\Accounts.dm"
#include "code\modules\economy\Accounts_DB.dm"
#include "code\modules\economy\ATM.dm"
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index f155cd3ff55..be2a97a4201 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -579,6 +579,22 @@
///////////////////////////////////////Stock Parts /////////////////////////////////
+/obj/item/weapon/storage/part_replacer
+ name = "Rapid Part Exchange Device"
+ desc = "Special mechanical module made to store, sort, and apply standard machine parts."
+ icon_state = "RPED"
+ item_state = "RPED"
+ w_class = 5
+ can_hold = list(/obj/item/weapon/stock_parts)
+ storage_slots = 14
+ use_to_pickup = 1
+ allow_quick_gather = 1
+ allow_quick_empty = 1
+ collection_mode = 1
+ max_w_class = 3
+ max_combined_w_class = 28
+
+
/obj/item/weapon/stock_parts
name = "stock part"
desc = "What?"
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 2fb8bb1393e..ee520bd173a 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -304,3 +304,30 @@ Class Procs:
state(text, "blue")
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
+/obj/machinery/proc/exchange_parts(mob/user, obj/item/weapon/storage/part_replacer/W)
+ if(istype(W) && component_parts)
+ if(panel_open)
+ var/obj/item/weapon/circuitboard/CB = locate(/obj/item/weapon/circuitboard) in component_parts
+ var/P
+ for(var/obj/item/weapon/stock_parts/A in component_parts)
+ for(var/D in CB.req_components)
+ if(ispath(A.type, text2path(D)))
+ P = text2path(D)
+ break
+ for(var/obj/item/weapon/stock_parts/B in W.contents)
+ if(istype(B, P) && istype(A, P))
+ if(B.rating > A.rating)
+ W.remove_from_storage(B, src)
+ W.handle_item_insertion(A, 1)
+ component_parts -= A
+ component_parts += B
+ B.loc = null
+ user << "[A.name] replaced with [B.name]."
+ break
+ RefreshParts()
+ else
+ user << "Following parts detected in the machine:"
+ for(var/var/obj/item/C in component_parts)
+ user << " [C.name]"
+ return 1
+ return 0
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index b3842866a36..b68177a892f 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -953,6 +953,16 @@ datum/design/tech_disk
/////////////Stock Parts////////////////
////////////////////////////////////////
+datum/design/RPED
+ name = "Rapid Part Exchange Device"
+ desc = "Special mechanical module made to store, sort, and apply standard machine parts."
+ id = "rped"
+ req_tech = list("engineering" = 3,
+ "materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 15000, "$glass" = 5000) //hardcore
+ build_path = /obj/item/weapon/storage/part_replacer
+
datum/design/basic_capacitor
name = "Basic Capacitor"
desc = "A stock part used in the construction of various devices."
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index 8b3a1c9d6ba..4b626cd83a9 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ