diff --git a/src/Language/Haskell/TH/Typecheck.hs b/src/Language/Haskell/TH/Typecheck.hs
--- a/src/Language/Haskell/TH/Typecheck.hs
+++ b/src/Language/Haskell/TH/Typecheck.hs
@@ -34,13 +34,14 @@
 import Control.Lens
 import Control.Monad.State.Class
 import Control.Monad.Trans
-import Control.Monad.Trans.State (StateT, evalStateT, liftCatch)
+import Control.Monad.Trans.State (StateT, evalStateT)
 import Data.Foldable
 import Data.List as L
 import Data.Maybe
 import Data.Map as M
 import Data.Set as S
 import Language.Haskell.TH
+import Language.Haskell.TH.Instances () -- Quasi StateT
 import Language.Haskell.TH.Syntax hiding (lift)
 import Numeric.Natural
 
@@ -101,31 +102,6 @@
 -- @m ~ 'StateT' 'TcScope' 'Q'@
 type MonadTc m = (Quasi m, MonadState TcScope m)
 
-instance Quasi m => Quasi (StateT s m) where
-  qNewName = lift . qNewName
-  qReport = (lift .) . qReport
-  qRecover m r = liftCatch (\m r -> qRecover m $ r ()) m (const r)
-  qLookupName = (lift .) . qLookupName
-  qReify = lift . qReify
-  qReifyFixity = lift . qReifyFixity
-  qReifyInstances = (lift .) . qReifyInstances
-  qReifyRoles = lift . qReifyRoles
-  qReifyAnnotations = lift . qReifyAnnotations
-  qReifyModule = lift . qReifyModule
-  qReifyConStrictness = lift . qReifyConStrictness
-  qLocation = lift qLocation
-  qRunIO = lift . qRunIO
-  qAddDependentFile = lift . qAddDependentFile
-  qAddTempFile = lift . qAddTempFile
-  qAddTopDecls = lift . qAddTopDecls
-  qAddForeignFilePath = (lift .) . qAddForeignFilePath
-  qAddModFinalizer = lift . qAddModFinalizer
-  qAddCorePlugin = lift . qAddCorePlugin
-  qGetQ = lift qGetQ
-  qPutQ = lift . qPutQ
-  qIsExtEnabled = lift . qIsExtEnabled
-  qExtsEnabled = lift qExtsEnabled
-
 -- | Execute a typechecker computation. Unificational variables will not persist
 -- between different 'runTc' blocks.
 runTc :: Monad m => StateT TcScope m a -> m a
@@ -262,7 +238,8 @@
 zonkTV tv ty = do
   isUnifTV tv >>= \case
     True -> case ty of
-      VarT tv' | tv == tv' -> tcFail $ "Attempted to zonk a tyvar with itself: " ++ show tv
+      VarT tv' | tv == tv'
+        -> tcFail $ "Attempted to zonk a tyvar with itself: " ++ show tv
       _ -> pure ()
     False -> tcFail $ "Attempted to zonk a skolem " ++ show tv
   use (tsZonkedVars . at tv) >>= \case
diff --git a/th-tc.cabal b/th-tc.cabal
--- a/th-tc.cabal
+++ b/th-tc.cabal
@@ -1,5 +1,5 @@
 name:                th-tc
-version:             0.2.0.0
+version:             0.2.1.0
 synopsis:            Typechecking in Template Haskell
 description:         Typechecking in Template Haskell.
 homepage:            https://github.com/mniip/th-tc
@@ -16,6 +16,7 @@
   exposed-modules:       Language.Haskell.TH.Typecheck
   build-depends:         base >=4.12 && <4.13
                        , template-haskell >= 2.14
+                       , th-orphans >= 0.11
                        , containers >= 0.6
                        , lens >= 4.0
                        , transformers >= 0.5
