diff --git a/artifacts/handout.pdf b/artifacts/handout.pdf
index 704397a..408a9a5 100644
Binary files a/artifacts/handout.pdf and b/artifacts/handout.pdf differ
diff --git a/artifacts/slides.pdf b/artifacts/slides.pdf
index 8d93289..e1d163d 100644
Binary files a/artifacts/slides.pdf and b/artifacts/slides.pdf differ
diff --git a/flake.nix b/flake.nix
index 6606d15..7da5513 100644
--- a/flake.nix
+++ b/flake.nix
@@ -28,8 +28,15 @@
 
         commonArgs = handout: {
           typstSource = "iotas.typ";
-          fontPaths = [ "${pkgs.cascadia-code}/share/fonts/truetype" ];
           virtualPaths = [ ];
+
+          fontPaths = [
+            "${pkgs.cascadia-code}/share/fonts/truetype"
+            "${pkgs.cascadia-code}/share/fonts/opentype"
+            "${pkgs.cm_unicode}/share/fonts/opentype"
+            "${pkgs.unifont}/share/fonts/opentype"
+          ];
+
           unstable_typstPackages = [
             {
               name = "polylux";
@@ -57,7 +64,10 @@
       in
       {
         devShell = pkgs.mkShell {
-          nativeBuildInputs = [ pkgs.typst ];
+          nativeBuildInputs = [
+            pkgs.typst
+            pkgs.pdfpc
+          ];
         };
 
         packages.default = presentation;
diff --git a/images/alwayshasbeenallfunctions.jpg b/images/alwayshasbeenallfunctions.jpg
new file mode 100644
index 0000000..ef87988
Binary files /dev/null and b/images/alwayshasbeenallfunctions.jpg differ
diff --git a/images/challenge-qrcode.png b/images/challenge-qrcode.png
new file mode 100644
index 0000000..4b54975
Binary files /dev/null and b/images/challenge-qrcode.png differ
diff --git a/images/slides-qrcode.png b/images/slides-qrcode.png
new file mode 100644
index 0000000..7c2b499
Binary files /dev/null and b/images/slides-qrcode.png differ
diff --git a/iotas.typ b/iotas.typ
index 4cf238d..2a0ea21 100644
--- a/iotas.typ
+++ b/iotas.typ
@@ -53,6 +53,7 @@
 ]
 
 #slide[
+  #set align(horizon)
   = The $clam$-calculus
   #v(1em)
 
@@ -110,25 +111,32 @@
 
 #slide[
   #set text(size: 25pt)
+  #grid(columns:(auto, auto), gutter:20pt, [
   = The #S#K#I combinators
   #v(1em)
   #set text(size: 23pt)
+  #set align(horizon)
 
-  - Any term in the $clam$-calculus can be written using nothing but the #S#K combinators. #later[For example $#I := #S #K #S$.
+  Any term in the $clam$-calculus can be written using nothing but the #S#K combinators.
 
-  #align(horizon+center)[
-    #image("images/ithinkshespartoftheskteam.jpg", width:40%)
-  ]
-]
+    #show: later
+    For example $#I := #S #K #S$.
+    ],[
+  #set align(horizon+center)
+    #uncover(2)[
+    #image("images/ithinkshespartoftheskteam.jpg", height:80%)
+    ]
+  ])
 ]
 
 #slide[
   #set text(size: 25pt)
   = A combinator to conquer them all
   #v(1em)
-  #set text(size: 20pt)
+  #grid(columns:(auto, auto), gutter: 5pt,[
+  #set text(size: 18pt)
 
-  Enter, the $iota$-combinator!
+  Enter _the $iota$-combinator_!
   $ iota := la(x, x #S #K) = #S (#S #I (#K #S))(#K #K). $
 
   #show:later
@@ -139,6 +147,13 @@
   #K &= iota( iota (iota iota)) \
   #S &= iota(iota(iota(iota iota)))
   $
+  ],[
+    #align(horizon)[
+      #uncover(2)[
+    #image("images/alwayshasbeenallfunctions.jpg")
+      ]
+    ]
+  ])
 ]
 
 #slide[
@@ -206,7 +221,9 @@
 
   #align(bottom)[
   #set text(size: 11pt)
+  #uncover(2)[
   Note: the naturals are essentially just ordered lists of the unit type, but don't worry about that.
+    ]
   ]
 ]
 
@@ -315,7 +332,23 @@
 ]
 
 #slide[
+  #set page(margin:5pt)
   #align(center+horizon)[
+  #set text(size: 18pt)
+    #grid(columns:(35%,35%),
+    gutter:5pt,
+    [
+      #set align(top)
+      #image("images/slides-qrcode.png", height:50%)
+      Slide repository
+    ],
+    [
+      #set align(top)
+      #image("images/challenge-qrcode.png", height:50%)
+      The riddle from my team's previous presentation
+    ]
+    )
+
   #set text(size: 35pt)
   ✨ Thanks You! ✨
   ]