diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for base64-lens
 
+## 0.1.3.2
+
+* Conditional API around lens-4.x vs lens-5 safe pragmas
+
 ## 0.1.3.1
 
 * Mark trustworthy modules as safe
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,6 +1,4 @@
-module Main where
-
-import Distribution.Extra.Doctest (defaultMainWithDoctests)
+import Distribution.Simple
 
 main :: IO ()
-main = defaultMainWithDoctests "doctests"
+main = defaultMain
diff --git a/base16-lens.cabal b/base16-lens.cabal
--- a/base16-lens.cabal
+++ b/base16-lens.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.0
 name:               base16-lens
-version:            0.1.3.1
+version:            0.1.3.2
 synopsis:           Optics for the Base16 library
 description:        Prisms and pattern synonyms for the Base16 library
 homepage:           https://github.com/emilypi/base16-lens
@@ -11,7 +11,7 @@
 maintainer:         Emily Pillmore <emilypi@cohomolo.gy>
 copyright:          (c) 2020-2021 Emily Pillmore
 category:           Data
-build-type:         Custom
+build-type:         Simple
 extra-source-files:
   CHANGELOG.md
   README.md
@@ -23,11 +23,6 @@
   type:     git
   location: https://github.com/emilypi/base16-lens.git
 
-custom-setup
-  setup-depends:
-      base           >=4.10 && <5
-    , Cabal
-    , cabal-doctest
 
 library
   exposed-modules:
diff --git a/src/Data/ByteString/Base16/Lens.hs b/src/Data/ByteString/Base16/Lens.hs
--- a/src/Data/ByteString/Base16/Lens.hs
+++ b/src/Data/ByteString/Base16/Lens.hs
@@ -1,6 +1,11 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE ViewPatterns #-}
+#if MIN_VERSION_lens(5,0,0)
 {-# LANGUAGE Safe #-}
+#else
+{-# LANGUAGE Trustworthy #-}
+#endif
 -- |
 -- Module       : Data.ByteString.Base16.Lens
 -- Copyright    : (c) 2019-2020 Emily Pillmore
diff --git a/src/Data/ByteString/Lazy/Base16/Lens.hs b/src/Data/ByteString/Lazy/Base16/Lens.hs
--- a/src/Data/ByteString/Lazy/Base16/Lens.hs
+++ b/src/Data/ByteString/Lazy/Base16/Lens.hs
@@ -1,6 +1,11 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE ViewPatterns #-}
+#if MIN_VERSION_lens(5,0,0)
 {-# LANGUAGE Safe #-}
+#else
+{-# LANGUAGE Trustworthy #-}
+#endif
 -- |
 -- Module       : Data.ByteString.Lazy.Base16.Lens
 -- Copyright    : (c) 2019-2020 Emily Pillmore
diff --git a/src/Data/ByteString/Short/Base16/Lens.hs b/src/Data/ByteString/Short/Base16/Lens.hs
--- a/src/Data/ByteString/Short/Base16/Lens.hs
+++ b/src/Data/ByteString/Short/Base16/Lens.hs
@@ -1,6 +1,11 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE ViewPatterns #-}
+#if MIN_VERSION_lens(5,0,0)
 {-# LANGUAGE Safe #-}
+#else
+{-# LANGUAGE Trustworthy #-}
+#endif
 -- |
 -- Module       : Data.ByteString.Short.Base16.Lens
 -- Copyright    : (c) 2019-2020 Emily Pillmore
diff --git a/src/Data/Text/Encoding/Base16/Error/Lens.hs b/src/Data/Text/Encoding/Base16/Error/Lens.hs
--- a/src/Data/Text/Encoding/Base16/Error/Lens.hs
+++ b/src/Data/Text/Encoding/Base16/Error/Lens.hs
@@ -1,5 +1,10 @@
-{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE CPP #-}
+#if MIN_VERSION_lens(5,0,0)
 {-# LANGUAGE Safe #-}
+#else
+{-# LANGUAGE Trustworthy #-}
+#endif
 -- |
 -- Module       : Data.Text.Encoding.Base16.Error.Lens
 -- Copyright    : (c) 2019-2020 Emily Pillmore
@@ -27,14 +32,14 @@
 
 -- | A 'Prism'' into the 'DecodeError' case of a 'Base16Error'
 --
-_DecodeError :: forall err. Prism' (Base16Error err) Text
-_DecodeError = prism' DecodeError $ \e -> case e of
+_DecodeError :: Prism' (Base16Error err) Text
+_DecodeError = prism' DecodeError $ \case
     DecodeError t -> Just t
     ConversionError{} -> Nothing
 
 -- | A 'Prism'' into the 'ConversionError' case of a 'Base16Error'
 --
-_ConversionError :: forall err. Prism' (Base16Error err) err
-_ConversionError = prism' ConversionError $ \e -> case e of
+_ConversionError :: Prism' (Base16Error err) err
+_ConversionError = prism' ConversionError $ \case
     ConversionError err -> Just err
     DecodeError{} -> Nothing
diff --git a/src/Data/Text/Encoding/Base16/Lens.hs b/src/Data/Text/Encoding/Base16/Lens.hs
--- a/src/Data/Text/Encoding/Base16/Lens.hs
+++ b/src/Data/Text/Encoding/Base16/Lens.hs
@@ -1,6 +1,11 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE ViewPatterns #-}
+#if MIN_VERSION_lens(5,0,0)
 {-# LANGUAGE Safe #-}
+#else
+{-# LANGUAGE Trustworthy #-}
+#endif
 -- |
 -- Module       : Data.Text.Encoding.Base16.Lens
 -- Copyright    : (c) 2019-2020 Emily Pillmore
diff --git a/src/Data/Text/Lazy/Encoding/Base16/Lens.hs b/src/Data/Text/Lazy/Encoding/Base16/Lens.hs
--- a/src/Data/Text/Lazy/Encoding/Base16/Lens.hs
+++ b/src/Data/Text/Lazy/Encoding/Base16/Lens.hs
@@ -1,6 +1,11 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE ViewPatterns #-}
+#if MIN_VERSION_lens(5,0,0)
 {-# LANGUAGE Safe #-}
+#else
+{-# LANGUAGE Trustworthy #-}
+#endif
 -- |
 -- Module       : Data.Text.Lazy.Encoding.Base16.Lens
 -- Copyright    : (c) 2019-2020 Emily Pillmore
diff --git a/src/Data/Text/Short/Encoding/Base16/Lens.hs b/src/Data/Text/Short/Encoding/Base16/Lens.hs
--- a/src/Data/Text/Short/Encoding/Base16/Lens.hs
+++ b/src/Data/Text/Short/Encoding/Base16/Lens.hs
@@ -1,6 +1,11 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE ViewPatterns #-}
+#if MIN_VERSION_lens(5,0,0)
 {-# LANGUAGE Safe #-}
+#else
+{-# LANGUAGE Trustworthy #-}
+#endif
 -- |
 -- Module       : Data.Text.Short.Encoding.Base16.Lens
 -- Copyright    : (c) 2019-2020 Emily Pillmore
