diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 0b5ed9b..8194def 120000
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1 +1 @@
-/nix/store/gnnangzf73g2b665rmhwblqydx18hjlm-pre-commit-config.json
\ No newline at end of file
+/nix/store/i4wcn83p1273vgv0nggpdbjqppq33aj7-pre-commit-config.json
\ No newline at end of file
diff --git a/assets/3d/macg/macgregor-house-small.mtl b/assets/3d/macg/macgregor-house-small.mtl
index 3af486a..2a459c3 100644
--- a/assets/3d/macg/macgregor-house-small.mtl
+++ b/assets/3d/macg/macgregor-house-small.mtl
@@ -1,23 +1,22 @@
 # File generated by ImageToStl.com - Free Image and 3D model conversion tools
-
-newmtl mat0
-Ns 0
-Ka 1.0 1.0 1.0
-Kd 1 1 1
-Ks 0.5 0.5 0.5
-Ke 0.0 0.0 0.0
-Ni 1.0
-d 1
-illum 2
-map_Kd image0.jpg
-
-newmtl mat1
-Ns 250
-Ka 1.0 1.0 1.0
-Kd 0.85 0.85 0.85
-Ks 0 0 0
-Ke 0.0 0.0 0.0
-Ni 1.0
-d 1
-illum 1
-
+
+newmtl mat0
+Ns 0
+Ka 1.0 1.0 1.0
+Kd 1 1 1
+Ks 0.5 0.5 0.5
+Ke 0.0 0.0 0.0
+Ni 1.0
+d 1
+illum 2
+map_Kd image0.jpg
+
+newmtl mat1
+Ns 250
+Ka 1.0 1.0 1.0
+Kd 0.85 0.85 0.85
+Ks 0 0 0
+Ke 0.0 0.0 0.0
+Ni 1.0
+d 1
+illum 1
diff --git a/assets/3d/macg/macgregor.obj.txt b/assets/3d/macg/macgregor.obj.txt
index 3bcc644..02978c6 100644
--- a/assets/3d/macg/macgregor.obj.txt
+++ b/assets/3d/macg/macgregor.obj.txt
@@ -1,8 +1,8 @@
 # File generated by ImageToStl.com - Free Image and 3D model conversion tools
-
+
 mtllib macgregor-house-small.mtl
-
-o obj1
+
+o obj1
 v 6.99733782 0.7718941 -1.403813
 v 7.00312424 0.90331137 -1.51566327
 v 6.94897127 0.78414452 -1.4061693
@@ -12391,7 +12391,7 @@ v -1.92772186 0.24301776 2.20139146
 v -1.83480656 0.25754747 2.74132562
 v -1.81908894 0.30697498 2.90867138
 v -1.72756016 0.3016282 2.98445988
-v -1.80337191 0.35331592 3.07601786
+v -1.80337191 0.35331592 3.07601786
 vn 0.15697 0.74455 0.64885
 vn 0.43948 0.58938 0.67786
 vn 0.55223 0.52498 0.64764
@@ -24756,7 +24756,7 @@ vn -0.01498 0.99934 0.03295
 vn -0.03492 0.98954 -0.13997
 vn 0.1267 0.96206 -0.24162
 vn 0.07713 0.97309 -0.21715
-vn 0.16107 0.93316 -0.32135
+vn 0.16107 0.93316 -0.32135
 vt 0.9659 0.17324
 vt 0.96741 0.17525
 vt 0.96534 0.17394
@@ -37145,8 +37145,8 @@ vt 0.56577 0.49388
 vt 0.56453 0.48416
 vt 0.56379 0.48117
 vt 0.56497 0.47937
-vt 0.56304 0.47817
-usemtl mat0
+vt 0.56304 0.47817
+usemtl mat0
 f 1/1/1 2/2/2 3/3/3
 f 3/3/3 2/2/2 4/4/4
 f 2/2/2 5/5/5 4/4/4
@@ -57384,5 +57384,4 @@ f 11642/11642/11624 11650/11650/11632 12387/12387/12363
 f 12387/12387/12363 12389/12389/12365 12388/12388/12364
 f 11650/11650/11632 12389/12389/12365 12387/12387/12363
 f 12388/12388/12364 12389/12389/12365 12104/12104/12086
-# Vertices: 12389, normals: 12365, texture coordinates: 12389, faces: 20237
-
+# Vertices: 12389, normals: 12365, texture coordinates: 12389, faces: 20237
diff --git a/elm.json b/elm.json
index 364d9f1..3b4f581 100644
--- a/elm.json
+++ b/elm.json
@@ -1,44 +1,44 @@
 {
-    "type": "application",
-    "source-directories": [
-        "src"
-    ],
-    "elm-version": "0.19.1",
-    "dependencies": {
-        "direct": {
-            "andrewMacmurray/elm-simple-animation": "2.3.2",
-            "avh4/elm-color": "1.0.0",
-            "elm/browser": "1.0.2",
-            "elm/core": "1.0.5",
-            "elm/html": "1.0.0",
-            "elm/http": "2.0.0",
-            "elm/time": "1.0.0",
-            "elm-explorations/webgl": "1.1.3",
-            "ianmackenzie/elm-3d-camera": "3.1.0",
-            "ianmackenzie/elm-3d-scene": "1.0.2",
-            "ianmackenzie/elm-geometry": "3.11.0",
-            "ianmackenzie/elm-triangular-mesh": "1.1.0",
-            "ianmackenzie/elm-units": "2.10.0",
-            "mdgriffith/elm-ui": "1.1.8",
-            "w0rm/elm-obj-file": "1.2.1"
-        },
-        "indirect": {
-            "elm/bytes": "1.0.8",
-            "elm/file": "1.0.5",
-            "elm/json": "1.1.3",
-            "elm/random": "1.0.0",
-            "elm/url": "1.0.0",
-            "elm/virtual-dom": "1.0.3",
-            "elm-explorations/linear-algebra": "1.0.3",
-            "ianmackenzie/elm-1d-parameter": "1.0.1",
-            "ianmackenzie/elm-float-extra": "1.1.0",
-            "ianmackenzie/elm-geometry-linear-algebra-interop": "2.0.2",
-            "ianmackenzie/elm-interval": "3.1.0",
-            "ianmackenzie/elm-units-interval": "3.2.0"
-        }
+  "dependencies": {
+    "direct": {
+      "andrewMacmurray/elm-simple-animation": "2.3.2",
+      "avh4/elm-color": "1.0.0",
+      "elm-explorations/webgl": "1.1.3",
+      "elm/browser": "1.0.2",
+      "elm/core": "1.0.5",
+      "elm/html": "1.0.0",
+      "elm/http": "2.0.0",
+      "elm/time": "1.0.0",
+      "ianmackenzie/elm-3d-camera": "3.1.0",
+      "ianmackenzie/elm-3d-scene": "1.0.2",
+      "ianmackenzie/elm-geometry": "3.11.0",
+      "ianmackenzie/elm-triangular-mesh": "1.1.0",
+      "ianmackenzie/elm-units": "2.10.0",
+      "mdgriffith/elm-ui": "1.1.8",
+      "w0rm/elm-obj-file": "1.2.1"
     },
-    "test-dependencies": {
-        "direct": {},
-        "indirect": {}
+    "indirect": {
+      "elm-explorations/linear-algebra": "1.0.3",
+      "elm/bytes": "1.0.8",
+      "elm/file": "1.0.5",
+      "elm/json": "1.1.3",
+      "elm/random": "1.0.0",
+      "elm/url": "1.0.0",
+      "elm/virtual-dom": "1.0.3",
+      "ianmackenzie/elm-1d-parameter": "1.0.1",
+      "ianmackenzie/elm-float-extra": "1.1.0",
+      "ianmackenzie/elm-geometry-linear-algebra-interop": "2.0.2",
+      "ianmackenzie/elm-interval": "3.1.0",
+      "ianmackenzie/elm-units-interval": "3.2.0"
     }
+  },
+  "elm-version": "0.19.1",
+  "source-directories": [
+    "src"
+  ],
+  "test-dependencies": {
+    "direct": {},
+    "indirect": {}
+  },
+  "type": "application"
 }
diff --git a/flake.lock b/flake.lock
index 58b8568..944fd2e 100644
--- a/flake.lock
+++ b/flake.lock
@@ -88,11 +88,11 @@
         "nixpkgs": "nixpkgs"
       },
       "locked": {
-        "lastModified": 1737854574,
-        "narHash": "sha256-GIh8IAIjJ3BkqSKifdXcnrkJgY4diipcMZ1itmwiFyw=",
+        "lastModified": 1738459463,
+        "narHash": "sha256-QBYK7boMjAAXFySEK9jEpQAhhe5vXkC9UI2fvQipadk=",
         "owner": "jeslie0",
         "repo": "mkElmDerivation",
-        "rev": "88b3923af364826b39428aff3431857a2b9d8699",
+        "rev": "e86ad254296f6861dedfc3cc303dd3b530535fd6",
         "type": "github"
       },
       "original": {
@@ -119,11 +119,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1738142207,
-        "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
+        "lastModified": 1739020877,
+        "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
+        "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index d327044..98f5e48 100644
--- a/flake.nix
+++ b/flake.nix
@@ -32,8 +32,6 @@
 
             buildInputs = self.checks.${system}.pre-commit-check.enabledPackages ++ [
               elmPackages.elm
-              elmPackages.elm-test
-              elmPackages.elm-format
               elmPackages.elm-review
               entr
             ];
@@ -61,8 +59,32 @@
             hooks = {
               nixfmt-rfc-style.enable = true;
               elm-format.enable = true;
-              # elm-review.enable = true;
-              # elm-test.enable = true;
+              check-yaml.enable = true;
+              yamlfmt.enable = true;
+              yamllint.enable = true;
+              check-json.enable = true;
+              pretty-format-json.enable = true;
+              deadnix.enable = true;
+              flake-checker.enable = true;
+              nil.enable = true;
+              statix.enable = true;
+              markdownlint.enable = true;
+              mdsh.enable = true;
+              typos.enable = true;
+              check-merge-conflicts.enable = true;
+              commitizen.enable = true;
+              forbid-new-submodules.enable = true;
+              check-case-conflicts.enable = true;
+              check-executables-have-shebangs.enable = true;
+              check-shebang-scripts-are-executable.enable = true;
+              check-symlinks.enable = true;
+              check-vcs-permalinks.enable = true;
+              end-of-file-fixer.enable = true;
+              mixed-line-endings.enable = true;
+              tagref.enable = true;
+              trim-trailing-whitespace.enable = true;
+              trufflehog.enable = true;
+              detect-private-keys.enable = true;
             };
           };
         };
diff --git a/review/elm.json b/review/elm.json
index d8a16f7..e2a55ea 100644
--- a/review/elm.json
+++ b/review/elm.json
@@ -1,41 +1,41 @@
 {
-    "type": "application",
-    "source-directories": [
-        "src"
-    ],
-    "elm-version": "0.19.1",
-    "dependencies": {
-        "direct": {
-            "elm/core": "1.0.5",
-            "elm/json": "1.1.3",
-            "elm/project-metadata-utils": "1.0.2",
-            "jfmengels/elm-review": "2.14.1",
-            "jfmengels/elm-review-code-style": "1.2.0",
-            "jfmengels/elm-review-common": "1.3.3",
-            "jfmengels/elm-review-debug": "1.0.8",
-            "jfmengels/elm-review-documentation": "2.0.4",
-            "jfmengels/elm-review-simplify": "2.1.6",
-            "jfmengels/elm-review-unused": "1.2.3",
-            "stil4m/elm-syntax": "7.3.8"
-        },
-        "indirect": {
-            "elm/bytes": "1.0.8",
-            "elm/html": "1.0.0",
-            "elm/parser": "1.1.0",
-            "elm/random": "1.0.0",
-            "elm/regex": "1.0.0",
-            "elm/time": "1.0.0",
-            "elm/virtual-dom": "1.0.3",
-            "elm-explorations/test": "2.2.0",
-            "pzp1997/assoc-list": "1.0.0",
-            "rtfeldman/elm-hex": "1.0.0",
-            "stil4m/structured-writer": "1.0.3"
-        }
+  "dependencies": {
+    "direct": {
+      "elm/core": "1.0.5",
+      "elm/json": "1.1.3",
+      "elm/project-metadata-utils": "1.0.2",
+      "jfmengels/elm-review": "2.14.1",
+      "jfmengels/elm-review-code-style": "1.2.0",
+      "jfmengels/elm-review-common": "1.3.3",
+      "jfmengels/elm-review-debug": "1.0.8",
+      "jfmengels/elm-review-documentation": "2.0.4",
+      "jfmengels/elm-review-simplify": "2.1.6",
+      "jfmengels/elm-review-unused": "1.2.3",
+      "stil4m/elm-syntax": "7.3.8"
     },
-    "test-dependencies": {
-        "direct": {
-            "elm-explorations/test": "2.2.0"
-        },
-        "indirect": {}
+    "indirect": {
+      "elm-explorations/test": "2.2.0",
+      "elm/bytes": "1.0.8",
+      "elm/html": "1.0.0",
+      "elm/parser": "1.1.0",
+      "elm/random": "1.0.0",
+      "elm/regex": "1.0.0",
+      "elm/time": "1.0.0",
+      "elm/virtual-dom": "1.0.3",
+      "pzp1997/assoc-list": "1.0.0",
+      "rtfeldman/elm-hex": "1.0.0",
+      "stil4m/structured-writer": "1.0.3"
     }
-}
\ No newline at end of file
+  },
+  "elm-version": "0.19.1",
+  "source-directories": [
+    "src"
+  ],
+  "test-dependencies": {
+    "direct": {
+      "elm-explorations/test": "2.2.0"
+    },
+    "indirect": {}
+  },
+  "type": "application"
+}
diff --git a/watch.sh b/watch.sh
index 012d98b..be5379a 100755
--- a/watch.sh
+++ b/watch.sh
@@ -1 +1,3 @@
+#!usr/bin/env -S nix develop --command bash
+
 find src/ | entr -r elm make src/Main.elm --output compiled/Main.js