diff --git a/Type/Serialize/Base.hs b/Type/Serialize/Base.hs
--- a/Type/Serialize/Base.hs
+++ b/Type/Serialize/Base.hs
@@ -14,7 +14,7 @@
 
 -}
 module Type.Serialize.Base
-  (Serialize, encode, serializeType, serializeTypeAsHash) where
+  (Serialize, encode, serializeType, serializeTypeAsHash, serializeTypeAsHash_) where
 
 import Type.Spine.TH (tyConSignature)
 import Type.Spine.Stage0 (kTypeG)
@@ -52,18 +52,25 @@
                 toDigits (exactly 3 . take 3 . flexible) (H.asWord64 $ H.hash uid) .
                 encode $ uid
   (:[]) `fmap` tySynInstD ''Serialize [qk `appT` conT n] base128
+serializeType n = fail $ "serializeType expects a global name: " ++ show n
 
 -- | @serializeType@ can result in very large types, so we prefer the
 -- @data-hash@ hash of the @NameG@'s serialization.
 serializeTypeAsHash :: Name -> Q [Dec]
-serializeTypeAsHash n@(Name (occString -> occ)
-                (NameG _ (pkgString -> pkg) (modString -> mod))) = do
+serializeTypeAsHash n = do
   (ks, k) <- tyConSignature n
+  serializeTypeAsHash_ n ks k
 
+-- | @serializeType@ can result in very large types, so we prefer the
+-- @data-hash@ hash of the @NameG@'s serialization.
+serializeTypeAsHash_ :: Name -> [Kind] -> Kind -> Q [Dec]
+serializeTypeAsHash_ n@(Name (occString -> occ)
+                (NameG _ (pkgString -> pkg) (modString -> mod))) ks k = do
   let qk = kTypeG $ foldr ArrowK k ks
       uid = (occ, mod, pkg)
       base128 = return . toDigits_ flexible . H.asWord64 . H.hash $ uid
   (:[]) `fmap` tySynInstD ''Serialize [qk `appT` conT n] base128
+serializeTypeAsHash_ n _ _ = fail $ "serializeTypeAsHash expects a global name: " ++ show n
 
 tvb_kind (PlainTV _) = StarK
 tvb_kind (KindedTV _ k) = k
diff --git a/type-cereal.cabal b/type-cereal.cabal
--- a/type-cereal.cabal
+++ b/type-cereal.cabal
@@ -1,5 +1,5 @@
 Name:           type-cereal
-Version:        0.1
+Version:        0.1.1
 License:        BSD3
 License-File:   LICENSE
 Author:         Nicolas Frisby <nicolas.frisby@gmail.com>
