diff --git a/dataflower.cabal b/dataflower.cabal
--- a/dataflower.cabal
+++ b/dataflower.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: d435fe0abed8e5cf0d8dde80a09574abd559ab455d29bc746af5cf84894e06c8
+-- hash: c36b2b11b6e3244c6cf8d82e5ffb803aa706157c2751aa29fdea8d10815cbfc3
 
 name:           dataflower
-version:        0.2.2.0
+version:        0.2.3.0
 synopsis:       A Pure-Haskell Timely Dataflow System
 description:    See README
 homepage:       https://github.com/doublecrowngaming/dataflower#readme
diff --git a/src/Dataflow/Primitives.hs b/src/Dataflow/Primitives.hs
--- a/src/Dataflow/Primitives.hs
+++ b/src/Dataflow/Primitives.hs
@@ -33,7 +33,7 @@
 import           Data.IORef                 (IORef, atomicModifyIORef',
                                              atomicWriteIORef, newIORef,
                                              readIORef)
-import           Data.Vector                (Vector, empty, snoc, (!))
+import           Data.Vector                (Vector, empty, snoc, unsafeIndex)
 import           Numeric.Natural            (Natural)
 import           Prelude
 import           Unsafe.Coerce              (unsafeCoerce)
@@ -135,7 +135,7 @@
   Dataflow $ do
     vertices <- gets dfsVertices
 
-    return $ unEraseType (vertices ! vindex)
+    return $ unEraseType (vertices `unsafeIndex` vindex)
 
 -- | Store a provided vertex and obtain an 'Edge' that refers to it.
 registerVertex :: Vertex i -> Dataflow (Edge i)
@@ -187,7 +187,7 @@
   Dataflow $ do
     states <- gets dfsStates
 
-    return (states ! sindex)
+    return (states `unsafeIndex` sindex)
 
 -- | Read the value stored in the `StateRef`.
 --
