diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,12 @@
+arduino-copilot (1.5.4) unstable; urgency=medium
+
+  * Update to copilot-3.3.
+  * stack.yaml: Update to lts-17.12.
+  * Fix example README files to properly document how to build them with
+    stack.
+
+ -- Joey Hess <id@joeyh.name>  Mon, 17 May 2021 20:31:05 -0400
+
 arduino-copilot (1.5.3) unstable; urgency=medium
 
   * Update to copilot-3.2.
diff --git a/Examples/Blink/README b/Examples/Blink/README
--- a/Examples/Blink/README
+++ b/Examples/Blink/README
@@ -2,6 +2,7 @@
 
 To build the C code:
 
+	stack build arduino-copilot
 	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
diff --git a/Examples/Blink/stack.yaml b/Examples/Blink/stack.yaml
--- a/Examples/Blink/stack.yaml
+++ b/Examples/Blink/stack.yaml
@@ -1,16 +1,24 @@
 packages:
 - '.'
 - '../..'
-resolver: lts-16.29
+resolver: lts-17.12
 extra-deps: 
-- copilot-3.2
-- copilot-c99-3.2
-- copilot-core-3.2
-- copilot-language-3.2
-- copilot-libraries-3.2
-- copilot-theorem-3.2
+- copilot-3.3
+- copilot-c99-3.3
+- copilot-core-3.3
+- copilot-language-3.3
+- copilot-libraries-3.3
+- copilot-theorem-3.3
+- ansi-terminal-0.9.1
+- bimap-0.3.3
+- bv-sized-1.0.2
 - language-c99-0.1.2
 - language-c99-simple-0.1.2
 - language-c99-util-0.1.1
-- ansi-terminal-0.9.1
-- bimap-0.3.3
+- libBF-0.6.2
+- panic-0.4.0.1
+- parameterized-utils-2.1.3.0
+- what4-1.1
+- bitwise-1.0.0.1
+- config-value-0.8.1
+- zenc-0.1.1
diff --git a/Examples/Button/README b/Examples/Button/README
--- a/Examples/Button/README
+++ b/Examples/Button/README
@@ -2,6 +2,7 @@
 
 To build the C code:
 
+	stack build arduino-copilot
 	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
diff --git a/Examples/Button/stack.yaml b/Examples/Button/stack.yaml
--- a/Examples/Button/stack.yaml
+++ b/Examples/Button/stack.yaml
@@ -1,16 +1,24 @@
 packages:
 - '.'
 - '../..'
-resolver: lts-16.29
+resolver: lts-17.12
 extra-deps: 
-- copilot-3.2
-- copilot-c99-3.2
-- copilot-core-3.2
-- copilot-language-3.2
-- copilot-libraries-3.2
-- copilot-theorem-3.2
+- copilot-3.3
+- copilot-c99-3.3
+- copilot-core-3.3
+- copilot-language-3.3
+- copilot-libraries-3.3
+- copilot-theorem-3.3
+- ansi-terminal-0.9.1
+- bimap-0.3.3
+- bv-sized-1.0.2
 - language-c99-0.1.2
 - language-c99-simple-0.1.2
 - language-c99-util-0.1.1
-- ansi-terminal-0.9.1
-- bimap-0.3.3
+- libBF-0.6.2
+- panic-0.4.0.1
+- parameterized-utils-2.1.3.0
+- what4-1.1
+- bitwise-1.0.0.1
+- config-value-0.8.1
+- zenc-0.1.1
diff --git a/Examples/EEPROM/README b/Examples/EEPROM/README
--- a/Examples/EEPROM/README
+++ b/Examples/EEPROM/README
@@ -15,6 +15,7 @@
 First, run this to build and upload a sketch that zeros out some values of
 the EEPROM.
 
+	stack build arduino-copilot
 	ZERO=y stack runghc Demo.hs
 	ZERO=y make upload
 
diff --git a/Examples/EEPROM/stack.yaml b/Examples/EEPROM/stack.yaml
--- a/Examples/EEPROM/stack.yaml
+++ b/Examples/EEPROM/stack.yaml
@@ -1,16 +1,24 @@
 packages:
 - '.'
 - '../..'
-resolver: lts-16.29
+resolver: lts-17.12
 extra-deps: 
-- copilot-3.2
-- copilot-c99-3.2
-- copilot-core-3.2
-- copilot-language-3.2
-- copilot-libraries-3.2
-- copilot-theorem-3.2
+- copilot-3.3
+- copilot-c99-3.3
+- copilot-core-3.3
+- copilot-language-3.3
+- copilot-libraries-3.3
+- copilot-theorem-3.3
+- ansi-terminal-0.9.1
+- bimap-0.3.3
+- bv-sized-1.0.2
 - language-c99-0.1.2
 - language-c99-simple-0.1.2
 - language-c99-util-0.1.1
-- ansi-terminal-0.9.1
-- bimap-0.3.3
+- libBF-0.6.2
+- panic-0.4.0.1
+- parameterized-utils-2.1.3.0
+- what4-1.1
+- bitwise-1.0.0.1
+- config-value-0.8.1
+- zenc-0.1.1
diff --git a/Examples/EEPROMrange/README b/Examples/EEPROMrange/README
--- a/Examples/EEPROMrange/README
+++ b/Examples/EEPROMrange/README
@@ -16,6 +16,7 @@
 First, run this to build and upload a sketch that zeros out the entire
 EEPROM.
 
+	stack build arduino-copilot
 	ZERO=y stack runghc Demo.hs
 	ZERO=y make upload
 
diff --git a/Examples/EEPROMrange/stack.yaml b/Examples/EEPROMrange/stack.yaml
--- a/Examples/EEPROMrange/stack.yaml
+++ b/Examples/EEPROMrange/stack.yaml
@@ -1,16 +1,24 @@
 packages:
 - '.'
 - '../..'
-resolver: lts-16.29
+resolver: lts-17.12
 extra-deps: 
-- copilot-3.2
-- copilot-c99-3.2
-- copilot-core-3.2
-- copilot-language-3.2
-- copilot-libraries-3.2
-- copilot-theorem-3.2
+- copilot-3.3
+- copilot-c99-3.3
+- copilot-core-3.3
+- copilot-language-3.3
+- copilot-libraries-3.3
+- copilot-theorem-3.3
+- ansi-terminal-0.9.1
+- bimap-0.3.3
+- bv-sized-1.0.2
 - language-c99-0.1.2
 - language-c99-simple-0.1.2
 - language-c99-util-0.1.1
-- ansi-terminal-0.9.1
-- bimap-0.3.3
+- libBF-0.6.2
+- panic-0.4.0.1
+- parameterized-utils-2.1.3.0
+- what4-1.1
+- bitwise-1.0.0.1
+- config-value-0.8.1
+- zenc-0.1.1
diff --git a/Examples/Random/README b/Examples/Random/README
--- a/Examples/Random/README
+++ b/Examples/Random/README
@@ -2,6 +2,7 @@
 
 To build the C code:
 
+	stack build arduino-copilot
 	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
diff --git a/Examples/Random/stack.yaml b/Examples/Random/stack.yaml
--- a/Examples/Random/stack.yaml
+++ b/Examples/Random/stack.yaml
@@ -1,16 +1,24 @@
 packages:
 - '.'
 - '../..'
-resolver: lts-16.29
+resolver: lts-17.12
 extra-deps: 
-- copilot-3.2
-- copilot-c99-3.2
-- copilot-core-3.2
-- copilot-language-3.2
-- copilot-libraries-3.2
-- copilot-theorem-3.2
+- copilot-3.3
+- copilot-c99-3.3
+- copilot-core-3.3
+- copilot-language-3.3
+- copilot-libraries-3.3
+- copilot-theorem-3.3
+- ansi-terminal-0.9.1
+- bimap-0.3.3
+- bv-sized-1.0.2
 - language-c99-0.1.2
 - language-c99-simple-0.1.2
 - language-c99-util-0.1.1
-- ansi-terminal-0.9.1
-- bimap-0.3.3
+- libBF-0.6.2
+- panic-0.4.0.1
+- parameterized-utils-2.1.3.0
+- what4-1.1
+- bitwise-1.0.0.1
+- config-value-0.8.1
+- zenc-0.1.1
diff --git a/Examples/SerialPort/README b/Examples/SerialPort/README
--- a/Examples/SerialPort/README
+++ b/Examples/SerialPort/README
@@ -2,6 +2,7 @@
 
 To build the C code:
 
+	stack build arduino-copilot
 	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
diff --git a/Examples/SerialPort/stack.yaml b/Examples/SerialPort/stack.yaml
--- a/Examples/SerialPort/stack.yaml
+++ b/Examples/SerialPort/stack.yaml
@@ -1,16 +1,24 @@
 packages:
 - '.'
 - '../..'
-resolver: lts-16.29
+resolver: lts-17.12
 extra-deps: 
-- copilot-3.2
-- copilot-c99-3.2
-- copilot-core-3.2
-- copilot-language-3.2
-- copilot-libraries-3.2
-- copilot-theorem-3.2
+- copilot-3.3
+- copilot-c99-3.3
+- copilot-core-3.3
+- copilot-language-3.3
+- copilot-libraries-3.3
+- copilot-theorem-3.3
+- ansi-terminal-0.9.1
+- bimap-0.3.3
+- bv-sized-1.0.2
 - language-c99-0.1.2
 - language-c99-simple-0.1.2
 - language-c99-util-0.1.1
-- ansi-terminal-0.9.1
-- bimap-0.3.3
+- libBF-0.6.2
+- panic-0.4.0.1
+- parameterized-utils-2.1.3.0
+- what4-1.1
+- bitwise-1.0.0.1
+- config-value-0.8.1
+- zenc-0.1.1
diff --git a/Examples/WaterHeater/README b/Examples/WaterHeater/README
--- a/Examples/WaterHeater/README
+++ b/Examples/WaterHeater/README
@@ -2,6 +2,7 @@
 
 To build the C code:
 
+	stack build arduino-copilot
 	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
diff --git a/Examples/WaterHeater/stack.yaml b/Examples/WaterHeater/stack.yaml
--- a/Examples/WaterHeater/stack.yaml
+++ b/Examples/WaterHeater/stack.yaml
@@ -1,16 +1,24 @@
 packages:
 - '.'
 - '../..'
-resolver: lts-16.29
+resolver: lts-17.12
 extra-deps: 
-- copilot-3.2
-- copilot-c99-3.2
-- copilot-core-3.2
-- copilot-language-3.2
-- copilot-libraries-3.2
-- copilot-theorem-3.2
+- copilot-3.3
+- copilot-c99-3.3
+- copilot-core-3.3
+- copilot-language-3.3
+- copilot-libraries-3.3
+- copilot-theorem-3.3
+- ansi-terminal-0.9.1
+- bimap-0.3.3
+- bv-sized-1.0.2
 - language-c99-0.1.2
 - language-c99-simple-0.1.2
 - language-c99-util-0.1.1
-- ansi-terminal-0.9.1
-- bimap-0.3.3
+- libBF-0.6.2
+- panic-0.4.0.1
+- parameterized-utils-2.1.3.0
+- what4-1.1
+- bitwise-1.0.0.1
+- config-value-0.8.1
+- zenc-0.1.1
diff --git a/arduino-copilot.cabal b/arduino-copilot.cabal
--- a/arduino-copilot.cabal
+++ b/arduino-copilot.cabal
@@ -1,5 +1,5 @@
 Name: arduino-copilot
-Version: 1.5.3
+Version: 1.5.4
 Cabal-Version: >= 1.10
 License: BSD3
 Maintainer: Joey Hess <id@joeyh.name>
@@ -108,9 +108,9 @@
     Copilot.Arduino.Main
   Build-Depends:
     base (>= 4.5 && < 5),
-    copilot (== 3.2.*),
-    copilot-c99 (== 3.2.*),
-    copilot-language (== 3.2.*),
+    copilot (== 3.3.*),
+    copilot-c99 (== 3.3.*),
+    copilot-language (== 3.3.*),
     filepath,
     directory,
     mtl,
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,16 +1,24 @@
 packages:
 - '.'
-resolver: lts-16.29
+resolver: lts-17.12
 extra-deps:
-- copilot-3.2
-- copilot-c99-3.2
-- copilot-core-3.2
-- copilot-language-3.2
-- copilot-libraries-3.2
-- copilot-theorem-3.2
+- copilot-3.3
+- copilot-c99-3.3
+- copilot-core-3.3
+- copilot-language-3.3
+- copilot-libraries-3.3
+- copilot-theorem-3.3
+- ansi-terminal-0.9.1
+- bimap-0.3.3
+- bv-sized-1.0.2
 - language-c99-0.1.2
 - language-c99-simple-0.1.2
 - language-c99-util-0.1.1
-- ansi-terminal-0.9.1
-- bimap-0.3.3
+- libBF-0.6.2
+- panic-0.4.0.1
+- parameterized-utils-2.1.3.0
+- what4-1.1
+- bitwise-1.0.0.1
+- config-value-0.8.1
+- zenc-0.1.1
 explicit-setup-deps:
