diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,1 @@
+BSD3
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/Type/Ord/SpineSerialize.hs b/Type/Ord/SpineSerialize.hs
new file mode 100644
--- /dev/null
+++ b/Type/Ord/SpineSerialize.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE TypeFamilies, QuasiQuotes, TypeOperators, UndecidableInstances #-}
+
+{- |
+
+Module      :  Type.Ord.SpineSerialize
+Copyright   :  (c) The University of Kansas 2011
+License     :  BSD3
+
+Maintainer  :  nicolas.frisby@gmail.com
+Stability   :  experimental
+Portability :  see LANGUAGE pragmas (... GHC)
+
+Generic type-level comparison of @type-spine@- and @type-cereal@-enabled types.
+
+-}
+module Type.Ord.SpineSerialize
+  (SpineCompare, Compare, spineSerializeType, spineSerializeTypeAsHash,
+   module Type.Spine, module Type.Serialize, module Type.Ord) where
+
+import Type.Spine
+import Type.Serialize
+import Type.Ord hiding (Compare)
+import qualified Type.Ord as Ord
+
+import Language.Haskell.TH (Name, Q, Dec)
+
+
+type SpineCompare l r = Ord.Compare (Spine l) (Spine r)
+type Compare l r = SpineCompare ([qK|*|] l) ([qK|*|] r)
+
+type instance Ord.Compare (TypeName l) (TypeName r) =
+  Ord.Compare (Serialize l) (Serialize r)
+type instance Ord.Compare (lx :@ ly) (rx :@ ry) =
+  OrdCase (Ord.Compare (Spine lx) (Spine rx))
+     LT
+     (Ord.Compare (Spine ly) (Spine ry))
+     GT
+type instance Ord.Compare (TypeName l) (rx :@ ry) = LT
+type instance Ord.Compare (lx :@ ly) (TypeName r) = GT
+
+
+
+spineSerializeType :: Name -> Q [Dec]
+spineSerializeType n = do
+  x <- serializeType n
+  y <- spineType n
+  return $ x ++ y
+
+spineSerializeTypeAsHash :: Name -> Q [Dec]
+spineSerializeTypeAsHash n = do
+  x <- serializeTypeAsHash n
+  y <- spineType n
+  return $ x ++ y
diff --git a/type-ord-spine-cereal.cabal b/type-ord-spine-cereal.cabal
new file mode 100644
--- /dev/null
+++ b/type-ord-spine-cereal.cabal
@@ -0,0 +1,24 @@
+Name:           type-ord-spine-cereal
+Version:        0.1
+License:        BSD3
+License-File:   LICENSE
+Author:         Nicolas Frisby <nicolas.frisby@gmail.com>
+Maintainer:     Nicolas Frisby <nicolas.frisby@gmail.com>
+
+Category: Type System
+
+Synopsis:       Generic type-level comparison of types
+
+Description: Generic type-level comparison of @type-spine@- and
+  @type-cereal@-enabled types.
+
+Cabal-Version: >= 1.6.0.1
+
+Build-Type: Simple
+
+
+Library
+  Build-Depends: base >= 4 && < 5, template-haskell
+  Build-Depends: type-spine < 0.2, type-cereal < 0.2, type-ord < 0.2
+
+  Exposed-Modules: Type.Ord.SpineSerialize
