diff --git a/interlude-l.cabal b/interlude-l.cabal
--- a/interlude-l.cabal
+++ b/interlude-l.cabal
@@ -1,5 +1,5 @@
 name:                interlude-l
-version:             0.1.0.5
+version:             0.1.0.6
 synopsis:            Prelude replacement based on protolude
 description:         Prelude replacement based on protolude
 license:             BSD3
@@ -20,10 +20,10 @@
                      , string-conv == 0.1.*
                      , exceptions == 0.8.*
                      , mtl == 2.2.*
-                     , lens == 4.13.*
+                     , lens == 4.14.*
                      , aeson == 0.11.*
                      , witherable == 0.1.*
-                     , transformers == 0.4.*
+                     , transformers == 0.5.*
                      , mtl == 2.2.*
                      , monad-control
                      , MonadRandom
diff --git a/src/Interlude.hs b/src/Interlude.hs
--- a/src/Interlude.hs
+++ b/src/Interlude.hs
@@ -1,57 +1,57 @@
-{-# LANGUAGE UndecidableInstances, MultiParamTypeClasses, FlexibleInstances, FlexibleContexts
-           , NoMonomorphismRestriction, OverloadedStrings #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-module Interlude ( module X, unsafeTail, unsafeHead, unsafeLast, unsafeInit
-                 , pshow, perror, pread, noWarnUndefined, perrorToFile ) where
-
-import qualified Prelude
-import Protolude as X hiding ( (&), catch, try, (<.>), wait, error, filter, ordNub
-                             , catMaybes, mapMaybe, handle, catches, Handler(..) )
-import Prelude as X (error)
-import Control.Monad.Catch as X ( MonadThrow, MonadCatch, catch, throwM, try, handle, catches
-                                , Handler(..), handleIf, catchIf )
-import Control.Monad.Trans.Class as X
-import Control.Monad.State as X (modify')
-import Control.Lens.Operators as X
-import Control.Lens.TH as X
-import Control.Lens as X (view)
-import Data.Aeson.TH as X
-import Data.Aeson as X (ToJSON, FromJSON)
-import Data.Coerce as X
-import Data.Char as X
-import Data.Witherable as X
-import Data.String
-import Control.Monad.Trans.Control as X (MonadBaseControl, MonadTransControl)
-import Control.Monad.Random as X
-import GHC.IO
-
-import qualified Data.Text as Text
-
-unsafeTail :: [a] -> [a]
-unsafeTail = Prelude.tail
-
-unsafeHead :: [a] -> a
-unsafeHead = Prelude.head
-
-unsafeLast :: [a] -> a
-unsafeLast = Prelude.last
-
-unsafeInit :: [a] -> [a]
-unsafeInit = Prelude.init
-
-pshow :: (Show a, IsString c) => a -> c
-pshow = fromString . show
-
-perror :: StringConv stringLike String => stringLike -> a
-perror = error . toS
-
-pread :: (Read a, StringConv stringLike String) => stringLike -> a
-pread = Prelude.read . toS
-
-noWarnUndefined :: a
-noWarnUndefined = Prelude.undefined
-
-perrorToFile :: StringConv stringLike Text => Text -> stringLike -> a
-perrorToFile path err = unsafePerformIO $ do
-    writeFile (toS path) (toS err)
-    perror (Text.take 100 (toS err :: Text) <> "...REST OF ERROR IN " <> toS path)
+{-# LANGUAGE UndecidableInstances, MultiParamTypeClasses, FlexibleInstances, FlexibleContexts
+           , NoMonomorphismRestriction, OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+module Interlude ( module X, unsafeTail, unsafeHead, unsafeLast, unsafeInit
+                 , pshow, perror, pread, noWarnUndefined, perrorToFile ) where
+
+import qualified Prelude
+import Protolude as X hiding ( (&), catch, try, (<.>), wait, error, filter, ordNub
+                             , catMaybes, mapMaybe, handle, catches, Handler(..) )
+import Prelude as X (error)
+import Control.Monad.Catch as X ( MonadThrow, MonadCatch, catch, throwM, try, handle, catches
+                                , Handler(..), handleIf, catchIf )
+import Control.Monad.Trans.Class as X
+import Control.Monad.State as X (modify')
+import Control.Lens.Operators as X
+import Control.Lens.TH as X
+import Control.Lens as X (view)
+import Data.Aeson.TH as X
+import Data.Aeson as X (ToJSON, FromJSON)
+import Data.Coerce as X
+import Data.Char as X
+import Data.Witherable as X
+import Data.String
+import Control.Monad.Trans.Control as X (MonadBaseControl, MonadTransControl)
+import Control.Monad.Random as X
+import GHC.IO
+
+import qualified Data.Text as Text
+
+unsafeTail :: [a] -> [a]
+unsafeTail = Prelude.tail
+
+unsafeHead :: [a] -> a
+unsafeHead = Prelude.head
+
+unsafeLast :: [a] -> a
+unsafeLast = Prelude.last
+
+unsafeInit :: [a] -> [a]
+unsafeInit = Prelude.init
+
+pshow :: (Show a, IsString c) => a -> c
+pshow = fromString . show
+
+perror :: StringConv stringLike String => stringLike -> a
+perror = error . toS
+
+pread :: (Read a, StringConv stringLike String) => stringLike -> a
+pread = Prelude.read . toS
+
+noWarnUndefined :: a
+noWarnUndefined = Prelude.undefined
+
+perrorToFile :: StringConv stringLike Text => Text -> stringLike -> a
+perrorToFile path err = unsafePerformIO $ do
+    writeFile (toS path) (toS err)
+    perror (Text.take 100 (toS err :: Text) <> "...REST OF ERROR IN " <> toS path)
