diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -0,0 +1,6 @@
+# Unreleased
+
+# 0.2.0.0
+
+* Add `unitT`, returning `()` in a `Tactical` environment
+* Hide Polysemy's effect GADT constructors
diff --git a/incipit-core.cabal b/incipit-core.cabal
--- a/incipit-core.cabal
+++ b/incipit-core.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           incipit-core
-version:        0.1.0.3
+version:        0.2.0.0
 synopsis:       A Prelude for Polysemy
 description:    See <https://hackage.haskell.org/package/incipit/docs/Incipit.html>
 category:       Prelude
@@ -53,6 +53,7 @@
     , Data.Text
     , Data.Text.IO
     , Data.Text.Lazy
+    , Data.Text.Lazy.Builder
     , Data.Text.Lazy.IO
     , Data.Text.Read
     , Data.Tree
@@ -120,7 +121,7 @@
   ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities
   build-depends:
       base ==4.*
-    , incipit-base ==0.1.0.3
+    , incipit-base ==0.2.0.0
     , polysemy >=1.6
   mixins:
       base hiding (Prelude)
diff --git a/lib/Incipit.hs b/lib/Incipit.hs
--- a/lib/Incipit.hs
+++ b/lib/Incipit.hs
@@ -21,19 +21,25 @@
 import qualified Control.Exception as Base
 import IncipitBase
 import Polysemy hiding (run)
-import Polysemy.Async
-import Polysemy.AtomicState
-import Polysemy.Error
-import Polysemy.Fail
-import Polysemy.Input
+import Polysemy.Async (Async)
+import Polysemy.Async hiding (Async, Await, Cancel)
+import Polysemy.AtomicState (AtomicState)
+import Polysemy.AtomicState hiding (AtomicGet, AtomicState)
+import Polysemy.Error hiding (Catch, Throw)
+import Polysemy.Fail (Fail)
+import Polysemy.Fail hiding (Fail)
+import Polysemy.Input (Input)
+import Polysemy.Input hiding (Input)
 import Polysemy.Internal (send)
 import Polysemy.Internal.Kind (Append)
-import Polysemy.Output
-import Polysemy.Reader
-import Polysemy.Resource
-import Polysemy.State
-import Polysemy.Tagged
-import Polysemy.Writer
+import Polysemy.Output (Output)
+import Polysemy.Output hiding (Output)
+import Polysemy.Reader hiding (Ask, Local)
+import Polysemy.Resource hiding (Bracket, BracketOnError)
+import Polysemy.State hiding (Get, Put)
+import Polysemy.Tagged (Tagged)
+import Polysemy.Tagged hiding (Tagged)
+import Polysemy.Writer hiding (Listen, Pass, Tell)
 
 -- |Run an 'IO' via 'Embed' and catch all exceptions, returning 'Either'.
 tryAny ::
@@ -67,3 +73,11 @@
   Append a b
 
 infixr 5 ++
+
+-- |Convenience alias for @pureT ()@.
+unitT ::
+  Functor f =>
+  Sem (WithTactics e f m r) (f ())
+unitT =
+  pureT ()
+{-# inline unitT #-}
