diff --git a/Data/Manifold/Types/Primitive.hs b/Data/Manifold/Types/Primitive.hs
--- a/Data/Manifold/Types/Primitive.hs
+++ b/Data/Manifold/Types/Primitive.hs
@@ -78,6 +78,8 @@
 
 import Control.Lens ((^.))
 
+import Data.Binary
+
 import qualified Prelude
 
 import Control.Category.Constrained.Prelude hiding ((^))
@@ -257,6 +259,14 @@
                                     | θ' <- QC.shrink (θ*6/pi)
                                     , φ' <- QC.shrink (φ*12/pi) ]
 
+instance QC.Arbitrary D¹ where
+  arbitrary = D¹ . (\x -> (x`mod'`2) - 1) <$> QC.arbitrary
+  shrink (D¹ p) = D¹ . (\x -> (x`mod'`2) - 1) <$> QC.shrink p
+instance QC.Arbitrary D² where
+  arbitrary = D²Polar . (\x -> x`mod'`1) <$> QC.arbitrary
+               <*> (φParamS¹ <$> QC.arbitrary)
+  shrink (D²Polar r φ) = D²Polar . (\x -> (x`mod'`2) - 1) <$> QC.shrink r
+               <*> (φParamS¹ <$> QC.shrink (S¹Polar φ))
 
 instance (SP.Show m, SP.Show f) => SP.Show (FibreBundle m f) where
   showsPrec p (FibreBundle m v) = showParen (p>9)
@@ -267,3 +277,18 @@
   shrink (FibreBundle m v) = [ FibreBundle m' v'
                              | m' <- QC.shrink m
                              , v' <- QC.shrink v ]
+
+
+instance Binary (ZeroDim a) where
+  put Origin = return ()
+  get = return Origin
+instance Binary S⁰
+instance Binary S¹
+instance Binary S²
+instance Binary ℝP⁰
+instance Binary ℝP¹
+instance Binary ℝP²
+instance Binary D¹
+instance Binary D²
+instance Binary y => Binary (CD¹ y)
+instance Binary y => Binary (Cℝay y)
diff --git a/manifolds.cabal b/manifolds.cabal
--- a/manifolds.cabal
+++ b/manifolds.cabal
@@ -1,5 +1,5 @@
 Name:                manifolds
-Version:             0.5.0.1
+Version:             0.5.0.2
 Category:            Math
 Synopsis:            Coordinate-free hypersurfaces
 Description:         Manifolds, a generalisation of the notion of &#x201c;smooth curves&#x201d; or surfaces,
@@ -40,7 +40,7 @@
 
 Library
   Build-Depends:     base>=4.5 && < 6
-                     , manifolds-core == 0.5.0.1
+                     , manifolds-core == 0.5.0.2
                      , transformers
                      , vector-space>=0.8
                      , free-vector-spaces>=0.1.5
@@ -51,6 +51,7 @@
                      , spatial-rotations >= 0.1 && < 0.2
                      , containers
                      , array
+                     , binary
                      , comonad
                      , free
                      , semigroups
