diff --git a/Blammo.cabal b/Blammo.cabal
--- a/Blammo.cabal
+++ b/Blammo.cabal
@@ -1,6 +1,6 @@
 cabal-version:   1.18
 name:            Blammo
-version:         2.0.0.0
+version:         2.1.0.0
 license:         MIT
 license-file:    LICENSE
 maintainer:      Freckle Education
@@ -27,10 +27,12 @@
         Blammo.Logging.LogSettings
         Blammo.Logging.LogSettings.Env
         Blammo.Logging.LogSettings.LogLevels
+        Blammo.Logging.Setup
         Blammo.Logging.Simple
         Blammo.Logging.Terminal
         Blammo.Logging.Terminal.LogPiece
         Blammo.Logging.Test
+        Blammo.Logging.ThreadContext
         Blammo.Logging.WithLogger
         Data.Aeson.Compat
         System.Log.FastLogger.Compat
diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,28 @@
-## [_Unreleased_](https://github.com/freckle/blammo/compare/v1.2.1.0...main)
+## [_Unreleased_](https://github.com/freckle/blammo/compare/Blammo-v2.2.0.0...main)
 
-## [v2.0.0.0](https://github.com/freckle/blammo/compare/v1.2.1.0...v2.0.0.0)
+## [v2.1.0.0](https://github.com/freckle/blammo/compare/v2.0.0.0...Blammo-v2.1.0.0)
+
+Removes less frequently used definitions from the main `Blammo.Logging` module
+into other modules.
+
+- Moved from `Blammo.Logging` to new module `Blammo.Logging.ThreadContext`:
+  `MonadMask`, `withThreadContext`, `myThreadContext`, `Pair`.
+- Removed from `Blammo.Logging` (still available in `Blammo.Logging.LogSettings`):
+  `LogSettings`, `LogDestination (..)`, `LogFormat (..)`, `defaultLogSettings`,
+  `LogColor (..)`, `setLogSettingsLevels`, `setLogSettingsDestination`,
+  `setLogSettingsFormat`, `setLogSettingsColor`, `setLogSettingsBreakpoint`,
+  `setLogSettingsConcurrency`.
+- Moved from `Blammo.Logging` to new module `Blammo.Logging.Setup`:
+  `HasLogger (..)`, `withLogger`, `newLogger`, `runLoggerLoggingT`, `LoggingT`,
+  `WithLogger (..)`, `runWithLogger`
+
+`Blammo.Logging.Simple` has been expanded to include reëxports of:
+
+- `Blammo.Logging.LogSettings`
+- `Blammo.Logging.Setup`
+- `Blammo.Logging.ThreadContext`
+
+## [v2.0.0.0](https://github.com/freckle/blammo/compare/v1.2.1.0...Blammo-v2.0.0.0)
 
 - Remove module `Network.Wai.Middleware.Logging`. It is moved to a new
   package, `Blammo-wai`.
diff --git a/src/Blammo/Logging.hs b/src/Blammo/Logging.hs
--- a/src/Blammo/Logging.hs
+++ b/src/Blammo/Logging.hs
@@ -1,21 +1,6 @@
 module Blammo.Logging
-  ( LogSettings
-  , LogLevel (..)
-  , LogDestination (..)
-  , LogFormat (..)
-  , LogColor (..)
-  , defaultLogSettings
-  , setLogSettingsLevels
-  , setLogSettingsDestination
-  , setLogSettingsFormat
-  , setLogSettingsColor
-  , setLogSettingsBreakpoint
-  , setLogSettingsConcurrency
+  ( LogLevel (..)
   , Logger
-  , HasLogger (..)
-  , withLogger
-  , newLogger
-  , runLoggerLoggingT
 
     -- * Re-exports from "Control.Monad.Logger.Aeson"
 
@@ -24,18 +9,9 @@
   , (.=)
   , Series
 
-    -- ** Thread Context
-  , MonadMask
-  , withThreadContext
-  , myThreadContext
-  , Pair
-
-    -- ** Transformers
+    -- ** Classes
   , MonadLogger (..)
   , MonadLoggerIO (..)
-  , LoggingT
-  , WithLogger (..)
-  , runWithLogger
 
     -- ** Common logging functions
 
@@ -57,23 +33,6 @@
   , logOtherNS
   ) where
 
-import Blammo.Logging.LogSettings
 import Blammo.Logging.Logger
-import Blammo.Logging.WithLogger
-import Control.Lens (view)
-import Control.Monad.Catch (MonadMask)
-import Control.Monad.IO.Unlift (MonadUnliftIO)
 import Control.Monad.Logger.Aeson
 import Data.Aeson (Series)
-import Data.Aeson.Types (Pair)
-import UnliftIO.Exception (finally)
-
--- | Initialize logging, pass a 'Logger' to the callback, and clean up at the end
---
--- Applications should avoid calling this more than once in their lifecycle.
-runLoggerLoggingT
-  :: (MonadUnliftIO m, HasLogger env) => env -> LoggingT m a -> m a
-runLoggerLoggingT env f =
-  runLoggingT f (runLogAction logger) `finally` flushLogStr logger
- where
-  logger = view loggerL env
diff --git a/src/Blammo/Logging/Setup.hs b/src/Blammo/Logging/Setup.hs
new file mode 100644
--- /dev/null
+++ b/src/Blammo/Logging/Setup.hs
@@ -0,0 +1,51 @@
+module Blammo.Logging.Setup
+  ( HasLogger (..)
+  , withLogger
+  , newLogger
+  , runLoggerLoggingT
+  , LoggingT
+  , WithLogger (..)
+  , runWithLogger
+  , newLoggerEnv
+  , withLoggerEnv
+  , runSimpleLoggingT
+  ) where
+
+import Prelude
+
+import Blammo.Logging
+import qualified Blammo.Logging.LogSettings.Env as Env
+import Blammo.Logging.Logger
+import Blammo.Logging.WithLogger
+import Control.Lens (view)
+import Control.Monad.IO.Class (MonadIO (..))
+import Control.Monad.IO.Unlift (MonadUnliftIO)
+import Control.Monad.Logger.Aeson
+import UnliftIO.Exception (finally)
+
+-- | Construct a 'Logger' configured via environment variables
+newLoggerEnv :: MonadIO m => m Logger
+newLoggerEnv = liftIO $ newLogger =<< Env.parse
+
+-- | Initialize logging (configured via environment variables),
+--   pass a 'Logger' to the callback, and clean up at the end
+--
+-- Applications should avoid calling this more than once in their lifecycle.
+withLoggerEnv :: MonadUnliftIO m => (Logger -> m a) -> m a
+withLoggerEnv f = liftIO Env.parse >>= \logger -> withLogger logger f
+
+-- | Construct a 'Logger' configured via environment variables and use it
+runSimpleLoggingT :: MonadUnliftIO m => LoggingT m a -> m a
+runSimpleLoggingT f = do
+  logger <- newLoggerEnv
+  runLoggerLoggingT logger f
+
+-- | Initialize logging, pass a 'Logger' to the callback, and clean up at the end
+--
+-- Applications should avoid calling this more than once in their lifecycle.
+runLoggerLoggingT
+  :: (MonadUnliftIO m, HasLogger env) => env -> LoggingT m a -> m a
+runLoggerLoggingT env f =
+  runLoggingT f (runLogAction logger) `finally` flushLogStr logger
+ where
+  logger = view loggerL env
diff --git a/src/Blammo/Logging/Simple.hs b/src/Blammo/Logging/Simple.hs
--- a/src/Blammo/Logging/Simple.hs
+++ b/src/Blammo/Logging/Simple.hs
@@ -1,31 +1,12 @@
 -- | Simplified out-of-the-box logging
 module Blammo.Logging.Simple
-  ( newLoggerEnv
-  , withLoggerEnv
-  , runSimpleLoggingT
-  , module Blammo.Logging
+  ( module Blammo.Logging
+  , module Blammo.Logging.LogSettings
+  , module Blammo.Logging.ThreadContext
+  , module Blammo.Logging.Setup
   ) where
 
-import Prelude
-
 import Blammo.Logging
-import qualified Blammo.Logging.LogSettings.Env as Env
-import Control.Monad.IO.Class (MonadIO (..))
-import Control.Monad.IO.Unlift (MonadUnliftIO)
-
--- | Construct a 'Logger' configured via environment variables
-newLoggerEnv :: MonadIO m => m Logger
-newLoggerEnv = liftIO $ newLogger =<< Env.parse
-
--- | Initialize logging (configured via environment variables),
---   pass a 'Logger' to the callback, and clean up at the end
---
--- Applications should avoid calling this more than once in their lifecycle.
-withLoggerEnv :: MonadUnliftIO m => (Logger -> m a) -> m a
-withLoggerEnv f = liftIO Env.parse >>= \logger -> withLogger logger f
-
--- | Construct a 'Logger' configured via environment variables and use it
-runSimpleLoggingT :: MonadUnliftIO m => LoggingT m a -> m a
-runSimpleLoggingT f = do
-  logger <- newLoggerEnv
-  runLoggerLoggingT logger f
+import Blammo.Logging.LogSettings
+import Blammo.Logging.Setup
+import Blammo.Logging.ThreadContext
diff --git a/src/Blammo/Logging/ThreadContext.hs b/src/Blammo/Logging/ThreadContext.hs
new file mode 100644
--- /dev/null
+++ b/src/Blammo/Logging/ThreadContext.hs
@@ -0,0 +1,10 @@
+module Blammo.Logging.ThreadContext
+  ( MonadMask
+  , withThreadContext
+  , myThreadContext
+  , Pair
+  ) where
+
+import Control.Monad.Catch (MonadMask)
+import Control.Monad.Logger.Aeson (myThreadContext, withThreadContext)
+import Data.Aeson.Types (Pair)
diff --git a/tests/Blammo/Logging/LoggerSpec.hs b/tests/Blammo/Logging/LoggerSpec.hs
--- a/tests/Blammo/Logging/LoggerSpec.hs
+++ b/tests/Blammo/Logging/LoggerSpec.hs
@@ -6,8 +6,8 @@
 
 import Prelude
 
-import Blammo.Logging
 import Blammo.Logging.Logger
+import Blammo.Logging.Simple
 import Control.Monad.Reader (runReaderT)
 import Data.Aeson (Value (..))
 import qualified Data.Aeson.Compat as KeyMap
diff --git a/tests/Blammo/Logging/TerminalSpec.hs b/tests/Blammo/Logging/TerminalSpec.hs
--- a/tests/Blammo/Logging/TerminalSpec.hs
+++ b/tests/Blammo/Logging/TerminalSpec.hs
@@ -9,7 +9,8 @@
 import Blammo.Logging
 import Blammo.Logging.Logger (LoggedMessage (..))
 import Blammo.Logging.Terminal
-import Data.Aeson
+import Data.Aeson (encode, object)
+import Data.Aeson.Types (Object, Pair, Value (..))
 import Data.ByteString (ByteString)
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Char8 as BS8
