diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,11 @@
+0.4.1
+-----
+* Marked this package `Trustworthy`.
+
+0.4
+---
+* Added `NFData` and `Serial` instances
+
 0.3
 ---
 * Major version bump due to large semantics change in `log-domain`.
diff --git a/compensated.cabal b/compensated.cabal
--- a/compensated.cabal
+++ b/compensated.cabal
@@ -1,6 +1,6 @@
 name:          compensated
 category:      Numeric
-version:       0.3
+version:       0.4.1
 license:       BSD3
 cabal-version: >= 1.8
 license-file:  LICENSE
@@ -44,6 +44,7 @@
     base                      >= 4.3      && < 5,
     bifunctors                >= 3.2      && < 4,
     binary                    >= 0.5      && < 0.8,
+    bytes                     >= 0.7      && < 1,
     cereal                    >= 0.3.5    && < 0.4,
     comonad                   >= 3        && < 4,
     deepseq                   >= 1.3      && < 1.5,
diff --git a/src/Numeric/Compensated.hs b/src/Numeric/Compensated.hs
--- a/src/Numeric/Compensated.hs
+++ b/src/Numeric/Compensated.hs
@@ -6,6 +6,7 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE PatternGuards #-}
+{-# LANGUAGE Trustworthy #-}
 --------------------------------------------------------------------
 -- |
 -- Copyright :  (c) Edward Kmett 2013
@@ -52,6 +53,7 @@
 
 import Control.Applicative
 import Control.Lens as L
+import Control.DeepSeq
 import Control.Monad
 import Data.Binary as Binary
 import Data.Data
@@ -61,6 +63,7 @@
 import Data.Ratio
 import Data.SafeCopy
 import Data.Serialize as Serialize
+import Data.Bytes.Serial as Bytes
 import Data.Semigroup
 import Data.Vector.Unboxed as U
 import Data.Vector.Generic as G
@@ -269,6 +272,10 @@
 compensatedDataType = mkDataType "Data.Analytics.Numeric.Compensated" [compensatedConstr]
 {-# NOINLINE compensatedDataType #-}
 
+instance (Compensable a, NFData a) => NFData (Compensated a) where
+  rnf m = with m $ \x y -> rnf x `seq` rnf y `seq` ()
+  {-# INLINE rnf #-}
+
 instance (Compensable a, Show a) => Show (Compensated a) where
   showsPrec d m = with m $ \a b -> showParen (d > 10) $
     showString "compensated " . T.showsPrec 11 a . showChar ' ' . T.showsPrec 11 b
@@ -495,6 +502,12 @@
   put m = with m $ \a b -> do
     Serialize.put a
     Serialize.put b
+
+instance (Compensable a, Serial a) => Serial (Compensated a) where
+  deserialize = compensated <$> Bytes.deserialize <*> Bytes.deserialize
+  serialize m = with m $ \a b -> do
+    Bytes.serialize a
+    Bytes.serialize b
 
 -- ಠ_ಠ this unnecessarily expects that the format won't change, because I can't derive a better instance.
 instance (Compensable a, Serialize a) => SafeCopy (Compensated a)
