diff --git a/lib/Polysemy/Account.hs b/lib/Polysemy/Account.hs
--- a/lib/Polysemy/Account.hs
+++ b/lib/Polysemy/Account.hs
@@ -2,6 +2,7 @@
 module Polysemy.Account (
   -- * Effects
   Accounts,
+  AccountsP,
   authenticate,
   generatePassword,
   create,
@@ -36,7 +37,9 @@
   -- * Data types
   Account (..),
   AuthedAccount (..),
+  AccountAuth (..),
   AccountsConfig (..),
+  AccountsConfigP,
   AccountsError (..),
   AccountsClientError (..),
   AccountCredentials (..),
@@ -50,16 +53,19 @@
   AuthedAccountP,
   AuthToken (..),
   Port (Port),
+  AuthQuery,
+  AccountQuery,
 ) where
 
 import Prelude hiding (all)
 
 import Polysemy.Account.Accounts (login, register, unlockAccountName)
 import Polysemy.Account.Data.Account (Account (..), AccountP)
+import Polysemy.Account.Data.AccountAuth (AccountAuth (..))
 import Polysemy.Account.Data.AccountCredentials (AccountCredentials (..))
 import Polysemy.Account.Data.AccountName (AccountName (..))
 import Polysemy.Account.Data.AccountStatus (AccountStatus (..))
-import Polysemy.Account.Data.AccountsConfig (AccountsConfig (..))
+import Polysemy.Account.Data.AccountsConfig (AccountsConfig (..), AccountsConfigP)
 import Polysemy.Account.Data.AccountsError (AccountsClientError (..), AccountsError (..))
 import Polysemy.Account.Data.AuthToken (AuthToken (..))
 import Polysemy.Account.Data.AuthedAccount (AuthedAccount (..), AuthedAccountP)
@@ -69,6 +75,7 @@
 import Polysemy.Account.Data.RawPassword (RawPassword (..), rawPassword)
 import Polysemy.Account.Effect.Accounts (
   Accounts,
+  AccountsP,
   addPassword,
   all,
   allAuths,
@@ -84,5 +91,7 @@
   updatePrivileges,
   )
 import Polysemy.Account.Effect.Password (Password, check, generate, hash)
+import Polysemy.Account.Interpreter.AccountByName (AccountQuery)
 import Polysemy.Account.Interpreter.Accounts (interpretAccounts, interpretAccountsState)
+import Polysemy.Account.Interpreter.AuthForAccount (AuthQuery)
 import Polysemy.Account.Interpreter.Password (interpretPassword, interpretPasswordId)
diff --git a/lib/Polysemy/Account/Data/Account.hs b/lib/Polysemy/Account/Data/Account.hs
--- a/lib/Polysemy/Account/Data/Account.hs
+++ b/lib/Polysemy/Account/Data/Account.hs
@@ -1,3 +1,5 @@
+{-# language NoFieldSelectors #-}
+
 -- | Description: Account data type
 module Polysemy.Account.Data.Account where
 
diff --git a/lib/Polysemy/Account/Data/AccountAuth.hs b/lib/Polysemy/Account/Data/AccountAuth.hs
--- a/lib/Polysemy/Account/Data/AccountAuth.hs
+++ b/lib/Polysemy/Account/Data/AccountAuth.hs
@@ -1,3 +1,5 @@
+{-# language NoFieldSelectors #-}
+
 -- | Description: Account auth data type
 module Polysemy.Account.Data.AccountAuth where
 
diff --git a/lib/Polysemy/Account/Data/Authed.hs b/lib/Polysemy/Account/Data/Authed.hs
new file mode 100644
--- /dev/null
+++ b/lib/Polysemy/Account/Data/Authed.hs
@@ -0,0 +1,13 @@
+-- | Description: Servant API markers for JWT auth with 'AuthedAccount'
+module Polysemy.Account.Data.Authed where
+
+import Servant.Auth (Auth, JWT)
+
+import Polysemy.Account.Data.AuthedAccount (AuthedAccount)
+import Polysemy.Account.Data.Privilege (Privilege)
+
+-- | A Servant API marker for JWT auth with 'AuthedAccount'
+type Authed i p = Auth '[JWT] (AuthedAccount i p)
+
+-- | Convenience alias for using the default privilege type with 'Authed'.
+type AuthedP i = Authed i [Privilege]
diff --git a/lib/Polysemy/Account/Data/AuthedAccount.hs b/lib/Polysemy/Account/Data/AuthedAccount.hs
--- a/lib/Polysemy/Account/Data/AuthedAccount.hs
+++ b/lib/Polysemy/Account/Data/AuthedAccount.hs
@@ -1,3 +1,5 @@
+{-# language NoFieldSelectors #-}
+
 -- | Description: Authed account data type
 module Polysemy.Account.Data.AuthedAccount where
 
diff --git a/lib/Polysemy/Account/Interpreter/AccountByName.hs b/lib/Polysemy/Account/Interpreter/AccountByName.hs
--- a/lib/Polysemy/Account/Interpreter/AccountByName.hs
+++ b/lib/Polysemy/Account/Interpreter/AccountByName.hs
@@ -17,6 +17,7 @@
   | name == accountName = Just a
   | otherwise = Nothing
 
+-- | The effects handled by 'interpretAccountByNameState'.
 type AccountQuery i p =
   [
     Query AccountByName (Maybe (Uid i (Account p))) !! DbError,
diff --git a/lib/Polysemy/Account/Interpreter/Accounts.hs b/lib/Polysemy/Account/Interpreter/Accounts.hs
--- a/lib/Polysemy/Account/Interpreter/Accounts.hs
+++ b/lib/Polysemy/Account/Interpreter/Accounts.hs
@@ -147,8 +147,8 @@
   coerce pw <$ addPassword "auth token" accountId (UnsafeRawPassword raw) expiry
 
 -- | Fail if the account name is already present in the store.
--- If the account status is `Creating', however, a previous attempt has failed critically and the account can be
--- overwritten.
+-- If the account status is `AccountStatus.Creating', however, a previous attempt has failed critically and the account
+-- can be overwritten.
 deletePreviousFailure ::
   Members [Store i (Account p), Stop AccountsError] r =>
   Uid i (Account p) ->
diff --git a/lib/Polysemy/Account/Interpreter/AuthForAccount.hs b/lib/Polysemy/Account/Interpreter/AuthForAccount.hs
--- a/lib/Polysemy/Account/Interpreter/AuthForAccount.hs
+++ b/lib/Polysemy/Account/Interpreter/AuthForAccount.hs
@@ -1,3 +1,5 @@
+{-# options_haddock prune #-}
+
 -- | Description: Interpreter for the query for auth info by account ID
 module Polysemy.Account.Interpreter.AuthForAccount where
 
@@ -16,6 +18,7 @@
   | queryId == accountId = Just a
   | otherwise = Nothing
 
+-- | The effects handled by 'interpretAuthForAccountState'..
 type AuthQuery i p =
   [
     Query (AuthForAccount i) [Uid i (AccountAuth i)] !! DbError,
diff --git a/polysemy-account.cabal b/polysemy-account.cabal
--- a/polysemy-account.cabal
+++ b/polysemy-account.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           polysemy-account
-version:        0.1.0.0
+version:        0.2.0.0
 synopsis:       Account management with Servant and Polysemy
 description:    See https://hackage.haskell.org/package/polysemy-account/docs/Polysemy-Account.html
 category:       Web
@@ -32,6 +32,7 @@
       Polysemy.Account.Data.AccountsConfig
       Polysemy.Account.Data.AccountsError
       Polysemy.Account.Data.AccountStatus
+      Polysemy.Account.Data.Authed
       Polysemy.Account.Data.AuthedAccount
       Polysemy.Account.Data.AuthForAccount
       Polysemy.Account.Data.AuthToken
@@ -116,14 +117,15 @@
   ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities -Wunused-packages -fplugin=Polysemy.Plugin
   build-depends:
       base >=4.12 && <5
-    , chronos
-    , elocrypt
+    , chronos ==1.1.*
+    , elocrypt ==2.1.*
     , password ==3.0.*
     , polysemy
     , polysemy-db
     , polysemy-plugin
     , prelate >=0.5
-    , random
+    , random ==1.2.*
+    , servant-auth ==0.4.*
     , sqel
   mixins:
       base hiding (Prelude)
