diff --git a/rrf2.x/sys/bed.g b/rrf2.x/sys/bed.g
new file mode 100644
index 0000000000000000000000000000000000000000..f8e50939fed7117caa2c0e567c5e64ff246980dc
--- /dev/null
+++ b/rrf2.x/sys/bed.g
@@ -0,0 +1,13 @@
+; Bed Mesh Leveling
+
+G28 Z
+
+G1 S2 Z3 F5000		; lift Z 3mm
+
+G29
+
+;disable mesh leveling, needs to be enabled at the start of your print and disabled again when finished.
+G29 S2
+
+; Park the head
+G1 X150 Y-49 F50000
diff --git a/rrf2.x/sys/brush.g b/rrf2.x/sys/brush.g
new file mode 100644
index 0000000000000000000000000000000000000000..dae40ba54e4ecf5e643ed5d25c5561ad03946b06
--- /dev/null
+++ b/rrf2.x/sys/brush.g
@@ -0,0 +1,19 @@
+;Drop Bed
+G91
+G1 Z2 F2000
+G90
+
+;brush in
+G1 X-32.5 Y124 F50000
+G1 X-35.5 Y155 F50000
+G1 X-38.5 Y124 F50000
+G1 X-41.5 Y155 F50000
+
+;Brush Out
+G1 X-41.5 Y155 F50000
+G1 X-32.5 Y150 F50000
+G1 X-41.5 Y145 F50000
+G1 X-32.5 Y140 F50000
+G1 X-41.5 Y135 F50000
+G1 X-32.5 Y130 F50000
+G1 X-41.5 Y125 F50000
diff --git a/rrf2.x/sys/cancel.g b/rrf2.x/sys/cancel.g
new file mode 100644
index 0000000000000000000000000000000000000000..399433a8c360790709098e303c4c3dce91271421
--- /dev/null
+++ b/rrf2.x/sys/cancel.g
@@ -0,0 +1,12 @@
+; Disable Mesh Compensation.
+G29 S2
+
+; purge tool
+;M98 Ppurge.g
+
+; park tool
+T-1
+
+; Heaters off
+;M0
+
diff --git a/rrf2.x/sys/config.g b/rrf2.x/sys/config.g
new file mode 100644
index 0000000000000000000000000000000000000000..8278ba8811a88aae91e8545fe2610444cce47285
--- /dev/null
+++ b/rrf2.x/sys/config.g
@@ -0,0 +1,124 @@
+; Configurat; Configuration file for Duet WiFi / Ethernet
+; executed by the firmware on start-up
+
+; General preferences
+M111 S0 						; Debugging off
+G21 							; Work in millimetres
+G90 							; Send absolute coordinates...
+M83 							; ...but relative extruder moves
+M555 P2 						; Set firmware compatibility to look like Marlin
+
+; Network
+; Read https://duet3d.dozuki.com/Wiki/Gcode#Section_M587_Add_WiFi_host_network_to_remembered_list_or_list_remembered_networks
+M550 P"ToolChanger" 	; Set machine name
+M552 S1							  ; Enable Networking
+M586 P0 S1 						; Enable HTTP
+M586 P1 S0 						; Disable FTP
+M586 P2 S0 						; Disable Telnet
+
+M667 S1 						; Select CoreXY mode	
+
+; Endstops
+M574 X1 Y1 S3 						; Set X / Y endstop stall detection
+M574 Z1 S2 						; Set Z endstop probe
+M558 P7 X0 Y0 Z2 H3 F360 I0 T20000 			; Set Z probe type to switch, the axes for which it is used and the dive height + speeds
+G31 P200 X0 Y0 Z0	 				; Set Z probe trigger value, offset and trigger height
+M557 X10:290 Y20:180 S40 				; Define mesh grid
+
+; Drive direction
+M569 P0 S0 						; Drive 0 X
+M569 P1 S0 						; Drive 1 Y
+M569 P2 S1 						; Drive 2 Z
+M569 P3 S0 						; Drive 3 E0
+M569 P4 S0 						; Drive 4 E1
+M569 P5 S1 						; Drive 5 E2
+M569 P6 S1 						; Drive 6 E3
+M569 P7 S0 						; Drive 7 COUPLER
+M569 P8 S0 						; Drive 8 UNUSED
+M569 P9 S0 						; Drive 9 UNUSED
+
+M584 X0 Y1 Z2 C7 E3:4:5:6 				; Apply custom drive mapping
+M208 X-35:328.5 Y-49:243 Z0:300 C0:260 S0 		; Set axis maxima & minima
+M350 C8 I0 					; Configure microstepping without interpolation
+M350 X16 Y16 Z16 E16:16:16:16 I1					; Configure microstepping with interpolation
+M92 X100 Y100 Z1600 C100 E834:834:834:834		; Set steps per mm
+M566 X400 Y400 Z8 C2 E2:2:2:2				; Set maximum instantaneous speed changes (mm/min)
+M203 X35000 Y35000 Z1200 C5000 E5000:5000:5000:5000	; Set maximum speeds (mm/min)
+M201 X6000 Y6000 Z400 C400 E2500:2500:2500:2500		; Set accelerations (mm/s^2)
+M906 X2000 Y2000 Z1330 C400 E1680:1680:1680:1680 I30 	; Set motor currents (mA) and motor idle factor in percent
+M84 S120 												; Set idle timeout
+
+;Stall Detection
+M915 C S5 F0 H200 					; Coupler
+
+;Stall Detection
+M915 X Y S5 F0 H400 				; X / Y Axes
+
+; Heaters
+M305 P0 T100000 B4725 C7.06e-8 				; Set thermistor 
+M143 H0 S225 						; Set temperature limit for heater 0 to 225C
+
+M305 S"T0" P1 T100000 B4725 C7.06e-8 			; Set thermistor
+M143 H1 S300 						; Set temperature limit for heater 1 to 300C
+
+M305 S"T1" P2 T100000 B4725 C7.06e-8			; Set thermistor
+M143 H2 S300 						; Set temperature limit for heater 2 to 300C
+
+M305 S"T2" P3 T100000 B4725 C7.06e-8			;Set thermistor
+M143 H3 S300 						; Set temperature limit for heater 3 to 300C
+
+M305 S"T3" P4 T100000 B4725 C7.06e-8 			; Set thermistor 
+M143 H4 S300 						; Set temperature limit for heater 4 to 300C
+
+
+; Tools
+M563 P0 S"T0" D0 H1 F2 					; Define tool 0
+G10 P0 X0 Y0 Z0 					; Reset tool 0 axis offsets
+G10 P0 R0 S0 						; Reset initial tool 0 active and standby temperatures to 0C
+
+M563 P1 S"T1" D1 H2 F4					; Define tool 1
+G10 P1 X0 Y0 Z0 					; Reset tool 1 axis offsets
+G10 P1 R0 S0 						; Reset initial tool 1 active and standby temperatures to 0C
+
+M563 P2 S"T2" D2 H3 F6					; Define tool 2
+G10 P2 X0 Y0 Z0 					; Reset tool 2 axis offsets
+G10 P2 R0 S0 						; Reset initial tool 2 active and standby temperatures to 0C
+
+M563 P3 S"T3" D3 H4 F8					; Define tool 3
+G10 P3 X0 Y0 Z0 					; Reset tool 3 axis offsets
+G10 P3 R0 S0 						; Reset initial tool 3 active and standby temperatures to 0C
+
+; Fans
+M106 P0 S0						; UNUSED
+M106 P1 S255 H1 T70					; T0 HE
+M106 P2 S0						; T0 PCF
+M106 P3 S255 H2 T70 					; T1 HE
+M106 P4 S0						; T1 PCF 
+M106 P5 S255 H3 T70 					; T2 HE 
+M106 P6 S0 						; T2 PCF
+M106 P7 S255 H4 T70					; T3 HE
+M106 P8 S0						; T3 PCF
+
+M593 F50						; cancel ringing at 50Hz (https://forum.e3d-online.com/threads/accelerometer-and-resonance-measurements-of-the-motion-system.3445/)
+;M376 H15						; bed compensation taper
+
+;tool offsets
+; !ESTIMATED! offsets for:
+; V6-tool: X-9 Y39 Z-5
+; Volcano-tool: X-9 Y39 Z-13.5
+; Hemera-tool: X-37.5 Y43.5 Z-6
+
+G10 P0 X-9 Y39 Z-5					; T0
+G10 P1 X-9 Y39 Z-5					; T1
+G10 P2 X-9 Y39 Z-5					; T2
+G10 P3 X-9 Y39 Z-5					; T3
+
+;deselect tools
+T-1
+
+;M572 D0 S0.2 						; pressure advance T0
+;M572 D1 S0.2 						; pressure advance T1
+;M572 D2 S0.2 						; pressure advance T2
+;M572 D3 S0.2 						; pressure advance T3
+
+M501; load config-override.g
diff --git a/rrf2.x/sys/homeall.g b/rrf2.x/sys/homeall.g
new file mode 100644
index 0000000000000000000000000000000000000000..b19066f424a87e2cab4e3ebc647c87d24a34d8ba
--- /dev/null
+++ b/rrf2.x/sys/homeall.g
@@ -0,0 +1,12 @@
+; homeall.g
+; called to home all axes
+
+M98 Phomec.g			; Home C (ToolHead)
+
+M98 Phomey.g			; Home Y
+
+M98 Phomex.g			; Home X
+
+M98 Phomez.g			; Home Z
+
+G1 X150 Y-47 F15000		; Park
diff --git a/rrf2.x/sys/homec.g b/rrf2.x/sys/homec.g
new file mode 100644
index 0000000000000000000000000000000000000000..584642c810e257b4d4bb69f00fb801d5131a1225
--- /dev/null
+++ b/rrf2.x/sys/homec.g
@@ -0,0 +1,13 @@
+; homec.g
+; called to home the C axis (coupler)
+
+;crashc
+G92 C260
+M913 C40			; C MOTOR TO 40% CURRENT
+G1 C-260 F2400  ; drive the C-axis to the stop
+M913 C100			; C MOTOR TO 100% CURRENT
+G1 C1 F50000
+G92 C0
+
+;Open Coupler
+M98 P/macros/Coupler - Unlock
diff --git a/rrf2.x/sys/homex.g b/rrf2.x/sys/homex.g
new file mode 100644
index 0000000000000000000000000000000000000000..ce3bde5d83c2a6dec4c22c3c25cd2cccf87ac0a0
--- /dev/null
+++ b/rrf2.x/sys/homex.g
@@ -0,0 +1,25 @@
+; homex.g
+; called to home the x axis
+
+G91 			; use relative positioning
+
+G1 S2 X0.5 Y-0.5 F10000		; energise to avaoid false triggers during sensorless homing
+
+M400 			; make sure everything has stopped before we make changes
+G4 P100			; wait 100ms
+
+M913 X25 Y25 		; drop motor currents to 50%
+M915 H200 X Y S4 R0 F0 	; set X and Y to sensitivity 3, do nothing when stall, unfiltered
+
+G1 S2 Z3 F5000		; lift Z 3mm
+G1 S1 X-400 F3000 	; move left 400mm, stopping at the endstop
+G1 S1 X2 F2000 		; move away from end
+G1 S2 Z-3 F1200		; lower Z
+G90 			; back to absolute positioning
+
+M400 			; make sure everything has stopped before we reset the motor currents
+G4 P100			; wait 100ms
+M913 X100 Y100 		; motor currents back to 100%
+
+
+
diff --git a/rrf2.x/sys/homey.g b/rrf2.x/sys/homey.g
new file mode 100644
index 0000000000000000000000000000000000000000..ea56edfc8cb92835dd98a55f7b699f3bb949ab23
--- /dev/null
+++ b/rrf2.x/sys/homey.g
@@ -0,0 +1,24 @@
+; homey.g
+; called to home the Y axis
+
+G91 			; use relative positioning
+
+G1 S2 X0.5 Y-0.5 F10000		; energise to avaoid false triggers during sensorless homing
+
+M400 			; make sure everything has stopped before we make changes
+G4 P100			; wait 100ms
+
+M913 X20 Y20 		; drop motor currents to 20%
+M915 H200 X Y S3 R0 F0 	; set X and Y to sensitivity 3, do nothing when stall, unfiltered
+
+
+G1 S2 Z3 F5000		; lift Z 3mm
+G1 S1 Y-400 F3000 	; move to the front 400mm, stopping at the endstop
+G1 S1 Y2 F2000 		; move away from end
+G1 S2 Z-3 F1200		; lower Z
+G90 			; back to absolute positioning
+
+M400 			; make sure everything has stopped before we reset the motor currents
+G4 P100			; wait 100ms
+M913 X100 Y100 		; motor currents back to 100%
+
diff --git a/rrf2.x/sys/homez.g b/rrf2.x/sys/homez.g
new file mode 100644
index 0000000000000000000000000000000000000000..5a91dd29686030cae0876abce8dd99879a9b4f6a
--- /dev/null
+++ b/rrf2.x/sys/homez.g
@@ -0,0 +1,28 @@
+; homez.g
+; called to home the Z axis
+
+T-1       ;just in case there is a tool coupled, go try to drop it at the dock
+
+M98 P/macros/Coupler - Unlock	;Open Coupler
+
+G91 				; Relative mode
+G1 S2 Z5 F5000			; Lower the bed
+G90				; back to absolute positioning
+
+G1 X150 Y100 F50000		; Position the endstop above the bed centre
+
+G91 				; Relative mode
+
+G4 P500				; wait 500msec
+G1 Z-300 S1 F1000		; Move Z down until the switch triggers (first pass)
+
+G4 P500				; wait 500msec
+G1 Z5 F5000			; Lift Z
+
+G4 P500				; wait 500msec
+G1 Z-300 S1 F300		; Move Z down until the switch triggers (second pass)
+
+G4 P500				; wait 500msec
+G1 Z5 F5000			; Drop the Bed
+
+G90				; Back to absolute positioning
diff --git a/rrf2.x/sys/pause.g b/rrf2.x/sys/pause.g
new file mode 100644
index 0000000000000000000000000000000000000000..a48390872851089523b115d7504c2bd8ceb6003b
--- /dev/null
+++ b/rrf2.x/sys/pause.g
@@ -0,0 +1,4 @@
+G91 			; use relative positioning
+G1 S2 Z5 F5000		; lift Z 5mm
+G90 			; back to absolute positioning
+G1 X-10 Y200 F50000	; move out the way.
diff --git a/rrf2.x/sys/prime.g b/rrf2.x/sys/prime.g
new file mode 100644
index 0000000000000000000000000000000000000000..fde98ec745c9d574de148fb7854797b81b250666
--- /dev/null
+++ b/rrf2.x/sys/prime.g
@@ -0,0 +1,31 @@
+;brush in
+G1 X-32.5 Y124 F50000
+G1 X-35.5 Y155 F50000
+G1 X-38.5 Y124 F50000
+G1 X-41.5 Y155 F50000
+
+;Park for prime/purge
+G1 X-37.5 Y176 F50000
+
+;Prime
+G92 E0
+G1 E10 F200
+G1 F50
+G1 E5 F50
+G1 E-0.25 F200
+G92 E0
+;G4 S2
+
+;Run Out
+G1 X-37.5 Y160 F50000
+
+;Brush Out
+G1 X-41.5 Y155 F50000
+G1 X-32.5 Y150 F50000
+G1 X-41.5 Y145 F50000
+G1 X-32.5 Y140 F50000
+G1 X-41.5 Y135 F50000
+G1 X-32.5 Y130 F50000
+G1 X-41.5 Y125 F50000
+
+
diff --git a/rrf2.x/sys/purge.g b/rrf2.x/sys/purge.g
new file mode 100644
index 0000000000000000000000000000000000000000..15b476c5b68aa8f9dad432edb5f9583cfeb17478
--- /dev/null
+++ b/rrf2.x/sys/purge.g
@@ -0,0 +1,31 @@
+;brush in
+G1 X-41.5 Y125 F50000
+G1 X-32.5 Y130 F50000
+G1 X-41.5 Y135 F50000
+G1 X-32.5 Y140 F50000
+G1 X-41.5 Y145 F50000
+G1 X-32.5 Y150 F50000
+G1 X-41.5 Y155 F50000
+
+;Park for prime/purge
+G1 X-37.5 Y176 F50000
+
+;Purge
+G92 E0
+G1 F200
+G1 E12 F200
+G92 E0
+G1 E-8 F2750
+G4 S4
+
+;Run Out
+G1 X-37.5 Y160 F50000
+
+;Brush Out
+G1 X-41.5 Y155 F50000
+G1 X-38.5 Y124 F50000
+G1 X-35.5 Y155 F50000
+G1 X-32.5 Y124 F50000
+
+
+
diff --git a/rrf2.x/sys/tfree0.g b/rrf2.x/sys/tfree0.g
new file mode 100644
index 0000000000000000000000000000000000000000..01f826ddd94c455b6fa0db25abe66cdf1a0c78a8
--- /dev/null
+++ b/rrf2.x/sys/tfree0.g
@@ -0,0 +1,27 @@
+; tfree0.g
+; called when tool 0 is freed
+
+;Drop the bed
+G91
+G1 Z4 F1000
+G90
+
+;mesh levelling off
+G29 S2
+
+;Purge nozzle
+;M98 Ppurge.g
+
+;Move In
+G53 G1 X-10.5 Y150 F50000
+G53 G1 Y220 F50000
+G53 G1 Y242 F5000
+
+;Open Coupler
+M98 P/macros/Coupler - Unlock
+
+;fan off
+M106 P2 S0
+
+;Move Out
+G53 G1 Y175 F50000
diff --git a/rrf2.x/sys/tfree1.g b/rrf2.x/sys/tfree1.g
new file mode 100644
index 0000000000000000000000000000000000000000..78a236d540b211428974599e8108e5239326149b
--- /dev/null
+++ b/rrf2.x/sys/tfree1.g
@@ -0,0 +1,27 @@
+; tfree1.g
+; called when tool 1 is freed
+
+;Drop the bed
+G91
+G1 Z4 F1000
+G90
+
+;mesh levelling off
+G29 S2
+
+;Purge nozzle
+;M98 Ppurge.g
+
+;Move In
+G53 G1 X79.5 Y150 F50000
+G53 G1 Y220 F50000
+G53 G1 Y242 F5000
+
+;Open Coupler
+M98 P/macros/Coupler - Unlock
+
+;fan off
+M106 P4 S0
+
+;Move Out
+G53 G1 Y175 F50000
diff --git a/rrf2.x/sys/tfree2.g b/rrf2.x/sys/tfree2.g
new file mode 100644
index 0000000000000000000000000000000000000000..dd90414be8048350a60dcfc12dc8f332f770d064
--- /dev/null
+++ b/rrf2.x/sys/tfree2.g
@@ -0,0 +1,27 @@
+; tfree2.g
+; called when tool 2 is freed
+
+;Drop the bed
+G91
+G1 Z4 F1000
+G90
+
+;mesh levelling off
+G29 S2
+
+;Purge nozzle
+;M98 Ppurge.g
+
+;Move In
+G53 G1 X214.5 Y150 F50000
+G53 G1 Y220 F50000
+G53 G1 Y242 F5000
+
+;Open Coupler
+M98 P/macros/Coupler - Unlock
+
+;fan off
+M106 P6 S0
+
+;Move Out
+G53 G1 Y175 F50000
diff --git a/rrf2.x/sys/tfree3.g b/rrf2.x/sys/tfree3.g
new file mode 100644
index 0000000000000000000000000000000000000000..1febb5aa3eea99ae25dbce4e63a010d312fd996e
--- /dev/null
+++ b/rrf2.x/sys/tfree3.g
@@ -0,0 +1,27 @@
+; tfree3.g
+; called when tool 3 is freed
+
+;Drop the bed
+G91
+G1 Z4 F1000
+G90
+
+;mesh levelling off
+G29 S2
+
+;Purge nozzle
+;M98 Ppurge.g
+
+;Move In
+G53 G1 X304.5 Y150 F50000
+G53 G1 Y220 F50000
+G53 G1 Y242 F5000
+
+;Open Coupler
+M98 P/macros/Coupler - Unlock
+
+;fan off
+M106 P8 S0
+
+;Move Out
+G53 G1 Y175 F50000
diff --git a/rrf2.x/sys/tpost0.g b/rrf2.x/sys/tpost0.g
new file mode 100644
index 0000000000000000000000000000000000000000..9f33335d43d3f8652b8568cf3b355a8ee43826d1
--- /dev/null
+++ b/rrf2.x/sys/tpost0.g
@@ -0,0 +1,14 @@
+; tpost0.g
+; called after tool 0 has been selected
+
+;heatup
+M116 P0
+
+;prime nozzle
+;M98 Pprime.g
+
+;mesh levelling on
+G29 S1
+
+;PCF fan on
+M106 P2 R2
diff --git a/rrf2.x/sys/tpost1.g b/rrf2.x/sys/tpost1.g
new file mode 100644
index 0000000000000000000000000000000000000000..032a275b4c316619cd4ad4b3306e3ac8015628e3
--- /dev/null
+++ b/rrf2.x/sys/tpost1.g
@@ -0,0 +1,14 @@
+; tpost1.g
+; called after tool 1 has been selected
+
+;heatup
+M116 P1
+
+;prime nozzle
+;M98 Pprime.g
+
+;mesh levelling on
+G29 S1
+
+;PCF fan on
+M106 P4 R2
diff --git a/rrf2.x/sys/tpost2.g b/rrf2.x/sys/tpost2.g
new file mode 100644
index 0000000000000000000000000000000000000000..27a088572b93f3af54d14d61c31c9881bf2a202d
--- /dev/null
+++ b/rrf2.x/sys/tpost2.g
@@ -0,0 +1,14 @@
+; tpost2.g
+; called after tool 2 has been selected
+
+;heatup
+M116 P2
+
+;prime nozzle
+;M98 Pprime.g
+
+;mesh levelling on
+G29 S1
+
+;PCF fan on
+M106 P6 R2
diff --git a/rrf2.x/sys/tpost3.g b/rrf2.x/sys/tpost3.g
new file mode 100644
index 0000000000000000000000000000000000000000..0f5a270a703f841f2e80bb590e238875406a4a15
--- /dev/null
+++ b/rrf2.x/sys/tpost3.g
@@ -0,0 +1,14 @@
+; tpost3.g
+; called after tool 3 has been selected
+
+;heatup
+M116 P3
+
+;prime nozzle
+;M98 Pprime.g
+
+;mesh levelling on
+G29 S1
+
+;PCF fan on
+M106 P8 R2
diff --git a/rrf2.x/sys/tpre0.g b/rrf2.x/sys/tpre0.g
new file mode 100644
index 0000000000000000000000000000000000000000..2d49ba9e59d104c3a879cbd41c7a5e0e1588e9fa
--- /dev/null
+++ b/rrf2.x/sys/tpre0.g
@@ -0,0 +1,27 @@
+; tpre0.g
+; called before tool 0 is selected
+
+;Unlock Coupler
+M98 P/macros/Coupler - Unlock
+
+;Move to location
+G1 X-10.5 Y200 F50000
+
+;Move in
+G1 Y230 F50000
+
+;Collect
+G1 Y242.5 F2500
+
+;Close Coupler
+M98 P/macros/Coupler - Lock
+
+;WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
+;if you are using non-standard length hotends ensure the bed is lowered enough BEFORE undocking the tool!
+G91
+G1 Z10 F1000
+G90
+
+;Move Out
+G1 Y150 F4000
+
diff --git a/rrf2.x/sys/tpre1.g b/rrf2.x/sys/tpre1.g
new file mode 100644
index 0000000000000000000000000000000000000000..872aad229cc890886de490ddf0410dbce264ed24
--- /dev/null
+++ b/rrf2.x/sys/tpre1.g
@@ -0,0 +1,26 @@
+; tpre1.g
+; called before tool 1 is selected
+
+;Unlock Coupler
+M98 P/macros/Coupler - Unlock
+
+;Move to location
+G1 X79.5 Y200 F50000
+
+;Move in
+G1 Y230 F50000
+
+;Collect
+G1 Y242.5 F2500
+
+;Close Coupler
+M98 P/macros/Coupler - Lock
+
+;WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
+;if you are using non-standard length hotends ensure the bed is lowered enough BEFORE undocking the tool!
+G91
+G1 Z10 F1000
+G90
+
+;Move Out
+G1 Y150 F4000
diff --git a/rrf2.x/sys/tpre2.g b/rrf2.x/sys/tpre2.g
new file mode 100644
index 0000000000000000000000000000000000000000..ec04300c882289ddf32911b450cb6449adf50766
--- /dev/null
+++ b/rrf2.x/sys/tpre2.g
@@ -0,0 +1,26 @@
+; tpre2.g
+; called before tool 2 is selected
+
+;Unlock Coupler
+M98 P/macros/Coupler - Unlock
+
+;Move to location
+G1 X214.5 Y200 F50000
+
+;Move in
+G1 Y230 F50000
+
+;Collect
+G1 Y242.5 F2500
+
+;Close Coupler
+M98 P/macros/Coupler - Lock
+
+;WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
+;if you are using non-standard length hotends ensure the bed is lowered enough BEFORE undocking the tool!
+G91
+G1 Z10 F1000
+G90
+
+;Move Out
+G1 Y150 F4000
diff --git a/rrf2.x/sys/tpre3.g b/rrf2.x/sys/tpre3.g
new file mode 100644
index 0000000000000000000000000000000000000000..c594f4e295d3000bda2d8c89577d300c78c20fb5
--- /dev/null
+++ b/rrf2.x/sys/tpre3.g
@@ -0,0 +1,27 @@
+; tpre3.g
+; called before tool 3 is selected
+
+;Unlock Coupler
+M98 P/macros/Coupler - Unlock
+
+;Move to location
+G1 X304.5 Y200 F50000
+
+;Move in
+G1 Y230 F50000
+
+;Collect
+G1 Y242.5 F2500
+
+;Close Coupler
+M98 P/macros/Coupler - Lock
+
+;WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
+;if you are using non-standard length hotends ensure the bed is lowered enough BEFORE undocking the tool!
+G91
+G1 Z10 F1000
+G90
+
+;Move Out
+G1 Y150 F4000
+