diff --git a/isomorphism-class.cabal b/isomorphism-class.cabal
--- a/isomorphism-class.cabal
+++ b/isomorphism-class.cabal
@@ -1,65 +1,63 @@
 cabal-version: 3.0
-
-name: isomorphism-class
-version: 0.1.0.9
-synopsis: Isomorphism typeclass solving the conversion problem
-homepage: https://github.com/nikita-volkov/isomorphism-class
-bug-reports: https://github.com/nikita-volkov/isomorphism-class/issues
-author: Nikita Volkov <nikita.y.volkov@mail.ru>
-maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>
-copyright: (c) 2022 Nikita Volkov
-license: MIT
-license-file: LICENSE
+name:          isomorphism-class
+version:       0.1.0.10
+synopsis:      Isomorphism typeclass solving the conversion problem
+homepage:      https://github.com/nikita-volkov/isomorphism-class
+bug-reports:   https://github.com/nikita-volkov/isomorphism-class/issues
+author:        Nikita Volkov <nikita.y.volkov@mail.ru>
+maintainer:    Nikita Volkov <nikita.y.volkov@mail.ru>
+copyright:     (c) 2022 Nikita Volkov
+license:       MIT
+license-file:  LICENSE
 
 source-repository head
-  type: git
+  type:     git
   location: git://github.com/nikita-volkov/isomorphism-class.git
 
 common language-settings
-  default-language: Haskell2010
+  default-language:   Haskell2010
   default-extensions:
+    NoImplicitPrelude
     FlexibleContexts
     FlexibleInstances
     MagicHash
     MultiParamTypeClasses
-    NoImplicitPrelude
     ScopedTypeVariables
     TypeApplications
     UndecidableSuperClasses
 
-common library-dependencies
-  build-depends:
-    base >=4.12 && <5,
-    bytestring >=0.10 && <0.12,
-    containers >=0.6 && <0.7,
-    hashable >=1 && <2,
-    primitive >=0.7.3 && <0.9,
-    text >=1.2 && <3,
-    unordered-containers >=0.2 && <0.3,
-    vector >=0.12 && <0.14,
-
 library
-  import: language-settings, library-dependencies
-  hs-source-dirs: library
-  exposed-modules:
-    IsomorphismClass
+  import:          language-settings
+  hs-source-dirs:  library
+  exposed-modules: IsomorphismClass
   other-modules:
     IsomorphismClass.Prelude
     IsomorphismClass.TextCompat.Array
 
+  build-depends:
+    , base >=4.12 && <5
+    , bytestring >=0.10 && <0.12
+    , containers >=0.6 && <0.7
+    , hashable >=1 && <2
+    , primitive >=0.7.3 && <0.10
+    , text >=1.2 && <3
+    , unordered-containers >=0.2 && <0.3
+    , vector >=0.12 && <0.14
+
 test-suite test
-  import: language-settings, library-dependencies
-  type: exitcode-stdio-1.0
+  import:         language-settings
+  type:           exitcode-stdio-1.0
   hs-source-dirs: test
-  main-is: Main.hs
-  other-modules:
-    Test.ExtraInstances
+  main-is:        Main.hs
+  other-modules:  Test.ExtraInstances
   build-depends:
-    bytestring,
-    isomorphism-class,
-    QuickCheck >=2.13 && <3,
-    quickcheck-instances >=0.3.28 && <0.4,
-    rebase >=1.15 && <2,
-    tasty >=1.2.3 && <2,
-    tasty-hunit >=0.10.0.2 && <0.11,
-    tasty-quickcheck >=0.10.1 && <0.11,
+    , bytestring >=0.10 && <0.12
+    , isomorphism-class
+    , primitive >=0.7.3 && <0.10
+    , QuickCheck >=2.13 && <3
+    , quickcheck-instances >=0.3.28 && <0.4
+    , rebase >=1.15 && <2
+    , tasty >=1.2.3 && <2
+    , tasty-quickcheck >=0.10.1 && <0.11
+    , text >=1.2 && <3
+    , vector >=0.12 && <0.14
diff --git a/library/IsomorphismClass.hs b/library/IsomorphismClass.hs
--- a/library/IsomorphismClass.hs
+++ b/library/IsomorphismClass.hs
@@ -1,3 +1,5 @@
+{-# OPTIONS_GHC -Wno-unused-top-binds #-}
+
 -- |
 -- Isomorphism as a lawful solution to the conversion problem.
 --
@@ -114,13 +116,11 @@
 import qualified Data.ByteString.Short.Internal as ByteStringShortInternal
 import qualified Data.Primitive.ByteArray as PrimitiveByteArray
 import qualified Data.Sequence as Seq
-import qualified Data.Set as Set
 import qualified Data.Text as Text
 import qualified Data.Text.Array as TextArray
 import qualified Data.Text.Lazy as TextLazy
 import qualified Data.Text.Lazy.Builder as TextLazyBuilder
 import qualified Data.Vector as Vector
-import qualified Data.Vector.Generic as VectorGeneric
 import IsomorphismClass.Prelude
 import qualified IsomorphismClass.TextCompat.Array as TextCompatArray
 
@@ -166,7 +166,7 @@
 -- For each pair of isomorphic types (/A/ and /B/) the compiler will require
 -- you to define two instances, namely: @IsomorphicTo A B@ and @IsomorphicTo
 -- B A@.
-class IsomorphicTo b a => IsomorphicTo a b where
+class (IsomorphicTo b a) => IsomorphicTo a b where
   to :: b -> a
 
 --
@@ -526,7 +526,7 @@
 --
 -- The first type application of the 'to' function on the other hand specifies
 -- the output data type.
-from :: forall a b. IsomorphicTo b a => a -> b
+from :: forall a b. (IsomorphicTo b a) => a -> b
 from = to
 
 -- |
diff --git a/library/IsomorphismClass/Prelude.hs b/library/IsomorphismClass/Prelude.hs
--- a/library/IsomorphismClass/Prelude.hs
+++ b/library/IsomorphismClass/Prelude.hs
@@ -48,7 +48,7 @@
 import Data.Proxy as Exports
 import Data.Ratio as Exports
 import Data.STRef as Exports
-import Data.Semigroup as Exports hiding (Option)
+import Data.Semigroup as Exports
 import Data.Sequence as Exports (Seq)
 import Data.Set as Exports (Set)
 import Data.String as Exports
@@ -81,8 +81,6 @@
 import System.Mem as Exports
 import System.Mem.StableName as Exports
 import System.Timeout as Exports
-import Text.ParserCombinators.ReadP as Exports (ReadP, ReadS, readP_to_S, readS_to_P)
-import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readP_to_Prec, readPrec_to_P, readPrec_to_S, readS_to_Prec)
 import Text.Printf as Exports (hPrintf, printf)
 import Text.Read as Exports (Read (..), readEither, readMaybe)
 import Unsafe.Coerce as Exports
diff --git a/library/IsomorphismClass/TextCompat/Array.hs b/library/IsomorphismClass/TextCompat/Array.hs
--- a/library/IsomorphismClass/TextCompat/Array.hs
+++ b/library/IsomorphismClass/TextCompat/Array.hs
@@ -4,7 +4,6 @@
 
 import Data.Text.Array
 import GHC.Exts (ByteArray#)
-import IsomorphismClass.Prelude
 
 {-# INLINE toUnliftedByteArray #-}
 toUnliftedByteArray :: Array -> ByteArray#
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,26 +1,21 @@
 module Main where
 
-import qualified Data.ByteString as ByteString
 import qualified Data.ByteString.Builder as ByteStringBuilder
 import qualified Data.ByteString.Lazy as ByteStringLazy
 import qualified Data.ByteString.Short as ByteStringShort
 import qualified Data.Primitive.ByteArray as PrimitiveByteArray
-import qualified Data.Sequence as Seq
-import qualified Data.Set as Set
-import qualified Data.Text as Text
 import qualified Data.Text.Lazy as TextLazy
 import qualified Data.Text.Lazy.Builder as TextLazyBuilder
-import qualified Data.Vector as Vector
-import qualified Data.Vector.Generic as VectorGeneric
 import IsomorphismClass
 import Rebase.Prelude
-import Test.ExtraInstances
+import Test.ExtraInstances ()
 import Test.Tasty
-import Test.Tasty.HUnit
 import Test.Tasty.QuickCheck hiding ((.&.))
 
+main :: IO ()
 main = defaultMain allTests
 
+allTests :: TestTree
 allTests =
   testGroup "All" $
     [ testPair @String @Text Proxy Proxy,
diff --git a/test/Test/ExtraInstances.hs b/test/Test/ExtraInstances.hs
--- a/test/Test/ExtraInstances.hs
+++ b/test/Test/ExtraInstances.hs
@@ -1,26 +1,16 @@
+{-# OPTIONS_GHC -Wno-orphans #-}
+
 module Test.ExtraInstances () where
 
-import qualified Data.ByteString as ByteString
 import qualified Data.ByteString.Builder as ByteStringBuilder
-import qualified Data.ByteString.Lazy as ByteStringLazy
-import qualified Data.ByteString.Short as ByteStringShort
-import qualified Data.HashSet as HashSet
-import qualified Data.Primitive.ByteArray as PrimitiveByteArray
-import qualified Data.Sequence as Seq
-import qualified Data.Set as Set
-import qualified Data.Text as Text
-import qualified Data.Text.Lazy as TextLazy
 import qualified Data.Text.Lazy.Builder as TextLazyBuilder
-import qualified Data.Vector as Vector
 import qualified Data.Vector.Generic as VectorGeneric
 import qualified Data.Vector.Primitive as VectorPrimitive
-import qualified Data.Vector.Storable as VectorStorable
-import qualified Data.Vector.Unboxed as VectorUnboxed
 import Rebase.Prelude
 import Test.QuickCheck
-import Test.QuickCheck.Instances
+import Test.QuickCheck.Instances ()
 
-instance (Arbitrary a, VectorPrimitive.Prim a, Show a) => Arbitrary (VectorPrimitive.Vector a) where
+instance (Arbitrary a, VectorPrimitive.Prim a) => Arbitrary (VectorPrimitive.Vector a) where
   arbitrary = arbitraryVector
   shrink = shrinkVector
 
@@ -35,7 +25,7 @@
   arbitrary = ByteStringBuilder.byteString <$> arbitrary
   shrink = shrinkMap ByteStringBuilder.lazyByteString ByteStringBuilder.toLazyByteString
 
-arbitraryVector :: (VectorGeneric.Vector v a, Arbitrary a, Show a) => Gen (v a)
+arbitraryVector :: (VectorGeneric.Vector v a, Arbitrary a) => Gen (v a)
 arbitraryVector = VectorGeneric.fromList <$> arbitrary
 
 shrinkVector :: (VectorGeneric.Vector v a, Arbitrary a) => v a -> [v a]
