diff --git a/library/VectorBuilder/Alternative.hs b/library/VectorBuilder/Alternative.hs
--- a/library/VectorBuilder/Alternative.hs
+++ b/library/VectorBuilder/Alternative.hs
@@ -3,7 +3,6 @@
 -- For instance, they can be applied with parsing libraries.
 module VectorBuilder.Alternative where
 
-import Data.Vector (Vector)
 import qualified Data.Vector.Generic as C
 import qualified VectorBuilder.Builder as A
 import VectorBuilder.Prelude hiding (many, some)
@@ -14,7 +13,7 @@
 many = fmap B.build . manyBuilder
 
 {-# INLINEABLE manyBuilder #-}
-manyBuilder :: Alternative m => m a -> m (A.Builder a)
+manyBuilder :: (Alternative m) => m a -> m (A.Builder a)
 manyBuilder m =
   let loop = ((<>) <$> A.singleton <$> m <*> loop) <|> pure mempty
    in loop
@@ -24,5 +23,5 @@
 some m = B.build <$> someBuilder m
 
 {-# INLINEABLE someBuilder #-}
-someBuilder :: Alternative m => m a -> m (A.Builder a)
+someBuilder :: (Alternative m) => m a -> m (A.Builder a)
 someBuilder m = (<>) <$> A.singleton <$> m <*> manyBuilder m
diff --git a/library/VectorBuilder/Core/Builder.hs b/library/VectorBuilder/Core/Builder.hs
--- a/library/VectorBuilder/Core/Builder.hs
+++ b/library/VectorBuilder/Core/Builder.hs
@@ -1,7 +1,6 @@
 module VectorBuilder.Core.Builder where
 
 import qualified Data.Vector.Generic as B
-import qualified Data.Vector.Generic.Mutable as C
 import qualified VectorBuilder.Core.Update as A
 import VectorBuilder.Prelude hiding (concat, empty)
 
@@ -39,12 +38,12 @@
 --
 -- Supports all kinds of vectors: boxed, unboxed, primitive, storable.
 {-# INLINE vector #-}
-vector :: B.Vector vector element => vector element -> Builder element
+vector :: (B.Vector vector element) => vector element -> Builder element
 vector vector =
   Builder (B.length vector) (A.writeMany vector)
 
 {-# INLINE foldable #-}
-foldable :: Foldable foldable => foldable element -> Builder element
+foldable :: (Foldable foldable) => foldable element -> Builder element
 foldable foldable =
   Builder (length foldable) (A.writeFoldable foldable)
 
@@ -71,7 +70,7 @@
   flip prepend
 
 {-# INLINE concat #-}
-concat :: Foldable foldable => foldable (Builder element) -> Builder element
+concat :: (Foldable foldable) => foldable (Builder element) -> Builder element
 concat builders =
   Builder
     ( let step size (Builder builderSize _) = size + builderSize
diff --git a/library/VectorBuilder/Core/Update.hs b/library/VectorBuilder/Core/Update.hs
--- a/library/VectorBuilder/Core/Update.hs
+++ b/library/VectorBuilder/Core/Update.hs
@@ -5,7 +5,7 @@
 import VectorBuilder.Prelude
 
 newtype Update element
-  = Update (forall s vector. A.MVector vector element => vector s element -> Int -> ST s ())
+  = Update (forall s vector. (A.MVector vector element) => vector s element -> Int -> ST s ())
 
 {-# INLINE write #-}
 write :: element -> Update element
@@ -13,7 +13,7 @@
   Update (\mVector offset -> A.unsafeWrite mVector offset element)
 
 {-# INLINE writeMany #-}
-writeMany :: B.Vector vector element => vector element -> Update element
+writeMany :: (B.Vector vector element) => vector element -> Update element
 writeMany appendedVector =
   Update (\mVector offset -> B.ifoldM' (\_ index element -> A.unsafeWrite mVector (strict (offset + index)) element) () appendedVector)
 
@@ -28,6 +28,6 @@
   Update (\_ _ -> pure ())
 
 {-# INLINE writeFoldable #-}
-writeFoldable :: Foldable foldable => foldable element -> Update element
+writeFoldable :: (Foldable foldable) => foldable element -> Update element
 writeFoldable foldable =
   Update (\mVector offset -> foldM_ (\index element -> A.unsafeWrite mVector index element $> succ index) offset foldable)
diff --git a/library/VectorBuilder/MVector.hs b/library/VectorBuilder/MVector.hs
--- a/library/VectorBuilder/MVector.hs
+++ b/library/VectorBuilder/MVector.hs
@@ -12,7 +12,7 @@
 --
 -- Supports all kinds of vectors: boxed, unboxed, primitive, storable.
 {-# INLINEABLE build #-}
-build :: MVector vector element => A.Builder element -> ST s (vector s element)
+build :: (MVector vector element) => A.Builder element -> ST s (vector s element)
 build (A.Builder size (C.Update update)) =
   do
     vector <- unsafeNew size
diff --git a/library/VectorBuilder/MonadPlus.hs b/library/VectorBuilder/MonadPlus.hs
--- a/library/VectorBuilder/MonadPlus.hs
+++ b/library/VectorBuilder/MonadPlus.hs
@@ -3,7 +3,6 @@
 -- For instance, they can be applied with parsing libraries.
 module VectorBuilder.MonadPlus where
 
-import Data.Vector (Vector)
 import qualified Data.Vector.Generic as C
 import qualified VectorBuilder.Builder as A
 import VectorBuilder.Prelude
diff --git a/library/VectorBuilder/Prelude.hs b/library/VectorBuilder/Prelude.hs
--- a/library/VectorBuilder/Prelude.hs
+++ b/library/VectorBuilder/Prelude.hs
@@ -26,7 +26,7 @@
 import Data.Fixed as Exports
 import Data.Foldable as Exports hiding (toList)
 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.IORef as Exports
 import Data.Int as Exports
@@ -65,8 +65,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/VectorBuilder/Vector.hs b/library/VectorBuilder/Vector.hs
--- a/library/VectorBuilder/Vector.hs
+++ b/library/VectorBuilder/Vector.hs
@@ -12,6 +12,6 @@
 --
 -- Supports all kinds of vectors: boxed, unboxed, primitive, storable.
 {-# INLINE build #-}
-build :: Vector vector element => A.Builder element -> vector element
+build :: (Vector vector element) => A.Builder element -> vector element
 build builder =
   runST (B.build builder >>= unsafeFreeze)
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -7,27 +7,27 @@
 import Test.Tasty
 import Test.Tasty.HUnit
 import Test.Tasty.QuickCheck
-import Test.Tasty.Runners
 import qualified VectorBuilder.Alternative as F
 import qualified VectorBuilder.Builder as A
 import qualified VectorBuilder.MonadPlus as H
 import qualified VectorBuilder.Vector as B
 import Prelude
 
+main :: IO ()
 main =
-  defaultMain $
-    testGroup
+  defaultMain
+    $ testGroup
       "All tests"
       [ testProperty "samples" $ \(samples :: [C.Sample Int]) ->
           foldMap C.toVector samples
             === B.build (foldMap C.toBuilder samples),
-        testCase "Alternative.some" $
-          assertEqual
+        testCase "Alternative.some"
+          $ assertEqual
             ""
             (Right (E.fromList "1234"))
             (D.parseOnly (F.some D.anyChar) "1234"),
-        testCase "Alternative.some on empty" $
-          assertEqual
+        testCase "Alternative.some on empty"
+          $ assertEqual
             ""
             (Left "not enough input")
             (D.parseOnly (F.some D.anyChar :: D.Parser (Vector Char)) ""),
diff --git a/tests/Main/Sample.hs b/tests/Main/Sample.hs
--- a/tests/Main/Sample.hs
+++ b/tests/Main/Sample.hs
@@ -1,7 +1,7 @@
 module Main.Sample where
 
 import qualified Data.Vector as B
-import Test.QuickCheck.Instances
+import Test.QuickCheck.Instances ()
 import qualified Test.Tasty.QuickCheck as C
 import qualified VectorBuilder.Builder as A
 import Prelude
@@ -29,7 +29,7 @@
     Vector a -> a
     List a -> B.fromList a
 
-instance C.Arbitrary a => C.Arbitrary (Sample a) where
+instance (C.Arbitrary a) => C.Arbitrary (Sample a) where
   arbitrary =
     do
       constructorIndex <- C.choose (0 :: Int, 3)
@@ -38,3 +38,4 @@
         1 -> C.arbitrary >>= return . Singleton
         2 -> C.arbitrary >>= return . Vector
         3 -> C.arbitrary >>= return . List
+        _ -> error "Bug"
diff --git a/vector-builder.cabal b/vector-builder.cabal
--- a/vector-builder.cabal
+++ b/vector-builder.cabal
@@ -1,9 +1,6 @@
-name:
-  vector-builder
-version:
-  0.3.8.4
-synopsis:
-  Vector builder
+name:          vector-builder
+version:       0.3.8.5
+synopsis:      Vector builder
 description:
   An API for efficient and convenient construction of vectors.
   It provides the composable `Builder` abstraction, which has instances of the `Monoid` and `Semigroup` classes.
@@ -31,73 +28,128 @@
   >      B.vector vector <>
   >      B.foldable list <>
   >      B.singleton element
-category:
-  Vector
-homepage:
-  https://github.com/nikita-volkov/vector-builder
-bug-reports:
-  https://github.com/nikita-volkov/vector-builder/issues
-author:
-  Nikita Volkov <nikita.y.volkov@mail.ru>
-maintainer:
-  Nikita Volkov <nikita.y.volkov@mail.ru>
-copyright:
-  (c) 2016, Nikita Volkov
-license:
-  MIT
-license-file:
-  LICENSE
-build-type:
-  Simple
-cabal-version:
-  >=1.10
 
+category:      Vector
+homepage:      https://github.com/nikita-volkov/vector-builder
+bug-reports:   https://github.com/nikita-volkov/vector-builder/issues
+author:        Nikita Volkov <nikita.y.volkov@mail.ru>
+maintainer:    Nikita Volkov <nikita.y.volkov@mail.ru>
+copyright:     (c) 2016, Nikita Volkov
+license:       MIT
+license-file:  LICENSE
+build-type:    Simple
+cabal-version: >=1.10
+
 source-repository head
-  type:
-    git
-  location:
-    git://github.com/nikita-volkov/vector-builder.git
+  type:     git
+  location: git://github.com/nikita-volkov/vector-builder.git
 
 library
-  hs-source-dirs:
-    library
+  hs-source-dirs:     library
   default-extensions:
-    Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
-  default-language:
-    Haskell2010
+    NoImplicitPrelude
+    NoMonomorphismRestriction
+    Arrows
+    BangPatterns
+    ConstraintKinds
+    DataKinds
+    DefaultSignatures
+    DeriveDataTypeable
+    DeriveFoldable
+    DeriveFunctor
+    DeriveGeneric
+    DeriveTraversable
+    EmptyDataDecls
+    FlexibleContexts
+    FlexibleInstances
+    FunctionalDependencies
+    GADTs
+    GeneralizedNewtypeDeriving
+    LambdaCase
+    LiberalTypeSynonyms
+    MagicHash
+    MultiParamTypeClasses
+    MultiWayIf
+    OverloadedStrings
+    ParallelListComp
+    PatternGuards
+    QuasiQuotes
+    RankNTypes
+    RecordWildCards
+    ScopedTypeVariables
+    StandaloneDeriving
+    TemplateHaskell
+    TupleSections
+    TypeFamilies
+    TypeOperators
+    UnboxedTuples
+
+  default-language:   Haskell2010
   exposed-modules:
+    VectorBuilder.Alternative
     VectorBuilder.Builder
+    VectorBuilder.MonadPlus
     VectorBuilder.MVector
     VectorBuilder.Vector
-    VectorBuilder.MonadPlus
-    VectorBuilder.Alternative
+
   other-modules:
-    VectorBuilder.Prelude
-    VectorBuilder.Core.Update
     VectorBuilder.Core.Builder
+    VectorBuilder.Core.Update
+    VectorBuilder.Prelude
+
   build-depends:
-    vector >=0.12 && <0.14,
-    base >=4.10 && <5
+      base >=4.10 && <5
+    , vector >=0.12 && <0.14
 
 test-suite tests
-  type:
-    exitcode-stdio-1.0
-  hs-source-dirs:
-    tests
-  main-is:
-    Main.hs
-  other-modules:
-    Main.Sample
+  type:               exitcode-stdio-1.0
+  hs-source-dirs:     tests
+  main-is:            Main.hs
+  other-modules:      Main.Sample
   default-extensions:
-    Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
-  default-language:
-    Haskell2010
+    NoImplicitPrelude
+    NoMonomorphismRestriction
+    Arrows
+    BangPatterns
+    ConstraintKinds
+    DataKinds
+    DefaultSignatures
+    DeriveDataTypeable
+    DeriveFoldable
+    DeriveFunctor
+    DeriveGeneric
+    DeriveTraversable
+    EmptyDataDecls
+    FlexibleContexts
+    FlexibleInstances
+    FunctionalDependencies
+    GADTs
+    GeneralizedNewtypeDeriving
+    LambdaCase
+    LiberalTypeSynonyms
+    MagicHash
+    MultiParamTypeClasses
+    MultiWayIf
+    OverloadedStrings
+    ParallelListComp
+    PatternGuards
+    QuasiQuotes
+    RankNTypes
+    RecordWildCards
+    ScopedTypeVariables
+    StandaloneDeriving
+    TemplateHaskell
+    TupleSections
+    TypeFamilies
+    TypeOperators
+    UnboxedTuples
+
+  default-language:   Haskell2010
   build-depends:
-    attoparsec >=0.13 && <0.15,
-    QuickCheck >=2.8.1 && <3,
-    quickcheck-instances >=0.3.11 && <0.4,
-    rerebase <2,
-    tasty >=0.12 && <2,
-    tasty-hunit >=0.9 && <0.11,
-    tasty-quickcheck >=0.9 && <0.11,
-    vector-builder
+      attoparsec >=0.13 && <0.15
+    , quickcheck-instances >=0.3.11 && <0.4
+    , rerebase <2
+    , tasty >=0.12 && <2
+    , tasty-hunit >=0.9 && <0.11
+    , tasty-quickcheck >=0.9 && <0.11
+    , vector-builder
