diff --git a/app/App/Commands/CreateIndex.hs b/app/App/Commands/CreateIndex.hs
--- a/app/App/Commands/CreateIndex.hs
+++ b/app/App/Commands/CreateIndex.hs
@@ -48,7 +48,8 @@
 
     let ws = fmap fromIntegral (decodeWord32s lbs) :: [Word64]
 
-    PV.createFileIndex (opts ^. the @"output") wordSize (fromIntegral inSize) ws
+    IO.withBinaryFile (opts ^. the @"output") IO.WriteMode $ \hOut ->
+      PV.createFileIndex hOut wordSize (fromIntegral inSize) ws
 
 optsCreateIndex :: Parser Z.CreateIndexOptions
 optsCreateIndex = Z.CreateIndexOptions
diff --git a/hw-packed-vector.cabal b/hw-packed-vector.cabal
--- a/hw-packed-vector.cabal
+++ b/hw-packed-vector.cabal
@@ -1,7 +1,7 @@
 cabal-version:      2.2
 
 name:               hw-packed-vector
-version:            0.1.0.0
+version:            0.2.0.0
 synopsis:           Packed Vector
 description:        Packed Vector. Please see README.md
 category:           Data, Vector
diff --git a/src/HaskellWorks/Data/PackedVector/PackedVector64.hs b/src/HaskellWorks/Data/PackedVector/PackedVector64.hs
--- a/src/HaskellWorks/Data/PackedVector/PackedVector64.hs
+++ b/src/HaskellWorks/Data/PackedVector/PackedVector64.hs
@@ -100,8 +100,8 @@
             then B.word64LE newAcc <>             go excessBits (w .>. (wordSize - excessBits))     ws
             else let freeBits = 64 - totalBits in go totalBits  (newAcc .<. freeBits .>. freeBits)  ws
 
-createFileIndex :: FilePath -> Count -> Count -> [Word64] -> IO ()
-createFileIndex filename wordSize inSize ws = IO.withBinaryFile filename IO.WriteMode $ \hOut -> do
+createFileIndex :: IO.Handle -> Count -> Count -> [Word64] -> IO ()
+createFileIndex hOut wordSize inSize ws = do
   headerPos <- IO.hTell hOut
 
   B.hPutBuilder hOut $ mempty
