diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,10 +1,14 @@
 # kempe
 
-# 0.2.0.12
+## 0.2.0.13
 
+  * Update for latest `alex` templates
+
+## 0.2.0.12
+
   * Typechecker is 𝜖 faster
   
-# 0.2.0.11
+## 0.2.0.11
 
   * Fix bug in typechecker
 
diff --git a/docs/manual.pdf b/docs/manual.pdf
Binary files a/docs/manual.pdf and b/docs/manual.pdf differ
diff --git a/kempe.cabal b/kempe.cabal
--- a/kempe.cabal
+++ b/kempe.cabal
@@ -1,6 +1,6 @@
 cabal-version:   3.0
 name:            kempe
-version:         0.2.0.12
+version:         0.2.0.13
 license:         BSD-3-Clause
 license-file:    LICENSE
 copyright:       Copyright: (c) 2020-2022 Vanessa McHale
@@ -108,7 +108,7 @@
         transformers,
         prettyprinter >=1.7.0,
         composition-prelude >=2.0.2.0,
-        microlens-mtl,
+        microlens-mtl >=0.1.8.0,
         process >=1.2.3.0,
         temporary
 
@@ -127,7 +127,7 @@
         ghc-options: -Wunused-packages
 
     if !flag(cross)
-        build-tool-depends: alex:alex, happy:happy
+        build-tool-depends: alex:alex >=3.3.0.0, happy:happy
 
 executable kc
     main-is:          Main.hs
diff --git a/src/Kempe/Asm/Arm/Trans.hs b/src/Kempe/Asm/Arm/Trans.hs
--- a/src/Kempe/Asm/Arm/Trans.hs
+++ b/src/Kempe/Asm/Arm/Trans.hs
@@ -9,8 +9,8 @@
 import           Data.Int           (Int64)
 import           Data.List          (scanl')
 import           Data.Semigroup     ((<>))
-import           Kempe.AST.Size
 import           Kempe.Asm.Arm.Type
+import           Kempe.AST.Size
 import           Kempe.IR.Monad
 import qualified Kempe.IR.Type      as IR
 import           System.Info        (arch, os)
diff --git a/src/Kempe/Asm/Liveness.hs b/src/Kempe/Asm/Liveness.hs
--- a/src/Kempe/Asm/Liveness.hs
+++ b/src/Kempe/Asm/Liveness.hs
@@ -1,8 +1,7 @@
 -- FIXME: this module is slow
 
 -- | Based on the Appel book.
-module Kempe.Asm.Liveness ( Liveness
-                          , reconstruct
+module Kempe.Asm.Liveness ( reconstruct
                           ) where
 
 import           Data.Copointed
diff --git a/src/Kempe/Asm/X86/Linear.hs b/src/Kempe/Asm/X86/Linear.hs
--- a/src/Kempe/Asm/X86/Linear.hs
+++ b/src/Kempe/Asm/X86/Linear.hs
@@ -4,8 +4,7 @@
 -- | Linear scan register allocator
 --
 -- See: https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/lectures/17/Slides17.pdf
-module Kempe.Asm.X86.Linear ( X86Reg (..)
-                            , allocRegs
+module Kempe.Asm.X86.Linear ( allocRegs
                             ) where
 
 import           Control.Monad.State.Strict (State, evalState, gets)
diff --git a/src/Kempe/Asm/X86/Trans.hs b/src/Kempe/Asm/X86/Trans.hs
--- a/src/Kempe/Asm/X86/Trans.hs
+++ b/src/Kempe/Asm/X86/Trans.hs
@@ -8,8 +8,8 @@
 import           Data.Foldable.Ext
 import           Data.List          (scanl')
 import           Data.Word          (Word8)
-import           Kempe.AST.Size
 import           Kempe.Asm.X86.Type
+import           Kempe.AST.Size
 import           Kempe.IR.Monad
 import qualified Kempe.IR.Type      as IR
 
diff --git a/src/Kempe/Asm/X86/Type.hs b/src/Kempe/Asm/X86/Type.hs
--- a/src/Kempe/Asm/X86/Type.hs
+++ b/src/Kempe/Asm/X86/Type.hs
@@ -24,7 +24,7 @@
 import           GHC.Generics            (Generic)
 import           Kempe.Asm.Pretty
 import           Kempe.Asm.Type
-import           Prettyprinter           (Doc, Pretty (pretty), brackets, colon, concatWith, hardline, (<+>))
+import           Prettyprinter           (Doc, Pretty (pretty), brackets, colon, hardline, (<+>))
 import           Prettyprinter.Ext
 
 type Label = Word
@@ -295,7 +295,7 @@
 prettyAsm = ((prolegomena <#> macros <#> "section .text" <> hardline) <>) . prettyLines . fmap pretty
 
 prettyDebugAsm :: (As8 reg, Pretty reg) => [X86 reg Liveness] -> Doc ann
-prettyDebugAsm = concatWith (<#>) . fmap prettyLive
+prettyDebugAsm = prettyLines . fmap prettyLive
 
 prolegomena :: Doc ann
 prolegomena = "section .bss" <> hardline <> "kempe_data: resb 0x8012" -- 32 kb
diff --git a/src/Kempe/File.hs b/src/Kempe/File.hs
--- a/src/Kempe/File.hs
+++ b/src/Kempe/File.hs
@@ -24,9 +24,9 @@
 import           Data.Semigroup            ((<>))
 import           Data.Tuple.Ext            (fst3)
 import           Data.Typeable             (Typeable)
-import           Kempe.AST
 import qualified Kempe.Asm.Arm.Type        as Arm
 import qualified Kempe.Asm.X86.Type        as X86
+import           Kempe.AST
 import           Kempe.CGen
 import           Kempe.Check.Lint
 import           Kempe.Check.Pattern
diff --git a/src/Kempe/IR/Type.hs b/src/Kempe/IR/Type.hs
--- a/src/Kempe/IR/Type.hs
+++ b/src/Kempe/IR/Type.hs
@@ -150,4 +150,3 @@
     pretty WordShiftLIR = "<<"
     pretty WordModIR    = "%~"
     pretty WordDivIR    = "/~"
-
diff --git a/src/Kempe/Lexer.x b/src/Kempe/Lexer.x
--- a/src/Kempe/Lexer.x
+++ b/src/Kempe/Lexer.x
@@ -177,8 +177,6 @@
 instance Pretty AlexPosn where
     pretty (AlexPn _ line col) = pretty line <> colon <> pretty col
 
-deriving instance Ord AlexPosn
-
 deriving instance Generic AlexPosn
 
 deriving instance NFData AlexPosn
diff --git a/src/Kempe/Pipeline.hs b/src/Kempe/Pipeline.hs
--- a/src/Kempe/Pipeline.hs
+++ b/src/Kempe/Pipeline.hs
@@ -9,8 +9,6 @@
 import           Control.Exception         (throw)
 import           Data.Bifunctor            (first)
 import           Data.Typeable             (Typeable)
-import           Kempe.AST
-import           Kempe.AST.Size
 import qualified Kempe.Asm.Arm.ControlFlow as Arm
 import qualified Kempe.Asm.Arm.Linear      as Arm
 import           Kempe.Asm.Arm.Opt
@@ -21,6 +19,8 @@
 import qualified Kempe.Asm.X86.Linear      as X86
 import           Kempe.Asm.X86.Trans
 import qualified Kempe.Asm.X86.Type        as X86
+import           Kempe.AST
+import           Kempe.AST.Size
 import           Kempe.Check.Restrict
 import           Kempe.IR
 import           Kempe.IR.Opt
