diff --git a/cryptoids-types.cabal b/cryptoids-types.cabal
--- a/cryptoids-types.cabal
+++ b/cryptoids-types.cabal
@@ -1,31 +1,42 @@
-name: cryptoids-types
-version: 0.0.0
-cabal-version: >=1.10
-build-type: Simple
-license: BSD3
-license-file: LICENSE
-maintainer: aethoago@141.li
-synopsis: Shared types for encrypting internal object identifiers before exposure
-category: Web
-author: Gregor Kleen
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.1.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 646213c12b7e039ec3de349afc5cb60aa5a0238acd0fb597e5f6a8a5cc2b5559
+
+name:           cryptoids-types
+version:        1.0.0
+synopsis:       Shared types for encrypting internal object identifiers before exposure
+category:       Web
+author:         Gregor Kleen <aethoago@141.li>
+maintainer:     Gregor Kleen <aethoago@141.li>
+license:        BSD3
+license-file:   LICENSE
+build-type:     Simple
 extra-source-files:
     changes.md
 
 source-repository head
-    type: git
-    location: https://git.rheperire.org/cryptoids
-    subdir: cryptoids-types
+  type: git
+  location: https://git.rheperire.org/cryptoids/cryptoids-types
 
 library
-    exposed-modules:
-        Data.CryptoID
-    build-depends:
-        base >=4.9 && <4.11,
-        binary >=0.8.3.0 && <0.9,
-        path-pieces >=0.2.1 && <0.3,
-        http-api-data >=0.3.7.1 && <0.4
-    default-language: Haskell2010
-    default-extensions: KindSignatures DataKinds
-                        GeneralizedNewtypeDeriving DeriveGeneric DeriveDataTypeable
-    hs-source-dirs: src
-
+  exposed-modules:
+      Data.CryptoID
+  other-modules:
+      Paths_cryptoids_types
+  hs-source-dirs:
+      src
+  default-extensions: KindSignatures DataKinds GeneralizedNewtypeDeriving DeriveGeneric DeriveDataTypeable
+  ghc-options: -Wall -fno-warn-name-shadowing
+  build-depends:
+      aeson >=1.2.4.0 && <1.3
+    , base >=4.9 && <5
+    , binary >=0.8.3 && <0.11
+    , deepseq >=1.4.3.0 && <1.5
+    , hashable >=1.2.6.1 && <1.3
+    , http-api-data >=0.3.7 && <0.4
+    , path-pieces >=0.2.1 && <0.3
+  default-language: Haskell2010
diff --git a/src/Data/CryptoID.hs b/src/Data/CryptoID.hs
--- a/src/Data/CryptoID.hs
+++ b/src/Data/CryptoID.hs
@@ -13,10 +13,16 @@
 import Web.PathPieces (PathPiece)
 import Web.HttpApiData (ToHttpApiData, FromHttpApiData)
 
+import Control.DeepSeq (NFData)
+import Data.Aeson (ToJSON, ToJSONKey, FromJSON, FromJSONKey)
+
+import Data.Hashable (Hashable)
+
 newtype CryptoID (namespace :: Symbol) a = CryptoID { ciphertext :: a }
   deriving ( Eq, Ord
            , Read, Show
-           , Binary, Storable
+           , Binary, Storable, NFData, Hashable
            , Data, Typeable, Generic
            , PathPiece, ToHttpApiData, FromHttpApiData
+           , ToJSON, ToJSONKey, FromJSON, FromJSONKey
            )
