diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+# 1.0.0.2
+
+- One less `unsafeCoerce` (thanks to David Feuer)
+
 # 1.0.0.1
 
 - Fix issue with GHC#9585 https://gitlab.haskell.org/ghc/ghc/issues/9584
diff --git a/some.cabal b/some.cabal
--- a/some.cabal
+++ b/some.cabal
@@ -1,5 +1,5 @@
 name:               some
-version:            1.0.0.1
+version:            1.0.0.2
 stability:          provisional
 cabal-version:      >=1.10
 build-type:         Simple
diff --git a/src/Data/Some/Newtype.hs b/src/Data/Some/Newtype.hs
--- a/src/Data/Some/Newtype.hs
+++ b/src/Data/Some/Newtype.hs
@@ -81,8 +81,13 @@
 -- Some TagInt
 --
 newtype Some tag = UnsafeSome (tag Any)
-
-#if __GLASGOW_HASKELL__ >= 801
+ 
+#if __GLASGOW_HASKELL__ >= 802
+pattern Some x <- UnsafeSome x
+  where Some x = UnsafeSome ((unsafeCoerce :: tag a -> tag Any) x)
+#elif __GLASGOW_HASKELL__ >= 801
+-- There was a bug type checking pattern synonyms that prevented the
+-- obvious thing from working.
 {-# COMPLETE Some #-}
 pattern Some :: tag a -> Some tag
 pattern Some x <- UnsafeSome ((unsafeCoerce :: tag Any -> tag a) -> x)
