diff --git a/postgresql-types.cabal b/postgresql-types.cabal
--- a/postgresql-types.cabal
+++ b/postgresql-types.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: postgresql-types
-version: 0.1.1
+version: 0.1.1.1
 category: PostgreSQL, Codecs
 synopsis: Precise PostgreSQL types representation and driver-agnostic codecs
 description:
@@ -144,6 +144,7 @@
 
   other-modules:
     PostgresqlTypes.Multirange.List
+    PostgresqlTypes.Multirange.QuickCheckGen
     PostgresqlTypes.Numeric.Integer
     PostgresqlTypes.Numeric.Scientific
     PostgresqlTypes.Prelude
@@ -160,16 +161,13 @@
     bytestring >=0.10 && <0.13,
     containers >=0.6 && <0.9,
     hashable >=1.3 && <2,
-    invariant ^>=0.6.4,
     jsonifier ^>=0.2.1.3,
     mtl >=2.2 && <3,
     postgresql-types:jsonifier-aeson,
     postgresql-types:time-extras,
     postgresql-types-algebra ^>=0.1,
-    profunctors ^>=5.6 && <6,
     ptr-peeker ^>=0.1,
     ptr-poker ^>=0.1.3,
-    quickcheck-extras ^>=0.1,
     scientific >=0.3 && <1,
     tagged ^>=0.8.9,
     text >=1.2 && <3,
diff --git a/src/library/PostgresqlTypes/Multirange.hs b/src/library/PostgresqlTypes/Multirange.hs
--- a/src/library/PostgresqlTypes/Multirange.hs
+++ b/src/library/PostgresqlTypes/Multirange.hs
@@ -16,13 +16,13 @@
 import qualified Data.Vector as Vector
 import PostgresqlTypes.Algebra
 import qualified PostgresqlTypes.Multirange.List
+import qualified PostgresqlTypes.Multirange.QuickCheckGen as QuickCheckGen
 import PostgresqlTypes.Prelude
 import PostgresqlTypes.Range (Range)
 import qualified PostgresqlTypes.Range as Range
 import PostgresqlTypes.Via
 import qualified PtrPeeker
 import qualified PtrPoker.Write as Write
-import qualified QuickCheckExtras.Gen
 import qualified Test.QuickCheck as QuickCheck
 import qualified TextBuilder
 
@@ -108,7 +108,7 @@
             numRanges <- QuickCheck.chooseInt (0, max 0 size)
             let numBounds =
                   numRanges * 2 + bool 1 0 lowerInfinity + bool 1 0 upperInfinity
-            bounds <- QuickCheckExtras.Gen.setOfSize numBounds (arbitrary @a)
+            bounds <- QuickCheckGen.setOfSize numBounds (arbitrary @a)
             let preparedBounds =
                   mconcat
                     [ if lowerInfinity then [Nothing] else [],
diff --git a/src/library/PostgresqlTypes/Multirange/QuickCheckGen.hs b/src/library/PostgresqlTypes/Multirange/QuickCheckGen.hs
new file mode 100644
--- /dev/null
+++ b/src/library/PostgresqlTypes/Multirange/QuickCheckGen.hs
@@ -0,0 +1,16 @@
+module PostgresqlTypes.Multirange.QuickCheckGen
+where
+
+import PostgresqlTypes.Prelude
+import Test.QuickCheck
+import qualified Data.Set as Set
+
+-- | Attention. This generator may run indefinitely if the 'elementGen' has too small variety of possible values.
+setOfSize :: (Ord a) => Int -> Gen a -> Gen (Set.Set a)
+setOfSize n elementGen = go Set.empty 0
+  where
+    go !currentSet !size
+      | size >= n = pure currentSet
+      | otherwise = do
+          newElement <- suchThat elementGen \element -> Set.notMember element currentSet
+          go (Set.insert newElement currentSet) (succ size)
diff --git a/src/library/PostgresqlTypes/Prelude.hs b/src/library/PostgresqlTypes/Prelude.hs
--- a/src/library/PostgresqlTypes/Prelude.hs
+++ b/src/library/PostgresqlTypes/Prelude.hs
@@ -32,7 +32,6 @@
 import Data.Functor as Exports hiding (unzip)
 import Data.Functor.Contravariant as Exports
 import Data.Functor.Identity as Exports
-import Data.Functor.Invariant as Exports
 import Data.Hashable as Exports (Hashable (..))
 import Data.IORef as Exports
 import Data.Int as Exports
@@ -41,7 +40,6 @@
 import Data.Maybe as Exports
 import Data.Monoid as Exports hiding (First (..), Last (..), (<>))
 import Data.Ord as Exports
-import Data.Profunctor as Exports (Profunctor (..))
 import Data.Proxy as Exports
 import Data.Ratio as Exports
 import Data.STRef as Exports
