diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+3.9.0.3
+-------
+* Bumped dependency on `generic-deriving` again.
+
 3.9.0.2
 -------
 * Bumped dependency on `generic-deriving` to enable building on GHC HEAD.
diff --git a/lens.cabal b/lens.cabal
--- a/lens.cabal
+++ b/lens.cabal
@@ -1,6 +1,6 @@
 name:          lens
 category:      Data, Lenses
-version:       3.9.0.2
+version:       3.9.0.3
 license:       BSD3
 cabal-version: >= 1.8
 license-file:  LICENSE
@@ -175,7 +175,7 @@
     containers                >= 0.4.0    && < 0.6,
     distributive              >= 0.3      && < 1,
     filepath                  >= 1.2.0.0  && < 1.4,
-    generic-deriving          >= 1.4      && < 1.6,
+    generic-deriving          >= 1.4      && < 1.7,
     ghc-prim,
     hashable                  >= 1.1.2.3  && < 1.3,
     MonadCatchIO-transformers >= 0.3      && < 0.4,
@@ -186,7 +186,7 @@
     reflection                >= 1.1.6    && < 2,
     semigroupoids             >= 3.0.2    && < 4,
     semigroups                >= 0.8.4    && < 1,
-    split                     == 0.2.*,
+    split                     >= 0.2      && < 0.2.2,
     tagged                    >= 0.4.4    && < 1,
     template-haskell          >= 2.4      && < 2.10,
     text                      >= 0.11     && < 0.12,
diff --git a/src/Control/Lens/Internal/Indexed.hs b/src/Control/Lens/Internal/Indexed.hs
--- a/src/Control/Lens/Internal/Indexed.hs
+++ b/src/Control/Lens/Internal/Indexed.hs
@@ -46,10 +46,10 @@
 import Data.Int
 import Data.Profunctor
 import Data.Profunctor.Rep
-import Data.Profunctor.Unsafe
 import Data.Traversable
 import Prelude hiding ((.),id)
 #ifndef SAFE
+import Data.Profunctor.Unsafe
 import Unsafe.Coerce
 #endif
 
@@ -146,10 +146,12 @@
   {-# INLINE lmap #-}
   rmap bc iab = Indexed $ \i -> bc . runIndexed iab i
   {-# INLINE rmap #-}
+#ifndef SAFE
   ( .# ) ibc _ = unsafeCoerce ibc
   {-# INLINE ( .# ) #-}
   ( #. ) _ = unsafeCoerce
   {-# INLINE ( #. ) #-}
+#endif
 
 instance Corepresentable (Indexed i) where
   type Corep (Indexed i) = (,) i
diff --git a/src/Control/Lens/Internal/Iso.hs b/src/Control/Lens/Internal/Iso.hs
--- a/src/Control/Lens/Internal/Iso.hs
+++ b/src/Control/Lens/Internal/Iso.hs
@@ -18,8 +18,8 @@
   ) where
 
 import Data.Profunctor
-import Data.Profunctor.Unsafe
 #ifndef SAFE
+import Data.Profunctor.Unsafe
 import Unsafe.Coerce
 #endif
 import Data.ByteString       as StrictB
@@ -51,10 +51,12 @@
   {-# INLINE lmap #-}
   rmap f (Exchange sa bt) = Exchange sa (f . bt)
   {-# INLINE rmap #-}
+#ifndef SAFE
   ( #. ) _ = unsafeCoerce
   {-# INLINE ( #. ) #-}
   ( .# ) p _ = unsafeCoerce p
   {-# INLINE ( .# ) #-}
+#endif
 
 ------------------------------------------------------------------------------
 -- Reversible
diff --git a/src/Control/Lens/Internal/Prism.hs b/src/Control/Lens/Internal/Prism.hs
--- a/src/Control/Lens/Internal/Prism.hs
+++ b/src/Control/Lens/Internal/Prism.hs
@@ -18,8 +18,8 @@
   ) where
 
 import Data.Profunctor
-import Data.Profunctor.Unsafe
 #ifndef SAFE
+import Data.Profunctor.Unsafe
 import Unsafe.Coerce
 #endif
 
@@ -45,10 +45,13 @@
   {-# INLINE lmap #-}
   rmap f (Market bt seta) = Market (f . bt) (either (Left . f) Right . seta)
   {-# INLINE rmap #-}
+
+#ifndef SAFE
   ( #. ) _ = unsafeCoerce
   {-# INLINE ( #. ) #-}
   ( .# ) p _ = unsafeCoerce p
   {-# INLINE ( .# ) #-}
+#endif
 
 instance Choice (Market a b) where
   left' (Market bt seta) = Market (Left . bt) $ \sc -> case sc of
diff --git a/src/Control/Lens/Prism.hs b/src/Control/Lens/Prism.hs
--- a/src/Control/Lens/Prism.hs
+++ b/src/Control/Lens/Prism.hs
@@ -49,6 +49,8 @@
 import Data.Void
 #ifndef SAFE
 import Unsafe.Coerce
+#else
+import Data.Profunctor.Unsafe
 #endif
 
 {-# ANN module "HLint: ignore Use camelCase" #-}
