diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for polysemy-plugin
 
+## 0.2.0.1 (2019-05-28)
+
+- Fixed a bug where the plugin would get confused in the context of legitimate
+    type errors
+
 ## 0.2.0.0 (2019-05-23)
 
 - Fixed a serious bug where the changes from 0.1.0.1 broke most real-world
@@ -16,5 +21,7 @@
 
 - Initial release
 
-
 ## Unreleased changes
+
+- Added `runErrorAsAnother`
+
diff --git a/polysemy-plugin.cabal b/polysemy-plugin.cabal
--- a/polysemy-plugin.cabal
+++ b/polysemy-plugin.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 85478fdf6818cbb2b849d4dd68a9f8dbee303d4a7ac2005945ac34ac5eb9dd33
+-- hash: 140d529a7cdddca38bcea9f27672cebd7742b7668b1be602c699a624cbb253aa
 
 name:           polysemy-plugin
-version:        0.2.0.0
+version:        0.2.0.1
 synopsis:       Disambiguate obvious uses of effects.
 description:    Please see the README on GitHub at <https://github.com/isovector/polysemy/tree/master/polysemy-plugin#readme>
 category:       Polysemy
@@ -54,6 +54,7 @@
       BadSpec
       ExampleSpec
       InlineRecursiveCallsSpec
+      LegitimateTypeErrorSpec
       PluginSpec
       Paths_polysemy_plugin
   hs-source-dirs:
diff --git a/src/Polysemy/Plugin/Fundep.hs b/src/Polysemy/Plugin/Fundep.hs
--- a/src/Polysemy/Plugin/Fundep.hs
+++ b/src/Polysemy/Plugin/Fundep.hs
@@ -88,9 +88,10 @@
   let (w, ws) = splitAppTys wanted
       (g, gs) = splitAppTys given
    in (&& eqType w g) . flip all (zip ws gs) $ \(wt, gt) ->
-        if isTyVarTy gt
-           then isTyVarTy wt
-           else True
+     or [ isTyVarTy wt
+        , eqType gt wt
+        ]
+
 
 
 mkWanted :: Bool -> CtLoc -> Type -> Type -> TcPluginM (Maybe Ct)
diff --git a/test/LegitimateTypeErrorSpec.hs b/test/LegitimateTypeErrorSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/LegitimateTypeErrorSpec.hs
@@ -0,0 +1,25 @@
+{-# OPTIONS_GHC -fdefer-type-errors -fno-warn-deferred-type-errors #-}
+
+module LegitimateTypeErrorSpec where
+
+import Polysemy
+import Test.Hspec
+import Test.ShouldNotTypecheck
+
+wrongLift :: Member (Lift IO) r => Sem r ()
+wrongLift = sendM putStrLn
+
+wrongReturn :: Sem (e ': r) () -> Sem r ()
+wrongReturn = reinterpret undefined
+
+
+
+spec :: Spec
+spec = do
+  describe "Legitimate type errors" $ do
+    it "should be caused by `sendM`ing an unsaturated function" $
+        shouldNotTypecheck wrongLift
+
+    it "should be caused by giving a bad type to reinterpret" $
+        shouldNotTypecheck wrongReturn
+
