diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.12.2
+
+add `errorM`, `terrorM`, and `terror`
+
 ## 0.12.0
 
 * Drop system-filepath
diff --git a/ClassyPrelude.hs b/ClassyPrelude.hs
--- a/ClassyPrelude.hs
+++ b/ClassyPrelude.hs
@@ -609,3 +609,27 @@
 applyDList :: DList a -> [a] -> [a]
 applyDList = DList.apply
 {-# INLINE applyDList #-}
+
+-- | Throw a monadic exception from a String
+--
+-- > erroM = throwM . userError
+--
+-- Since 0.12.1
+errorM :: (MonadThrow m) => String -> m a
+errorM = throwM . userError
+
+-- | Throw a monadic exception from a Text
+--
+-- > terroM = errorM . unpack
+--
+-- Since 0.12.1
+terrorM :: (MonadThrow m) => Text -> m a
+terrorM = errorM . unpack
+
+-- | Throw an error from a Text
+--
+-- > terror = error . unpack
+--
+-- Since 0.12.1
+terror :: Text -> a
+terror = error . unpack
diff --git a/classy-prelude.cabal b/classy-prelude.cabal
--- a/classy-prelude.cabal
+++ b/classy-prelude.cabal
@@ -1,5 +1,5 @@
 name:                classy-prelude
-version:             0.12.0.1
+version:             0.12.1
 synopsis:            A typeclass-based Prelude.
 description:         Modern best practices without name collisions. No partial functions are exposed, but modern data structures are, without requiring import lists. Qualified modules also are not needed: instead operations are based on type-classes from the mono-traversable package.
 
@@ -16,7 +16,7 @@
 library
   exposed-modules:     ClassyPrelude
   build-depends:       base                          >= 4          && < 5
-                     , basic-prelude                 >= 0.4        && < 0.6
+                     , basic-prelude                 >= 0.4        && < 0.5
                      , transformers
                      , containers                    >= 0.4.2
                      , text
