diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.12.3
+
+* mono-traversable-0.9.3 support
+
 ## 0.12.2
 
 add `errorM`, `terrorM`, and `terror`
diff --git a/ClassyPrelude.hs b/ClassyPrelude.hs
--- a/ClassyPrelude.hs
+++ b/ClassyPrelude.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE TypeFamilies #-}
@@ -365,8 +366,10 @@
 unions :: (MonoFoldable c, SetContainer (Element c)) => c -> Element c
 unions = ofoldl' union Monoid.mempty
 
+#if !MIN_VERSION_mono_traversable(0, 9, 3)
 intercalate :: (Monoid (Element c), IsSequence c) => Element c -> c -> Element c
 intercalate xs xss = concat (intersperse xs xss)
+#endif
 
 asByteString :: ByteString -> ByteString
 asByteString = id
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.1.1
+version:             0.12.3
 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.
 
@@ -25,7 +25,7 @@
                      , unordered-containers
                      , hashable
                      , lifted-base                   >= 0.2
-                     , mono-traversable              >= 0.9.1
+                     , mono-traversable              >= 0.9.3
                      , exceptions                    >= 0.5
                      , semigroups
                      , vector-instances
