diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3.8.7.1
+  Eliminate warning about nonexhaustive pattern match (thanks Edward Yang)
+
 3.8.7.0
   Works with GHC 7 (thanks Edward Yang)
   cabal sdist now sort of works (and is added to validate)
diff --git a/README b/README
--- a/README
+++ b/README
@@ -24,7 +24,3 @@
 
   cabal sdist
   cabal upload dist/something.tar.gz
-
-
-
-  
diff --git a/hoopl.cabal b/hoopl.cabal
--- a/hoopl.cabal
+++ b/hoopl.cabal
@@ -1,5 +1,5 @@
 Name:                hoopl
-Version:             3.8.7.0
+Version:             3.8.7.1
 -- version 3.8.6.0 is the version that goes with the camera-ready Haskell'10 paper
 -- version 3.8.7.0 works with GHC 7
 Description:         Higher-order optimization library
diff --git a/src/Compiler/Hoopl/XUtil.hs b/src/Compiler/Hoopl/XUtil.hs
--- a/src/Compiler/Hoopl/XUtil.hs
+++ b/src/Compiler/Hoopl/XUtil.hs
@@ -305,7 +305,7 @@
     where f n = NL (JustC n, id, NothingC)
           m n = NL (NothingC, (n:), NothingC)
           l n = NL (NothingC, id, JustC n)
-          cat :: forall n t1 t2 t3. NodeList n t1 t2 -> NodeList n t2 t3 -> NodeList n t1 t3
+          cat :: forall n t1 t3. NodeList n t1 O -> NodeList n O t3 -> NodeList n t1 t3
           NL (e, ms, NothingC) `cat` NL (NothingC, ms', x) = NL (e, ms . ms', x)
           finish :: forall t t1 t2 a. (t, [a] -> t1, t2) -> (t, t1, t2)
           finish (e, ms, x) = (e, ms [], x)
