diff --git a/functional/switch-plates/chandelier-icon.svg b/functional/switch-plates/chandelier-icon.svg
new file mode 100644
index 0000000..0c063b8
--- /dev/null
+++ b/functional/switch-plates/chandelier-icon.svg
@@ -0,0 +1,211 @@
+
+
+
+
diff --git a/functional/switch-plates/dishwasher-icon.svg b/functional/switch-plates/dishwasher-icon.svg
new file mode 100644
index 0000000..204f134
--- /dev/null
+++ b/functional/switch-plates/dishwasher-icon.svg
@@ -0,0 +1,61 @@
+
+
+
+
diff --git a/functional/switch-plates/disposal-icon.svg b/functional/switch-plates/disposal-icon.svg
new file mode 100644
index 0000000..7c6b159
--- /dev/null
+++ b/functional/switch-plates/disposal-icon.svg
@@ -0,0 +1,86 @@
+
+
+
+
diff --git a/functional/switch-plates/exterior-lights-icon.svg b/functional/switch-plates/exterior-lights-icon.svg
new file mode 100644
index 0000000..93e46d3
--- /dev/null
+++ b/functional/switch-plates/exterior-lights-icon.svg
@@ -0,0 +1,73 @@
+
+
+
+
diff --git a/functional/switch-plates/garage-switch-plate.3mf b/functional/switch-plates/garage-switch-plate.3mf
new file mode 100644
index 0000000..e75b8cb
Binary files /dev/null and b/functional/switch-plates/garage-switch-plate.3mf differ
diff --git a/functional/switch-plates/kitchen-sink-switch-plates.3mf b/functional/switch-plates/kitchen-sink-switch-plates.3mf
new file mode 100644
index 0000000..b4bc854
Binary files /dev/null and b/functional/switch-plates/kitchen-sink-switch-plates.3mf differ
diff --git a/functional/switch-plates/laundry-room-switch-plate.3mf b/functional/switch-plates/laundry-room-switch-plate.3mf
new file mode 100644
index 0000000..dab7fbf
Binary files /dev/null and b/functional/switch-plates/laundry-room-switch-plate.3mf differ
diff --git a/functional/switch-plates/lightbulb-regular-full.svg b/functional/switch-plates/lightbulb-regular-full.svg
new file mode 100644
index 0000000..aae590b
--- /dev/null
+++ b/functional/switch-plates/lightbulb-regular-full.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/functional/switch-plates/outlet-icon.svg b/functional/switch-plates/outlet-icon.svg
new file mode 100644
index 0000000..9f898ba
--- /dev/null
+++ b/functional/switch-plates/outlet-icon.svg
@@ -0,0 +1,87 @@
+
+
+
+
diff --git a/functional/switch-plates/paddle-plate-dynamic.scad b/functional/switch-plates/paddle-plate-dynamic.scad
new file mode 100644
index 0000000..c6e5ff6
--- /dev/null
+++ b/functional/switch-plates/paddle-plate-dynamic.scad
@@ -0,0 +1,43 @@
+include <../../lib/chamfered-cube.scad>
+
+numPaddles = 4;
+
+// All units in millimeters
+//
+// screw distance (on center), horizontal and vertical
+screwDX = 45;
+screwDY = 82;
+
+// paddle size
+pX = 33.7;
+pY = 66.3;
+
+// inter-switch distance (horizontal)
+interX = 12;
+
+// plate side size (square)
+sideX = pX*numPaddles + interX*(numPaddles - 1) + 64;
+sideY = 120;
+
+pDepth = 6;
+backingDepth = 2;
+tDepth = pDepth + backingDepth;
+
+pOffsetX = 32;
+pOffsetY = (sideY - pY)/2;
+
+difference() {
+ translate([0, 0, -2])
+ chamferedCube([sideX, sideY, tDepth - 3 + 2], chamfer=2);
+
+ // bottom flush cut
+ translate([-10, -10, -4]) cube([sideX + 20, sideY + 20, 4]);
+
+ // paddle cutouts
+ for (i = [0:numPaddles - 1]) {
+ translate([pOffsetX + (pX + interX)*i, pOffsetY, -2]) cube([pX, pY, tDepth + 4]);
+ }
+
+ // interior-space carve-out
+ translate([4, 4, -2]) chamferedCube([sideX - 8, sideY - 8, tDepth - 5 + 2]);
+}
diff --git a/functional/switch-plates/stair-lights-icon.svg b/functional/switch-plates/stair-lights-icon.svg
new file mode 100644
index 0000000..94c1c70
--- /dev/null
+++ b/functional/switch-plates/stair-lights-icon.svg
@@ -0,0 +1,100 @@
+
+
+
+
diff --git a/functional/switch-plates/two-gang-paddle-plates.scad b/functional/switch-plates/two-gang-paddle-plates.scad
new file mode 100644
index 0000000..1cefba5
--- /dev/null
+++ b/functional/switch-plates/two-gang-paddle-plates.scad
@@ -0,0 +1,40 @@
+include <../../lib/chamfered-cube.scad>
+
+// All units in millimeters
+//
+// screw distance (on center), horizontal and vertical
+screwDX = 45;
+screwDY = 82;
+
+// paddle size
+pX = 33.7;
+pY = 66.3;
+
+// inter-switch distance (horizontal)
+interX = 12;
+
+// plate side size (square_
+side = 120;
+
+pDepth = 6;
+backingDepth = 2;
+tDepth = pDepth + backingDepth;
+
+pOffsetX = (side - 2*pX - interX)/2;
+pOffsetY = (side - pY)/2;
+
+difference() {
+ translate([0, 0, -2])
+ chamferedCube([side, side, tDepth - 3 + 2], chamfer=2);
+
+ // bottom flush cut
+ translate([-10, -10, -4]) cube([side + 20, side + 20, 4]);
+
+ // paddle cutouts
+ for (i = [0, 1]) {
+ translate([pOffsetX + (pX + interX)*i, pOffsetY, -2]) cube([pX, pY, tDepth + 4]);
+ }
+
+ // interior-space carve-out
+ translate([4, 4, -2]) chamferedCube([side - 8, side - 8, tDepth - 5 + 2]);
+}