diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,23 @@
+# ChangeLog for classy-prelude
+
+## 1.5.0.3
+
+* Don't import Data.Functor.unzip [#215](https://github.com/snoyberg/mono-traversable/pull/215)
+
+## 1.5.0.2
+
+* Fix building with time >= 1.10 [#207](https://github.com/snoyberg/mono-traversable/pull/207).
+
+## 1.5.0.1
+
+* Export a compatibility shim for `parseTime` as it has been removed in `time-1.10`.
+  See <https://hackage.haskell.org/package/time-1.12/changelog>
+
+## 1.5.0
+
+* Removed `alwaysSTM` and `alwaysSucceedsSTM`. See
+  <https://github.com/ghc-proposals/ghc-proposals/pull/77>
+
 ## 1.4.0
 
 * Switch to `MonadUnliftIO`
diff --git a/classy-prelude.cabal b/classy-prelude.cabal
--- a/classy-prelude.cabal
+++ b/classy-prelude.cabal
@@ -1,11 +1,11 @@
--- This file has been generated from package.yaml by hpack version 0.20.0.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.35.1.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: 647ba4603b5d219a6d274f99659ecd7683c8279bf0090aac1a69da0927940ae9
 
 name:           classy-prelude
-version:        1.4.0
+version:        1.5.0.3
 synopsis:       A typeclass-based Prelude.
 description:    See docs and README at <http://www.stackage.org/package/classy-prelude>
 category:       Control, Prelude
@@ -16,23 +16,25 @@
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
-
 extra-source-files:
-    ChangeLog.md
     README.md
+    ChangeLog.md
 
 source-repository head
   type: git
   location: https://github.com/snoyberg/mono-traversable
 
 library
+  exposed-modules:
+      ClassyPrelude
+  other-modules:
+      Paths_classy_prelude
   hs-source-dirs:
       src
   ghc-options: -Wall -fno-warn-orphans
   build-depends:
       async
-    , base >=4.9 && <5
+    , base >=4.13 && <5
     , basic-prelude >=0.7
     , bifunctors
     , bytestring
@@ -45,10 +47,9 @@
     , mono-traversable >=1.0
     , mono-traversable-instances
     , mtl
-    , mutable-containers >=0.3 && <0.4
+    , mutable-containers ==0.3.*
     , primitive
     , say
-    , semigroups
     , stm
     , stm-chans >=3
     , text
@@ -58,26 +59,22 @@
     , unordered-containers
     , vector
     , vector-instances
-  exposed-modules:
-      ClassyPrelude
-  other-modules:
-      Paths_classy_prelude
   default-language: Haskell2010
 
 test-suite test
   type: exitcode-stdio-1.0
   main-is: main.hs
+  other-modules:
+      Paths_classy_prelude
   hs-source-dirs:
       test
   ghc-options: -Wall
   build-depends:
       QuickCheck
-    , base >=4.9 && <5
+    , base >=4.13 && <5
     , classy-prelude
     , containers
     , hspec >=1.3
     , transformers
     , unordered-containers
-  other-modules:
-      Paths_classy_prelude
   default-language: Haskell2010
diff --git a/src/ClassyPrelude.hs b/src/ClassyPrelude.hs
--- a/src/ClassyPrelude.hs
+++ b/src/ClassyPrelude.hs
@@ -25,8 +25,6 @@
       -- ** UnliftIO reexports
     , module UnliftIO
       -- ** Mutable references
-    , alwaysSTM
-    , alwaysSucceedsSTM
     , orElseSTM
     , module Data.Mutable
       -- ** STM Channels
@@ -49,6 +47,9 @@
     , traceShowM
       -- ** Time (since 0.6.1)
     , module Data.Time
+#if MIN_VERSION_time(1,10,0)
+    , parseTime
+#endif
       -- ** Generics (since 0.8.1)
     , Generic
       -- ** Transformers (since 0.9.4)
@@ -152,7 +153,7 @@
 
 import qualified Prelude
 import Control.Applicative ((<**>),liftA,liftA2,liftA3,Alternative (..), optional)
-import Data.Functor
+import Data.Functor hiding (unzip)
 import Control.Exception (assert)
 import Control.DeepSeq (deepseq, ($!!), force, NFData (..))
 import Control.Monad (when, unless, void, liftM, ap, forever, join, replicateM_, guard, MonadPlus (..), (=<<), (>=>), (<=<), liftM2, liftM3, liftM4, liftM5)
@@ -192,17 +193,21 @@
     , toGregorian
     , fromGregorian
     , formatTime
+#if !MIN_VERSION_time(1,10,0)
     , parseTime
+#endif
     , parseTimeM
     , getCurrentTime
     , defaultTimeLocale
     )
+import qualified Data.Time as Time
 
 import qualified Data.Set as Set
 import qualified Data.Map as Map
 import qualified Data.HashSet as HashSet
 
 import GHC.Generics (Generic)
+import GHC.Stack (HasCallStack)
 
 import Control.Monad.Primitive (primToPrim, primToIO, primToST)
 import Data.Primitive.MutVar
@@ -220,10 +225,6 @@
 import Control.Concurrent.STM.TMQueue
 import qualified Control.Concurrent
 
-#if MIN_VERSION_base(4,9,0)
-import GHC.Stack (HasCallStack)
-#endif
-
 tshow :: Show a => a -> Text
 tshow = fromList . Prelude.show
 
@@ -336,11 +337,7 @@
 -- @"Prelude".'Prelude.undefined'@.
 --
 -- Since 0.5.5
-#if MIN_VERSION_base(4,9,0)
 undefined :: HasCallStack => a
-#else
-undefined :: a
-#endif
 undefined = error "ClassyPrelude.undefined"
 {-# DEPRECATED undefined "It is highly recommended that you either avoid partial functions or provide meaningful error messages" #-}
 
@@ -433,16 +430,6 @@
     elem_by _  _ []     = False
     elem_by eq y (x:xs) = y `eq` x || elem_by eq y xs
 
--- | Synonym for 'STM.always'.
-alwaysSTM :: STM Bool -> STM ()
-alwaysSTM = STM.always
-{-# INLINE alwaysSTM #-}
-
--- | Synonym for 'STM.alwaysSucceeds'.
-alwaysSucceedsSTM :: STM a -> STM ()
-alwaysSucceedsSTM = STM.alwaysSucceeds
-{-# INLINE alwaysSucceedsSTM #-}
-
 -- | Synonym for 'STM.orElse'.
 orElseSTM :: STM a -> STM a -> STM a
 orElseSTM = STM.orElse
@@ -639,3 +626,16 @@
 -- @since 1.3.1
 interact :: MonadIO m => (LText -> LText) -> m ()
 interact = liftIO . LTextIO.interact
+
+
+#if MIN_VERSION_time(1,10,0)
+parseTime 
+  :: Time.ParseTime t
+  => Time.TimeLocale -- ^ Time locale.
+  -> String -- ^ Format string.
+  -> String -- ^ Input string.
+  -> Maybe t -- ^ The time value, or 'Nothing' if the input could not be parsed using the given format.
+parseTime = parseTimeM True
+#endif
+
+
