diff --git a/indexation.cabal b/indexation.cabal
--- a/indexation.cabal
+++ b/indexation.cabal
@@ -1,5 +1,5 @@
 name: indexation
-version: 0.4.4.2
+version: 0.4.5
 category: Data
 synopsis: Tools for entity indexation
 description: A set of tools for indexing entities
diff --git a/library/Indexation/Cereal/Get.hs b/library/Indexation/Cereal/Get.hs
--- a/library/Indexation/Cereal/Get.hs
+++ b/library/Indexation/Cereal/Get.hs
@@ -5,7 +5,7 @@
 import Indexation.Types
 import Data.Serialize.Get
 import qualified Data.HashMap.Strict as A
-import qualified Data.Vector as B
+import qualified Data.Vector.Generic as B
 
 
 getIndexHashMap :: (Eq k, Hashable k) => Get k -> Get (HashMap k Int)
@@ -33,7 +33,8 @@
           entity <- getEntity
           return (A.insert entity index hashMap)
 
-getVector :: Get element -> Get (Vector element)
+{-# INLINE getVector #-}
+getVector :: B.Vector vector element => Get element -> Get (vector element)
 getVector getElement =
   getSize >>= getElements
   where
diff --git a/library/Indexation/Cereal/Put.hs b/library/Indexation/Cereal/Put.hs
--- a/library/Indexation/Cereal/Put.hs
+++ b/library/Indexation/Cereal/Put.hs
@@ -4,15 +4,16 @@
 import Indexation.Prelude
 import Indexation.Types
 import Data.Serialize.Put
-import qualified Data.Vector as B
+import qualified Data.Vector.Generic as B
 
 
-putVector :: Putter element -> Putter (Vector element)
+{-# INLINE putVector #-}
+putVector :: (B.Vector vector element) => Putter element -> Putter (vector element)
 putVector putElement vector =
   putSize *> putElements
   where
     putSize = putInt64le (fromIntegral (B.length vector))
-    putElements = traverse_ putElement vector
+    putElements = B.foldM'_ (const putElement) () vector
 
 putEntityTable :: Putter entity -> Putter (EntityTable entity)
 putEntityTable putEntity (EntityTable vector) =
diff --git a/library/Indexation/Instances/Cereal.hs b/library/Indexation/Instances/Cereal.hs
--- a/library/Indexation/Instances/Cereal.hs
+++ b/library/Indexation/Instances/Cereal.hs
@@ -20,3 +20,7 @@
 instance (Serialize entity, Eq entity, Hashable entity) => Serialize (IndexTable entity) where
   get = Get.getIndexTableAsEntityTable get
   put = Put.putEntityTable put . EntityTable.indexTable
+
+instance Serialize (IndexSet a) where
+  get = IndexSet <$> Get.getVector get
+  put (IndexSet vector) = Put.putVector put vector
