diff --git a/chronologique.cabal b/chronologique.cabal
--- a/chronologique.cabal
+++ b/chronologique.cabal
@@ -1,6 +1,6 @@
 cabal-version:       >= 1.10
 name:                chronologique
-version:             0.2.1.0
+version:             0.3.0.0
 synopsis:            Time to manipulate time
 description:
  A simple type useful for representing timestamps as generated by system
@@ -32,7 +32,8 @@
 
   build-depends:     base >= 4.9 && < 5,
                      time,
-                     hourglass
+                     hourglass,
+                     vector
 
   hs-source-dirs:    lib
 
@@ -57,7 +58,6 @@
   main-is:           Experiment.hs
 
   ghc-options:       -threaded
-                     -O2
                      -Wall
                      -Wwarn
                      -fwarn-tabs
@@ -71,16 +71,17 @@
                      hspec,
                      hourglass,
                      QuickCheck,
+                     vector,
                      chronologique
 
   hs-source-dirs:    tests
 
   main-is:           TestSuite.hs
 
-  other-modules:     CheckTimeStamp
+  other-modules:     CheckTimeStamp,
+                     CheckVectorOperations
 
   ghc-options:       -threaded
-                     -O2
                      -Wall
                      -Wwarn
                      -fwarn-tabs
diff --git a/lib/Chrono/TimeStamp.hs b/lib/Chrono/TimeStamp.hs
--- a/lib/Chrono/TimeStamp.hs
+++ b/lib/Chrono/TimeStamp.hs
@@ -1,7 +1,7 @@
 --
 -- Time to manipulate time
 --
--- Copyright © 2013-2016 Operational Dynamics Consulting, Pty Ltd and Others
+-- Copyright © 2013-2017 Operational Dynamics Consulting, Pty Ltd and Others
 --
 -- The code in this file, and the program it is a part of, is
 -- made available to you by its authors as open source software:
@@ -12,6 +12,9 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE InstanceSigs #-}
 {-# LANGUAGE TupleSections #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE TypeFamilies #-}
 
 module Chrono.TimeStamp
 (
@@ -25,6 +28,9 @@
 import Data.Maybe
 import Data.Int (Int64)
 import Data.Hourglass
+import qualified Data.Vector.Generic as G
+import qualified Data.Vector.Generic.Mutable as M
+import Data.Vector.Unboxed
 import Time.System
 
 import Chrono.Formats
@@ -129,3 +135,45 @@
 
 convertToTimeStamp :: ElapsedP -> TimeStamp
 convertToTimeStamp = timeFromElapsedP
+
+{-
+    Ideally both the existing G.Vector Vector Int64 and M.MVector MVector
+    Int64 instances would be sufficient to support automatically deriving
+    those things for TimeStamp. But, *gaboom* somewhere down in GHC.Prim;
+    writing this gumpf out manually did the trick, and satisifies the
+    superclass requirements to derive an Unbox instance.
+-}
+
+newtype instance MVector s TimeStamp = MV_TimeStamp (MVector s Int64)
+newtype instance Vector TimeStamp = V_TimeStamp (Vector Int64)
+
+instance G.Vector Vector TimeStamp where
+    basicUnsafeFreeze (MV_TimeStamp v) = V_TimeStamp <$> G.basicUnsafeFreeze v
+    basicUnsafeThaw (V_TimeStamp v) = MV_TimeStamp <$> G.basicUnsafeThaw v
+    basicLength (V_TimeStamp v) = G.basicLength v
+    basicUnsafeSlice j k (V_TimeStamp v) = V_TimeStamp $ G.basicUnsafeSlice j k v
+    basicUnsafeIndexM (V_TimeStamp v) i = TimeStamp <$> G.basicUnsafeIndexM v i
+    {-# INLINE basicUnsafeFreeze #-}
+    {-# INLINE basicUnsafeThaw #-}
+    {-# INLINE basicLength #-}
+    {-# INLINE basicUnsafeSlice #-}
+    {-# INLINE basicUnsafeIndexM #-}
+
+instance M.MVector MVector TimeStamp where
+    basicLength (MV_TimeStamp v) = M.basicLength v
+    basicUnsafeSlice j k (MV_TimeStamp v) = MV_TimeStamp $ M.basicUnsafeSlice j k v
+    basicOverlaps (MV_TimeStamp a) (MV_TimeStamp b) = M.basicOverlaps a b
+    basicUnsafeNew n = MV_TimeStamp <$> M.basicUnsafeNew n
+    basicInitialize (MV_TimeStamp v) = M.basicInitialize v
+    basicUnsafeRead (MV_TimeStamp v) i = TimeStamp <$> M.basicUnsafeRead v i
+    basicUnsafeWrite (MV_TimeStamp v) i (TimeStamp a) = M.basicUnsafeWrite v i a
+    {-# INLINE basicLength #-}
+    {-# INLINE basicUnsafeSlice #-}
+    {-# INLINE basicOverlaps #-}
+    {-# INLINE basicUnsafeNew #-}
+    {-# INLINE basicInitialize #-}
+    {-# INLINE basicUnsafeRead #-}
+    {-# INLINE basicUnsafeWrite #-}
+
+deriving instance Unbox TimeStamp
+
diff --git a/tests/CheckVectorOperations.hs b/tests/CheckVectorOperations.hs
new file mode 100644
--- /dev/null
+++ b/tests/CheckVectorOperations.hs
@@ -0,0 +1,32 @@
+--
+-- Time to manipulate time
+--
+-- Copyright © 2013-2017 Operational Dynamics Consulting, Pty Ltd and Others
+--
+-- The code in this file, and the program it is a part of, is
+-- made available to you by its authors as open source software:
+-- you can redistribute it and/or modify it under the terms of
+-- the 3-clause BSD licence.
+--
+
+-- | Test unboxed vector usage
+
+module CheckVectorOperations where
+
+import Data.Vector.Unboxed (Vector)
+import qualified Data.Vector.Unboxed as V
+import Test.Hspec
+import Test.QuickCheck
+
+import Chrono.TimeStamp
+
+checkVectorUnboxed :: Spec
+checkVectorUnboxed = do
+    describe "Unbox instance for TimeStamp" $
+        it "should work in an unboxed Vector" $ do
+            let vs = V.fromList [minBound, 0, maxBound] :: Vector TimeStamp
+            show vs `shouldBe`
+                "[1677-09-21T00:12:43.145224192Z" ++
+                ",1970-01-01T00:00:00.000000000Z" ++
+                ",2262-04-11T23:47:16.854775807Z]"
+ 
diff --git a/tests/TestSuite.hs b/tests/TestSuite.hs
--- a/tests/TestSuite.hs
+++ b/tests/TestSuite.hs
@@ -5,11 +5,14 @@
 import Test.Hspec
 
 import CheckTimeStamp
+import CheckVectorOperations
 
 main :: IO ()
-main = hspec suite
+main = do
+    hspec suite
+    putStrLn "."
 
 suite :: Spec
 suite = do
     checkTimeStamp
-
+    checkVectorUnboxed
