diff --git a/rrf3.x/sys/bed.g b/rrf3.x/sys/bed.g
new file mode 100644
index 0000000000000000000000000000000000000000..53081bd8447653b419a74bd7adcbf0a9dcd818fd
--- /dev/null
+++ b/rrf3.x/sys/bed.g
@@ -0,0 +1,11 @@
+; Bed Mesh Leveling
+
+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/rrf3.x/sys/brush.g b/rrf3.x/sys/brush.g
new file mode 100644
index 0000000000000000000000000000000000000000..dae40ba54e4ecf5e643ed5d25c5561ad03946b06
--- /dev/null
+++ b/rrf3.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/rrf3.x/sys/cancel.g b/rrf3.x/sys/cancel.g
new file mode 100644
index 0000000000000000000000000000000000000000..1dc65871aacebfbc84c609ebdf82792bcd110af5
--- /dev/null
+++ b/rrf3.x/sys/cancel.g
@@ -0,0 +1,6 @@
+; purge tool
+;M98 P"purge.g"
+
+; park tool
+T-1
+
diff --git a/rrf3.x/sys/homeall.g b/rrf3.x/sys/homeall.g
new file mode 100644
index 0000000000000000000000000000000000000000..e0010d0e0c9cfab37526c8422aef1e03d13d6b78
--- /dev/null
+++ b/rrf3.x/sys/homeall.g
@@ -0,0 +1,12 @@
+; homeall.g
+; called to home all axes
+
+M98 P"homec.g"			; Home C (ToolHead)
+
+M98 P"homey.g"			; Home Y
+
+M98 P"homex.g"			; Home X
+
+M98 P"homez.g"			; Home Z
+
+G1 X150 Y-49 F15000		; Park
\ No newline at end of file
diff --git a/rrf3.x/sys/homec.g b/rrf3.x/sys/homec.g
new file mode 100644
index 0000000000000000000000000000000000000000..a315ae161851dbacfd5ae20a7aba4542d4dde78c
--- /dev/null
+++ b/rrf3.x/sys/homec.g
@@ -0,0 +1,17 @@
+; homec.g
+; called to home the C axis (coupler)
+
+G91
+M400
+;M913 C60					; XY MOTORS TO 60% CURRENT
+;G1 H2 C30 F5000
+;M400
+M913 C60					; XY MOTORS TO 60% CURRENT
+G1 H2 C-1000 F10000
+G92 C-125
+G90
+M913 C100					; XY MOTORS TO 100% CURRENT
+G1 C0 F10000
+
+;Open Coupler
+M98 P"/macros/Coupler - Unlock"
\ No newline at end of file
diff --git a/rrf3.x/sys/homex.g b/rrf3.x/sys/homex.g
new file mode 100644
index 0000000000000000000000000000000000000000..98da700867fcf5e2767dcd0155bb958a75e8ed48
--- /dev/null
+++ b/rrf3.x/sys/homex.g
@@ -0,0 +1,19 @@
+; homex.g
+; called to home the x axis
+
+G91 							; use relative positioning
+
+G1 H2 X0.5 Y-0.5 F10000			; energise motors to ensure they are not stalled
+
+M400 							; make sure everything has stopped before we change the motor currents
+M913 X20 Y20 					; drop motor currents to 25%
+M915 H200 X Y S3 R0 F0 			; set X and Y to sensitivity 3, do nothing when stall, unfiltered
+
+G1 H2 Z3 F5000					; lift Z 3mm
+G1 H1 X-400 F3000 				; move left 400mm, stopping at the endstop
+G1 H1 X2 F2000 					; move away from end
+G1 H2 Z-3 F1200					; lower Z
+G90 							; back to absolute positioning
+
+M400 							; make sure everything has stopped before we reset the motor currents
+M913 X100 Y100 					; motor currents back to 100%
diff --git a/rrf3.x/sys/homey.g b/rrf3.x/sys/homey.g
new file mode 100644
index 0000000000000000000000000000000000000000..98bb70fa5464ab63c3574e4e870fb3ab6b9b4680
--- /dev/null
+++ b/rrf3.x/sys/homey.g
@@ -0,0 +1,19 @@
+; homey.g
+; called to home the Y axis
+
+G91 						; use relative positioning
+
+G1 H2 X0.5 Y-0.5 F10000		; energise motors to ensure they are not stalled
+
+M400 						; make sure everything has stopped before we change the motor currents
+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 H2 Z3 F5000				; lift Z 3mm
+G1 H1 Y-400 F3000 			; move to the front 400mm, stopping at the endstop
+G1 H1 Y2 F2000 				; move away from end
+G1 H2 Z-3 F1200				; lower Z
+G90 						; back to absolute positioning
+
+M400 						; make sure everything has stopped before we reset the motor currents
+M913 X100 Y100 				; motor currents back to 100%
diff --git a/rrf3.x/sys/homez.g b/rrf3.x/sys/homez.g
new file mode 100644
index 0000000000000000000000000000000000000000..bb8cacb8638de20ef314c43d3beb475956b2c535
--- /dev/null
+++ b/rrf3.x/sys/homez.g
@@ -0,0 +1,16 @@
+; homez.g
+; called to home the Z axis
+
+M98 P"/macros/Coupler - Unlock"	; Open Coupler
+
+G91 							; Relative mode
+G1 H2 Z5 F5000					; Lower the bed
+G90								; back to absolute positioning
+
+G1 X150 Y100 F50000				; Position the endstop above the bed centre
+
+M558 F1000
+G30
+M558 F300
+G30
+
diff --git a/rrf3.x/sys/pause.g b/rrf3.x/sys/pause.g
new file mode 100644
index 0000000000000000000000000000000000000000..d656a963c83a222ef0b5a936fb653aeb67b5b402
--- /dev/null
+++ b/rrf3.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/rrf3.x/sys/prime.g b/rrf3.x/sys/prime.g
new file mode 100644
index 0000000000000000000000000000000000000000..fde98ec745c9d574de148fb7854797b81b250666
--- /dev/null
+++ b/rrf3.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/rrf3.x/sys/purge.g b/rrf3.x/sys/purge.g
new file mode 100644
index 0000000000000000000000000000000000000000..15b476c5b68aa8f9dad432edb5f9583cfeb17478
--- /dev/null
+++ b/rrf3.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/rrf3.x/sys/resume.g b/rrf3.x/sys/resume.g
new file mode 100644
index 0000000000000000000000000000000000000000..747272aedb50024d2175fcf2ee88e51269f936bb
--- /dev/null
+++ b/rrf3.x/sys/resume.g
@@ -0,0 +1,7 @@
+; Resume macro file
+; TODO do a prime/wipe cycle here to get rid of any filament that has oozed out
+
+G1 R1 X0 Y0 Z2 F5000 		; go to 5mm above position of the last print move
+G1 R1 X0 Y0 Z0 				; go back to the last print move
+M83 						; relative extruder moves
+G1 E3 F3600 				; extrude 3mm of filament
\ No newline at end of file
diff --git a/rrf3.x/sys/sleep.g b/rrf3.x/sys/sleep.g
new file mode 100644
index 0000000000000000000000000000000000000000..476d276369b179f039e88c04e2369a3f825480d8
--- /dev/null
+++ b/rrf3.x/sys/sleep.g
@@ -0,0 +1,2 @@
+; sleep.g
+; called when M1 (Sleep) is being processed
diff --git a/rrf3.x/sys/stop.g b/rrf3.x/sys/stop.g
new file mode 100644
index 0000000000000000000000000000000000000000..f963dd40597617302a4889633f4335eef75529a2
--- /dev/null
+++ b/rrf3.x/sys/stop.g
@@ -0,0 +1,2 @@
+; stop.g
+; called when M0 (Stop) is run (e.g. when a print from SD card is cancelled)
diff --git a/rrf3.x/sys/tfree0.g b/rrf3.x/sys/tfree0.g
new file mode 100644
index 0000000000000000000000000000000000000000..2939d2d9624fb5d25c8900ccbc87a80dea404add
--- /dev/null
+++ b/rrf3.x/sys/tfree0.g
@@ -0,0 +1,25 @@
+; tfree0.g
+; called when tool 0 is freed
+
+;Drop the bed
+G91
+G1 Z4 F1000
+G90
+
+;Purge nozzle
+;M98 P"purge.g"
+
+;Move In
+G53 G1 X-10.5 Y150 F50000
+G53 G1 X-10.5 Y200 F50000
+G53 G1 X-10.5 Y220 F50000
+G53 G1 X-10.5 Y242 F5000
+
+;Open Coupler
+M98 P"/macros/Coupler - Unlock"
+
+;fan off
+M106 P2 S0
+
+;Move Out
+G53 G1 X-10.5 Y175 F50000
diff --git a/rrf3.x/sys/tfree1.g b/rrf3.x/sys/tfree1.g
new file mode 100644
index 0000000000000000000000000000000000000000..cb2037bed10fc7c5add37c65547f5868fb757be7
--- /dev/null
+++ b/rrf3.x/sys/tfree1.g
@@ -0,0 +1,26 @@
+; tfree1.g
+; called when tool 1 is freed
+
+;Drop the bed
+G91
+G1 Z4 F1000
+G90
+
+;Purge nozzle
+;M98 P"purge.g"
+
+;Move In
+G53 G1 X79.5 Y150 F50000
+G53 G1 X79.5 Y200 F50000
+G53 G1 X79.5 Y220 F50000
+G53 G1 X79.5 Y242 F5000
+
+;Open Coupler
+M98 P"/macros/Coupler - Unlock"
+
+;fan off
+M106 P4 S0
+
+;Move Out
+G53 G1 X79.5 Y175 F50000
+
diff --git a/rrf3.x/sys/tfree2.g b/rrf3.x/sys/tfree2.g
new file mode 100644
index 0000000000000000000000000000000000000000..588f0d5ae162494e7334daf4ae1728fc3bfc6dd2
--- /dev/null
+++ b/rrf3.x/sys/tfree2.g
@@ -0,0 +1,26 @@
+; tfree2.g
+; called when tool 2 is freed
+
+;Drop the bed
+G91
+G1 Z4 F1000
+G90
+
+;Purge nozzle
+;M98 P"purge.g"
+
+;Move In
+G53 G1 X214.5 Y150 F50000
+G53 G1 X214.5 Y200 F50000
+G53 G1 X214.5 Y220 F50000
+G53 G1 X214.5 Y243 F5000
+
+;Open Coupler
+M98 P/macros/Coupler - Unlock
+
+;fan off
+M106 P6 S0
+
+;Move Out
+G53 G1 X214.5 Y175 F50000
+
diff --git a/rrf3.x/sys/tfree3.g b/rrf3.x/sys/tfree3.g
new file mode 100644
index 0000000000000000000000000000000000000000..b951dbe2994f89d4b8b9afb645f1a54ef8553eca
--- /dev/null
+++ b/rrf3.x/sys/tfree3.g
@@ -0,0 +1,26 @@
+; tfree3.g
+; called when tool 3 is freed
+
+;Drop the bed
+G91
+G1 Z4 F1000
+G90
+
+;Purge nozzle
+;M98 P"purge.g"
+
+;Move In
+G53 G1 X304.5 Y150 F50000
+G53 G1 X304.5 Y200 F50000
+G53 G1 X304.5 Y220 F50000
+G53 G1 X304.5 Y243 F5000
+
+;Open Coupler
+M98 P"/macros/Coupler - Unlock"
+
+;fan off
+M106 P8 S0
+
+;Move Out
+G53 G1 X304.5 Y175 F50000
+
diff --git a/rrf3.x/sys/tpost0.g b/rrf3.x/sys/tpost0.g
new file mode 100644
index 0000000000000000000000000000000000000000..a1a98884f800ae6a0f5165c7a51c9d3f4dc741d6
--- /dev/null
+++ b/rrf3.x/sys/tpost0.g
@@ -0,0 +1,10 @@
+; tpost0.g
+; called after tool 0 has been selected
+
+;heatup
+M116 P0
+
+;prime nozzle
+;M98 P"prime.g"
+
+M106 R1	; restore print cooling fan speed
\ No newline at end of file
diff --git a/rrf3.x/sys/tpost1.g b/rrf3.x/sys/tpost1.g
new file mode 100644
index 0000000000000000000000000000000000000000..6986d1f3d7e76b8a402bdd7cc60c2cb68e8b8876
--- /dev/null
+++ b/rrf3.x/sys/tpost1.g
@@ -0,0 +1,10 @@
+; tpost1.g
+; called after tool 1 has been selected
+
+;heatup
+M116 P1
+
+;prime nozzle
+;M98 P"prime.g"
+
+M106 R1	; restore print cooling fan speed
\ No newline at end of file
diff --git a/rrf3.x/sys/tpost2.g b/rrf3.x/sys/tpost2.g
new file mode 100644
index 0000000000000000000000000000000000000000..d36304351e0675e62c1771f2b7eea15ab4f6fe5e
--- /dev/null
+++ b/rrf3.x/sys/tpost2.g
@@ -0,0 +1,10 @@
+; tpost2.g
+; called after tool 2 has been selected
+
+;heatup
+M116 P2
+
+;prime nozzle
+;M98 P"prime.g"
+
+M106 R1	; restore print cooling fan speed
\ No newline at end of file
diff --git a/rrf3.x/sys/tpost3.g b/rrf3.x/sys/tpost3.g
new file mode 100644
index 0000000000000000000000000000000000000000..451872334a11969dbbfdba5ec0f1941080f1a2e7
--- /dev/null
+++ b/rrf3.x/sys/tpost3.g
@@ -0,0 +1,10 @@
+; tpost3.g
+; called after tool 3 has been selected
+
+;heatup
+M116 P3
+
+;prime nozzle
+;M98 P"prime.g"
+
+M106 R1	; restore print cooling fan speed
\ No newline at end of file
diff --git a/rrf3.x/sys/tpre0.g b/rrf3.x/sys/tpre0.g
new file mode 100644
index 0000000000000000000000000000000000000000..ddcc06034943e07653e96e442d31f6f4a9ec36d1
--- /dev/null
+++ b/rrf3.x/sys/tpre0.g
@@ -0,0 +1,28 @@
+; 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 X-10.5 Y230 F50000
+
+;Collect
+G1 X-10.5 Y242 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 X-10.5 Y150 F4000
+
+
diff --git a/rrf3.x/sys/tpre1.g b/rrf3.x/sys/tpre1.g
new file mode 100644
index 0000000000000000000000000000000000000000..ec74f9656b2422009e5f0a7d44af3f9779452691
--- /dev/null
+++ b/rrf3.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 X79.5 Y230 F50000
+
+;Collect
+G1 X79.5 Y242 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 X79.5 Y150 F4000
diff --git a/rrf3.x/sys/tpre2.g b/rrf3.x/sys/tpre2.g
new file mode 100644
index 0000000000000000000000000000000000000000..3318998c3692f2691fcf70099bd83308ec2aa9a2
--- /dev/null
+++ b/rrf3.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 X214.5 Y230 F50000
+
+;Collect
+G1 X214.5 Y243 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 X214.5 Y150 F4000
diff --git a/rrf3.x/sys/tpre3.g b/rrf3.x/sys/tpre3.g
new file mode 100644
index 0000000000000000000000000000000000000000..b300f24e00ce8f12ea130e2931cb9a31500daf0d
--- /dev/null
+++ b/rrf3.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 X304.5 Y230 F50000
+
+;Collect
+G1 X304.5 Y243 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 X304.5 Y150 F4000
+