diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,15 @@
 Changelog
 =========
 
+Version 0.2.6.4
+---------------
+
+*June 30, 2020*
+
+<https://github.com/mstksg/backprop/releases/tag/v0.2.6.4>
+
+*   Compatibility with ghc-8.10.1 (@tonyday567)
+
 Version 0.2.6.3
 ---------------
 
diff --git a/backprop.cabal b/backprop.cabal
--- a/backprop.cabal
+++ b/backprop.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.2.
+-- This file has been generated from package.yaml by hpack version 0.33.0.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: a9461183db8be7dbe24825f41a9efd5aaa5b42ab7a4745958b02fe5e5e59f826
+-- hash: 906559ac274a6fd89fe27484a5a3a192f5a009fc5317c1fd3546168b5ba7b927
 
 name:           backprop
-version:        0.2.6.3
+version:        0.2.6.4
 synopsis:       Heterogeneous automatic differentation
 description:    Write your functions to compute your result, and the library will
                 automatically generate functions to compute your gradient.
@@ -24,7 +24,7 @@
 copyright:      (c) Justin Le 2018
 license:        BSD3
 license-file:   LICENSE
-tested-with:    GHC >= 8.0
+tested-with:    GHC >= 8.4
 build-type:     Simple
 extra-source-files:
     README.md
diff --git a/doc/01-getting-started.md b/doc/01-getting-started.md
--- a/doc/01-getting-started.md
+++ b/doc/01-getting-started.md
@@ -112,6 +112,7 @@
 
 instance Backprop Net
 
+-- requires -XTemplateHaskell
 makeLenses ''Net
 ```
 
diff --git a/doc/03-manipulating-bvars.md b/doc/03-manipulating-bvars.md
--- a/doc/03-manipulating-bvars.md
+++ b/doc/03-manipulating-bvars.md
@@ -132,6 +132,7 @@
 [microlens-th]: http://hackage.haskell.org/package/microlens-th
 
 ```haskell top
+-- requires -XTemplateHaskell
 makeLenses ''Net
 ```
 
@@ -274,6 +275,17 @@
        -> BVar s (R 100)
        -> BVar s (R 5)
 runMet (splitBV -> M w1 b1 w2 b2) x = z
+  where
+    -- run first layer
+    y = logistic $ w1 #> x + b1
+    -- run second layer
+    z = logistic $ w2 #> y + b2
+
+runMetPS :: Reifies s W
+       => BVar s Met
+       -> BVar s (R 100)
+       -> BVar s (R 5)
+runMetPS (BV (M w1 b1 w2 b2)) x = z
   where
     -- run first layer
     y = logistic $ w1 #> x + b1
diff --git a/doc/08-equipping-your-library.md b/doc/08-equipping-your-library.md
--- a/doc/08-equipping-your-library.md
+++ b/doc/08-equipping-your-library.md
@@ -401,6 +401,7 @@
 [microlens-th]: http://hackage.haskell.org/package/microlens-th
 
 ```haskell top
+-- requires -XTemplateHaskell
 makeLenses ''MyType
 ```
 
diff --git a/src/Data/Type/Util.hs b/src/Data/Type/Util.hs
--- a/src/Data/Type/Util.hs
+++ b/src/Data/Type/Util.hs
@@ -10,6 +10,7 @@
 {-# LANGUAGE TypeFamilyDependencies #-}
 {-# LANGUAGE TypeInType             #-}
 {-# LANGUAGE TypeOperators          #-}
+{-# LANGUAGE UndecidableInstances   #-}
 
 module Data.Type.Util (
     runzipWith
