diff --git a/src/functions.scad b/src/functions.scad
index 56907ee..47f5751 100644
--- a/src/functions.scad
+++ b/src/functions.scad
@@ -1,4 +1,5 @@
 include <constants.scad>
+include <settings.scad>
 
 // I use functions when I need to compute special variables off of other special variables
 // functions need to be explicitly included, unlike special variables, which
diff --git a/src/key_profiles/asa.scad b/src/key_profiles/asa.scad
index 691c119..8bf8e67 100644
--- a/src/key_profiles/asa.scad
+++ b/src/key_profiles/asa.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 module asa_row(row=3, column = 0) {
   $key_shape_type = "sculpted_square";
   $bottom_key_height = 18.06;
diff --git a/src/key_profiles/cherry.scad b/src/key_profiles/cherry.scad
index fb5950f..8a11a8a 100644
--- a/src/key_profiles/cherry.scad
+++ b/src/key_profiles/cherry.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 // based off GMK keycap set
 
 module cherry_row(row=3, column=0) {
diff --git a/src/key_profiles/dcs.scad b/src/key_profiles/dcs.scad
index 4e6e461..646d07f 100644
--- a/src/key_profiles/dcs.scad
+++ b/src/key_profiles/dcs.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 module dcs_row(row=3, column=0) {
   $bottom_key_width = 18.16;
   $bottom_key_height = 18.16;
diff --git a/src/key_profiles/dsa.scad b/src/key_profiles/dsa.scad
index 51ffa3e..797c804 100644
--- a/src/key_profiles/dsa.scad
+++ b/src/key_profiles/dsa.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 module dsa_row(row=3, column = 0) {
   $key_shape_type = "sculpted_square";
   $bottom_key_width = 18.24; // 18.4;
diff --git a/src/key_profiles/dss.scad b/src/key_profiles/dss.scad
index 26f521a..54269ba 100644
--- a/src/key_profiles/dss.scad
+++ b/src/key_profiles/dss.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 module dss_row(n=3, column=0) {
   $key_shape_type = "sculpted_square";
   $bottom_key_width = 18.24;
diff --git a/src/key_profiles/g20.scad b/src/key_profiles/g20.scad
index 794da41..7f912aa 100644
--- a/src/key_profiles/g20.scad
+++ b/src/key_profiles/g20.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 module g20_row(row=3, column = 0) {
   $bottom_key_width = 18.16;
   $bottom_key_height = 18.16;
diff --git a/src/key_profiles/grid.scad b/src/key_profiles/grid.scad
index c81be46..86f1096 100644
--- a/src/key_profiles/grid.scad
+++ b/src/key_profiles/grid.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 module grid_row(row=3, column = 0) {
   $bottom_key_width = 18.16;
   $bottom_key_height = 18.16;
diff --git a/src/key_profiles/hipro.scad b/src/key_profiles/hipro.scad
index 1401dc9..87d8b9b 100644
--- a/src/key_profiles/hipro.scad
+++ b/src/key_profiles/hipro.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 module hipro_row(row=3, column=0) {
   $key_shape_type = "sculpted_square";
 
diff --git a/src/key_profiles/mt3.scad b/src/key_profiles/mt3.scad
index fdcd728..3043020 100644
--- a/src/key_profiles/mt3.scad
+++ b/src/key_profiles/mt3.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 // This is an imperfect attempt to clone the MT3 profile
 module mt3_row(row=3, column=0, deep_dish=false) {
   $key_shape_type = "sculpted_square";
diff --git a/src/key_profiles/oem.scad b/src/key_profiles/oem.scad
index 7594991..0011d3a 100644
--- a/src/key_profiles/oem.scad
+++ b/src/key_profiles/oem.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 module oem_row(row=3, column = 0) {
   $bottom_key_width = 18.05;
   $bottom_key_height = 18.05;
diff --git a/src/key_profiles/regular_polygon.scad b/src/key_profiles/regular_polygon.scad
index 2f93ca9..9297ac2 100644
--- a/src/key_profiles/regular_polygon.scad
+++ b/src/key_profiles/regular_polygon.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+include <../settings.scad>
 include <../constants.scad>
 // Regular polygon shapes CIRCUMSCRIBE the sphere of diameter $bottom_key_width
 // This is to make tiling them easier, like in the case of hexagonal keycaps etc
diff --git a/src/key_profiles/sa.scad b/src/key_profiles/sa.scad
index 9e741db..8176fbc 100644
--- a/src/key_profiles/sa.scad
+++ b/src/key_profiles/sa.scad
@@ -1,3 +1,6 @@
+use <../functions.scad>
+include <../settings.scad>
+
 module sa_row(n=3, column=0) {
   $key_shape_type = "sculpted_square";
   $bottom_key_width = 18.4;
diff --git a/src/key_profiles/typewriter.scad b/src/key_profiles/typewriter.scad
index 7bac0a0..ed022bc 100644
--- a/src/key_profiles/typewriter.scad
+++ b/src/key_profiles/typewriter.scad
@@ -1,3 +1,5 @@
+use <../functions.scad>
+include <../settings.scad>
 include <../constants.scad>
 // Regular polygon shapes CIRCUMSCRIBE the sphere of diameter $bottom_key_width
 // This is to make tiling them easier, like in the case of hexagonal keycaps etc
diff --git a/src/key_types.scad b/src/key_types.scad
index a6c1ab6..55d7cb6 100644
--- a/src/key_types.scad
+++ b/src/key_types.scad
@@ -1,4 +1,6 @@
 include <functions.scad>
+use <key_sizes.scad>
+use <key_transformations.scad>
 
 module spacebar() {
   $inverted_dish = $dish_type != "disable";
diff --git a/src/layouts/hhkb/default.scad b/src/layouts/hhkb/default.scad
new file mode 100644
index 0000000..43611a3
--- /dev/null
+++ b/src/layouts/hhkb/default.scad
@@ -0,0 +1,21 @@
+include <../layout.scad>
+
+hhkb_layout = [
+  [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
+  [1.5,1,1,1,1,1,1,1,1,1,1,1,1,1.5],
+  [1.75,1,1,1,1,1,1,1,1,1,1,1,2.25],
+  [2.25,1,1,1,1,1,1,1,1,1,1,1.75,1],
+  [-1.5,1,1.5,6,1.5,1]
+];
+
+hhkb_legends = [
+  ["Esc", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "\\", "`"],
+  ["Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "Delete"],
+  ["Ctrl", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Return"],
+  ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift", "Fn"],
+  ["", "Alt", "Cmd", "", "Cmd", "Alt"],
+];
+
+module hhkb_default(profile) {
+  layout(hhkb_layout, profile, hhkb_legends) children();
+}
diff --git a/src/layouts/layout.scad b/src/layouts/layout.scad
index cd3c9c2..51648e4 100644
--- a/src/layouts/layout.scad
+++ b/src/layouts/layout.scad
@@ -1,3 +1,8 @@
+use <../key_transformations.scad>
+use <../key_profiles.scad>
+use <../key_sizes.scad>
+use <../key_types.scad>
+
 // sums all values, unless a value is negative, in which case it makes it positive
 // dirty hack to allow for large gaps in keysets
 function abs_sum(list, x=0) =