diff --git a/focus.cabal b/focus.cabal
--- a/focus.cabal
+++ b/focus.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name:          focus
-version:       1.0.3.1
+version:       1.0.3.2
 synopsis:
   A general abstraction for manipulating elements of container data structures
 
diff --git a/library/Focus/Prelude.hs b/library/Focus/Prelude.hs
--- a/library/Focus/Prelude.hs
+++ b/library/Focus/Prelude.hs
@@ -30,7 +30,7 @@
 import Data.Fixed as Exports
 import Data.Foldable as Exports
 import Data.Function as Exports hiding (id, (.))
-import Data.Functor as Exports
+import Data.Functor as Exports hiding (unzip)
 import Data.Functor.Compose as Exports
 import Data.Functor.Identity as Exports
 import Data.IORef as Exports
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -7,63 +7,63 @@
 
 main :: IO ()
 main =
-  defaultMain $
-    testGroup "" $
-      [ testCase "Monadically composed lookup and insert (https://github.com/nikita-volkov/stm-containers/issues/25)" $
-          let Focus.Focus absent present = do
-                prev <- Focus.lookup
-                Focus.insert "one"
-                pure (isJust prev)
-           in do
-                assertEqual "" (True, Focus.Set "one") $ runIdentity (present "zero")
-                assertEqual "" (False, Focus.Set "one") $ runIdentity absent,
-        testCase "Applicatively composed lookup and insert" $
-          let Focus.Focus absent present = (isJust <$> Focus.lookup) <* Focus.insert "one"
-           in do
-                assertEqual "" (True, Focus.Set "one") $ runIdentity (present "zero")
-                assertEqual "" (False, Focus.Set "one") $ runIdentity absent,
-        testCase "Applicatively composed pure and insert" $
-          let Focus.Focus absent present = pure () <* Focus.insert "one"
-           in do
-                assertEqual "" ((), Focus.Set "one") (runIdentity (present "zero"))
-                assertEqual "" ((), Focus.Set "one") (runIdentity absent),
-        testCase "insert" $
-          let Focus.Focus absent present = Focus.insert "one"
-           in do
-                assertEqual "" ((), Focus.Set "one") (runIdentity (present "zero"))
-                assertEqual "" ((), Focus.Set "one") (runIdentity absent),
-        testCase "alter" $
-          let f :: Maybe String -> Maybe String
-              f = const Nothing
-              Focus.Focus absent present = Focus.alter f
-           in do
-                assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))
-                assertEqual "" ((), Focus.Leave) (runIdentity absent),
-        testCase "update" $
-          let f :: String -> Maybe String
-              f = const Nothing
-              Focus.Focus absent present = Focus.update f
-           in do
-                assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))
-                assertEqual "" ((), Focus.Leave) (runIdentity absent),
-        testCase "updateM" $
-          let f :: String -> Identity (Maybe String)
-              f = const (pure Nothing)
-              Focus.Focus absent present = Focus.updateM f
-           in do
-                assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))
-                assertEqual "" ((), Focus.Leave) (runIdentity absent),
-        testCase "delete" $
-          let Focus.Focus absent present = Focus.delete
-           in do
-                assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))
-                assertEqual "" ((), Focus.Leave @()) (runIdentity absent),
-        testCase "Monadically composed lookup and delete (https://github.com/nikita-volkov/focus/issues/7)" $
-          let Focus.Focus absent present = do
-                a <- Focus.lookup
-                Focus.delete
-                pure a
-           in do
-                assertEqual "" (Just (), Focus.Remove) (runIdentity (present ()))
-                assertEqual "" (Nothing @(), Focus.Leave) (runIdentity absent)
+  defaultMain
+    $ testGroup ""
+    $ [ testCase "Monadically composed lookup and insert (https://github.com/nikita-volkov/stm-containers/issues/25)"
+          $ let Focus.Focus absent present = do
+                  prev <- Focus.lookup
+                  Focus.insert "one"
+                  pure (isJust prev)
+             in do
+                  assertEqual "" (True, Focus.Set "one") $ runIdentity (present "zero")
+                  assertEqual "" (False, Focus.Set "one") $ runIdentity absent,
+        testCase "Applicatively composed lookup and insert"
+          $ let Focus.Focus absent present = (isJust <$> Focus.lookup) <* Focus.insert "one"
+             in do
+                  assertEqual "" (True, Focus.Set "one") $ runIdentity (present "zero")
+                  assertEqual "" (False, Focus.Set "one") $ runIdentity absent,
+        testCase "Applicatively composed pure and insert"
+          $ let Focus.Focus absent present = pure () <* Focus.insert "one"
+             in do
+                  assertEqual "" ((), Focus.Set "one") (runIdentity (present "zero"))
+                  assertEqual "" ((), Focus.Set "one") (runIdentity absent),
+        testCase "insert"
+          $ let Focus.Focus absent present = Focus.insert "one"
+             in do
+                  assertEqual "" ((), Focus.Set "one") (runIdentity (present "zero"))
+                  assertEqual "" ((), Focus.Set "one") (runIdentity absent),
+        testCase "alter"
+          $ let f :: Maybe String -> Maybe String
+                f = const Nothing
+                Focus.Focus absent present = Focus.alter f
+             in do
+                  assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))
+                  assertEqual "" ((), Focus.Leave) (runIdentity absent),
+        testCase "update"
+          $ let f :: String -> Maybe String
+                f = const Nothing
+                Focus.Focus absent present = Focus.update f
+             in do
+                  assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))
+                  assertEqual "" ((), Focus.Leave) (runIdentity absent),
+        testCase "updateM"
+          $ let f :: String -> Identity (Maybe String)
+                f = const (pure Nothing)
+                Focus.Focus absent present = Focus.updateM f
+             in do
+                  assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))
+                  assertEqual "" ((), Focus.Leave) (runIdentity absent),
+        testCase "delete"
+          $ let Focus.Focus absent present = Focus.delete
+             in do
+                  assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))
+                  assertEqual "" ((), Focus.Leave @()) (runIdentity absent),
+        testCase "Monadically composed lookup and delete (https://github.com/nikita-volkov/focus/issues/7)"
+          $ let Focus.Focus absent present = do
+                  a <- Focus.lookup
+                  Focus.delete
+                  pure a
+             in do
+                  assertEqual "" (Just (), Focus.Remove) (runIdentity (present ()))
+                  assertEqual "" (Nothing @(), Focus.Leave) (runIdentity absent)
       ]
