diff --git a/fab.dcm b/fab.dcm
index 77156947500288b99c80dbb89f4f9b5e2a3874f1..a1f26bfb5251bd665c902b7faceef1722b75f3c9 100644
--- a/fab.dcm
+++ b/fab.dcm
@@ -18,6 +18,12 @@ K Arduino UNO R3 Microcontroller Module Atmel AVR USB
 F https://www.arduino.cc/en/Main/arduinoBoardUno
 $ENDCMP
 #
+$CMP Arduino_UNO_Shield
+D Arduino UNO Microcontroller Module
+K Arduino UNO R3 Microcontroller Module Atmel AVR USB
+F https://www.arduino.cc/en/Main/arduinoBoardUno
+$ENDCMP
+#
 $CMP BUTTON_B3SN
 D Push button switch, Omron B3SN, Sealed Tactile Switch (SMT), SPST-NO Top Actuated Surface Mount
 K switch normally-open pushbutton push-button button tactile spst single pole single throw
diff --git a/fab.lib b/fab.lib
index 7bb1724cc5cf1841373c6e642ac38888ca93d24d..dbedece6445fe81aa8961e5af370c298ec0d8870 100644
--- a/fab.lib
+++ b/fab.lib
@@ -378,6 +378,53 @@ X A0 9 500 0 100 L 50 50 1 1 B
 ENDDRAW
 ENDDEF
 #
+# Arduino_UNO_Shield
+#
+DEF Arduino_UNO_Shield A 0 20 Y Y 1 F N
+F0 "A" -400 925 50 H V L BNN
+F1 "Arduino_UNO_Shield" 200 -1050 50 H V L TNN
+F2 "fab:Arduino_UNO_Shield" 0 0 50 H I C CIN
+F3 "" 0 0 50 H I C CNN
+$FPLIST
+ Arduino*UNO*R3*
+$ENDFPLIST
+DRAW
+S -400 900 400 -1000 0 1 10 f
+X NC 1 -400 -800 100 R 50 50 1 1 N N
+X A1 10 500 -100 100 L 50 50 1 1 B
+X A2 11 500 -200 100 L 50 50 1 1 B
+X A3 12 500 -300 100 L 50 50 1 1 B
+X SDA/A4 13 500 -400 100 L 50 50 1 1 B
+X SCL/A5 14 500 -500 100 L 50 50 1 1 B
+X D0/RX 15 -500 600 100 R 50 50 1 1 B
+X D1/TX 16 -500 500 100 R 50 50 1 1 B
+X D2 17 -500 400 100 R 50 50 1 1 B
+X D3 18 -500 300 100 R 50 50 1 1 B
+X D4 19 -500 200 100 R 50 50 1 1 B
+X IOREF 2 500 400 100 L 50 50 1 1 O
+X D5 20 -500 100 100 R 50 50 1 1 B
+X D6 21 -500 0 100 R 50 50 1 1 B
+X D7 22 -500 -100 100 R 50 50 1 1 B
+X D8 23 -500 -200 100 R 50 50 1 1 B
+X D9 24 -500 -300 100 R 50 50 1 1 B
+X D10 25 -500 -400 100 R 50 50 1 1 B
+X D11 26 -500 -500 100 R 50 50 1 1 B
+X D12 27 -500 -600 100 R 50 50 1 1 B
+X D13 28 -500 -700 100 R 50 50 1 1 B
+X GND 29 -100 -1100 100 U 50 50 1 1 W
+X ~RESET 3 500 600 100 L 50 50 1 1 I
+X AREF 30 500 200 100 L 50 50 1 1 I
+X SDA/A4 31 500 -700 100 L 50 50 1 1 B
+X SCL/A5 32 500 -800 100 L 50 50 1 1 B
+X 3V3 4 100 1000 100 D 50 50 1 1 w
+X +5V 5 200 1000 100 D 50 50 1 1 w
+X GND 6 0 -1100 100 U 50 50 1 1 W
+X GND 7 100 -1100 100 U 50 50 1 1 W
+X VIN 8 -100 1000 100 D 50 50 1 1 W
+X A0 9 500 0 100 L 50 50 1 1 B
+ENDDRAW
+ENDDEF
+#
 # BUTTON_B3SN
 #
 DEF BUTTON_B3SN SW 0 40 N N 1 F N
@@ -1386,28 +1433,45 @@ ENDDEF
 # Conn_StepStick
 #
 DEF Conn_StepStick J 0 40 Y Y 1 F N
-F0 "J" 100 500 50 H V L CNN
-F1 "Conn_StepStick" 200 -600 50 H V L CNN
-F2 "fab:Conn_StepStick" 200 -700 50 H I L CNN
-F3 "" 0 400 50 H I C CNN
-DRAW
-S -300 -500 300 400 0 1 10 f
-X DIR 1 -400 100 100 R 50 50 1 1 I
-X GND 10 0 -600 100 U 50 50 1 1 W
-X M2B 11 400 0 100 L 50 50 1 1 O
-X M2A 12 400 100 100 L 50 50 1 1 O
-X M1A 13 400 200 100 L 50 50 1 1 O
-X M1B 14 400 300 100 L 50 50 1 1 O
-X VIO 15 -100 500 100 D 50 50 1 1 W
-X GND 16 100 -600 100 U 50 50 1 1 W
-X STEP 2 -400 0 100 R 50 50 1 1 I
-X NC 3 400 -300 100 L 50 50 1 1 N
-X NC 4 400 -400 100 L 50 50 1 1 N
-X CFG3 5 -400 -100 100 R 50 50 1 1 I
-X CFG2 6 -400 -200 100 R 50 50 1 1 I
-X CFG1 7 -400 -300 100 R 50 50 1 1 I
-X EN 8 -400 -400 100 R 50 50 1 1 I
-X VM 9 0 500 100 D 50 50 1 1 W
+F0 "J" 0 500 50 H V C CNN
+F1 "Conn_StepStick" 0 -600 50 H V C CNN
+F2 "fab:Conn_StepStick" 0 -700 50 H I C CNN
+F3 "" -100 400 50 H I C CNN
+DRAW
+C -150 -400 25 0 1 10 N
+C -150 -300 25 0 1 10 N
+C -150 -200 25 0 1 10 N
+C -150 -100 25 0 1 10 N
+C -150 0 25 0 1 10 N
+C -150 100 25 0 1 10 N
+C -150 200 25 0 1 10 N
+C -150 300 25 0 1 10 N
+C 150 -400 25 0 1 10 N
+C 150 -300 25 0 1 10 N
+C 150 -200 25 0 1 10 N
+C 150 -100 25 0 1 10 N
+C 150 0 25 0 1 10 N
+C 150 100 25 0 1 10 N
+C 150 200 25 0 1 10 N
+C 150 300 25 0 1 10 N
+S -400 400 -100 -500 0 1 10 f
+S 400 -500 100 400 0 1 10 f
+X DIR 1 -500 300 100 R 50 50 1 1 I
+X GND 10 500 -300 100 L 50 50 1 1 W
+X M2B 11 500 -200 100 L 50 50 1 1 O
+X M2A 12 500 -100 100 L 50 50 1 1 O
+X M1A 13 500 0 100 L 50 50 1 1 O
+X M1B 14 500 100 100 L 50 50 1 1 O
+X VIO 15 500 200 100 L 50 50 1 1 W
+X GND 16 500 300 100 L 50 50 1 1 W
+X STEP 2 -500 200 100 R 50 50 1 1 I
+X NC 3 -500 100 100 R 50 50 1 1 N
+X NC 4 -500 0 100 R 50 50 1 1 N
+X CFG3 5 -500 -100 100 R 50 50 1 1 I
+X CFG2 6 -500 -200 100 R 50 50 1 1 I
+X CFG1 7 -500 -300 100 R 50 50 1 1 I
+X EN 8 -500 -400 100 R 50 50 1 1 I
+X VM 9 500 -400 100 L 50 50 1 1 W
 ENDDRAW
 ENDDEF
 #
diff --git a/fab.pretty/Arduino_UNO_Shield.kicad_mod b/fab.pretty/Arduino_UNO_Shield.kicad_mod
new file mode 100644
index 0000000000000000000000000000000000000000..f986d611836d6cd60fc4523bff6f49d423a8a922
--- /dev/null
+++ b/fab.pretty/Arduino_UNO_Shield.kicad_mod
@@ -0,0 +1,55 @@
+(module Arduino_UNO_Shield (layer F.Cu) (tedit 60635D5D)
+  (descr "Arduino UNO R3, http://www.mouser.com/pdfdocs/Gravitech_Arduino_Nano3_0.pdf")
+  (tags "Arduino UNO R3")
+  (fp_text reference REF** (at 0 17.78 180) (layer F.SilkS)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_text value Arduino_UNO_Shield (at 0 22.86) (layer F.Fab)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_text user %R (at 0 20.32 180) (layer F.Fab)
+    (effects (font (size 1 1) (thickness 0.15)))
+  )
+  (fp_line (start -1.27 -1.27) (end 36.83 -1.27) (layer F.Fab) (width 0.12))
+  (fp_line (start 36.83 -1.27) (end 36.83 49.53) (layer F.Fab) (width 0.12))
+  (fp_line (start 36.83 49.53) (end -11.43 49.53) (layer F.Fab) (width 0.12))
+  (fp_line (start -11.43 49.53) (end -11.43 8.89) (layer F.Fab) (width 0.12))
+  (fp_line (start -11.43 8.89) (end -1.27 -1.27) (layer F.Fab) (width 0.12))
+  (pad 1 thru_hole rect (at 0 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 17 thru_hole oval (at 30.48 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 2 thru_hole oval (at 2.54 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 18 thru_hole oval (at 27.94 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 3 thru_hole oval (at 5.08 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 19 thru_hole oval (at 25.4 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 4 thru_hole oval (at 7.62 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 20 thru_hole oval (at 22.86 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 5 thru_hole oval (at 10.16 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 21 thru_hole oval (at 20.32 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 6 thru_hole oval (at 12.7 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 22 thru_hole oval (at 17.78 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 7 thru_hole oval (at 15.24 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 8 thru_hole oval (at 17.78 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 9 thru_hole oval (at 22.86 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 10 thru_hole oval (at 25.4 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 11 thru_hole oval (at 27.94 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 12 thru_hole oval (at 30.48 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 13 thru_hole oval (at 33.02 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 14 thru_hole oval (at 35.56 0 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 15 thru_hole oval (at 35.56 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 16 thru_hole oval (at 33.02 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 29 thru_hole oval (at -2.536 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 31 thru_hole oval (at -7.616 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 32 thru_hole oval (at -10.156 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 27 thru_hole oval (at 2.544 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 24 thru_hole oval (at 10.164 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 28 thru_hole oval (at 0.004 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 25 thru_hole oval (at 7.624 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 26 thru_hole oval (at 5.084 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 23 thru_hole oval (at 12.704 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (pad 30 thru_hole oval (at -5.076 48.26 90) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
+  (model ${KISYS3DMOD}/Module.3dshapes/Arduino_UNO_R3_WithMountingHoles.wrl
+    (at (xyz 0 0 0))
+    (scale (xyz 1 1 1))
+    (rotate (xyz 0 0 0))
+  )
+)