diff --git a/library/VectorBuilder/Alternative.hs b/library/VectorBuilder/Alternative.hs
--- a/library/VectorBuilder/Alternative.hs
+++ b/library/VectorBuilder/Alternative.hs
@@ -9,10 +9,11 @@
 import Data.Vector (Vector)
 import qualified VectorBuilder.Builder as A
 import qualified VectorBuilder.Vector as B
+import qualified Data.Vector.Generic as C
 
 
 {-# INLINABLE many #-}
-many :: Alternative m => m a -> m (Vector a)
+many :: (Alternative m, C.Vector vector a) => m a -> m (vector a)
 many = fmap B.build . manyBuilder
 
 {-# INLINABLE manyBuilder #-}
@@ -22,7 +23,7 @@
   in loop
 
 {-# INLINABLE some #-}
-some :: Alternative m => m a -> m (Vector a)
+some :: (Alternative m, C.Vector vector a) => m a -> m (vector a)
 some m = B.build <$> someBuilder m
 
 {-# INLINABLE someBuilder #-}
diff --git a/library/VectorBuilder/Builder.hs b/library/VectorBuilder/Builder.hs
--- a/library/VectorBuilder/Builder.hs
+++ b/library/VectorBuilder/Builder.hs
@@ -4,6 +4,7 @@
   empty,
   singleton,
   vector,
+  foldable,
 )
 where
 
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
@@ -39,6 +39,11 @@
 vector vector =
   Builder (B.length vector) (A.writeMany vector)
 
+{-# INLINE foldable #-}
+foldable :: Foldable foldable => foldable element -> Builder element
+foldable foldable =
+  Builder (length foldable) (A.writeFoldable foldable)
+
 
 -- * Updates
 
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
@@ -28,3 +28,8 @@
 empty :: Update element
 empty =
   Update (\_ _ -> pure ())
+
+{-# INLINE writeFoldable #-}
+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/MonadPlus.hs b/library/VectorBuilder/MonadPlus.hs
--- a/library/VectorBuilder/MonadPlus.hs
+++ b/library/VectorBuilder/MonadPlus.hs
@@ -9,10 +9,11 @@
 import Data.Vector (Vector)
 import qualified VectorBuilder.Builder as A
 import qualified VectorBuilder.Vector as B
+import qualified Data.Vector.Generic as C
 
 
 {-# INLINABLE many #-}
-many :: MonadPlus m => m a -> m (Vector a)
+many :: (MonadPlus m, C.Vector vector element) => m element -> m (vector element)
 many m =
   liftM B.build loop
   where
@@ -25,12 +26,12 @@
         (return mempty)
 
 {-# INLINABLE sepBy #-}
-sepBy :: MonadPlus m => m element -> m separator -> m (Vector element)
+sepBy :: (MonadPlus m, C.Vector vector element) => m element -> m separator -> m (vector element)
 sepBy elementM separatorM =
-  mplus (sepBy1 elementM separatorM) (return mempty)
+  mplus (sepBy1 elementM separatorM) (return C.empty)
 
 {-# INLINABLE sepBy1 #-}
-sepBy1 :: MonadPlus m => m element -> m separator -> m (Vector element)
+sepBy1 :: (MonadPlus m, C.Vector vector element) => m element -> m separator -> m (vector element)
 sepBy1 elementM separatorM =
   liftM B.build loop
   where
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -27,6 +27,6 @@
     ,
     testCase "Alternative.some on empty" $ assertEqual ""
       (Left "not enough input")
-      (D.parseOnly (F.some D.anyChar) "")
+      (D.parseOnly (F.some D.anyChar :: D.Parser (Vector Char)) "")
   ]
 
diff --git a/vector-builder.cabal b/vector-builder.cabal
--- a/vector-builder.cabal
+++ b/vector-builder.cabal
@@ -1,7 +1,7 @@
 name:
   vector-builder
 version:
-  0.3.6
+  0.3.7
 synopsis:
   Vector builder
 description:
@@ -29,7 +29,7 @@
   >  where
   >    builder =
   >      B.vector vector <>
-  >      foldMap B.singleton list <>
+  >      B.foldable list <>
   >      B.singleton element
 category:
   Vector
@@ -98,57 +98,8 @@
     attoparsec >=0.13 && <0.14,
     QuickCheck >=2.8.1 && <3,
     quickcheck-instances >=0.3.11 && <0.4,
-    rerebase ==1.*,
-    tasty >=1.0.1 && <1.2,
-    tasty-hunit >=0.10 && <0.11,
-    tasty-quickcheck >=0.10 && <0.11,
+    rerebase <2,
+    tasty >=0.12 && <2,
+    tasty-hunit >=0.9 && <0.11,
+    tasty-quickcheck >=0.9 && <0.11,
     vector-builder
-
--- benchmark foldl-benchmark
---   type:
---     exitcode-stdio-1.0
---   hs-source-dirs:
---     foldl-benchmark
---   main-is:
---     Main.hs
---   ghc-options:
---     -O2
---     -threaded
---     "-with-rtsopts=-N"
---     -rtsopts
---   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
---   build-depends:
---     vector-builder,
---     foldl >=1.2 && <2,
---     -- benchmarking:
---     criterion >=1.1 && <2,
---     -- general:
---     rerebase <2
-
--- test-suite foldl-profiling
---   type:
---     exitcode-stdio-1.0
---   hs-source-dirs:
---     foldl-profiling
---   main-is:
---     Main.hs
---   ghc-options:
---     -O2
---     -threaded
---     "-with-rtsopts=-N"
---     -rtsopts
---   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
---   build-depends:
---     vector-builder,
---     foldl >=1.2 && <2,
---     -- benchmarking:
---     criterion >=1.1 && <2,
---     -- general:
---     bug ==1.*,
---     rerebase <2
