diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,3 @@
+### v0.1.1.0
+
+- Added `Typeable` instances for the main types.
diff --git a/abt.cabal b/abt.cabal
--- a/abt.cabal
+++ b/abt.cabal
@@ -1,5 +1,5 @@
 name:                abt
-version:             0.1.0.2.1
+version:             0.1.1.0
 synopsis:            Abstract binding trees for Haskell
 description:         A Haskell port of the Carnegie Mellon ABT library (SML), with some improvements.
 license:             MIT
@@ -9,6 +9,11 @@
 category:            Language
 build-type:          Simple
 cabal-version:       >=1.10
+extra-source-files:  CHANGELOG.md
+
+source-repository head
+  type:     git
+  location: https://github.com/jonsterling/hs-abt.git
 
 library
   exposed-modules:     Abt.Class,
diff --git a/src/Abt/Concrete/LocallyNameless.hs b/src/Abt/Concrete/LocallyNameless.hs
--- a/src/Abt/Concrete/LocallyNameless.hs
+++ b/src/Abt/Concrete/LocallyNameless.hs
@@ -1,9 +1,11 @@
 {-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE KindSignatures #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE UnicodeSyntax #-}
 
 module Abt.Concrete.LocallyNameless
@@ -24,6 +26,7 @@
 
 import Control.Applicative
 import Data.Profunctor
+import Data.Typeable hiding (Refl)
 import Data.Vinyl
 
 -- | A variable is a De Bruijn index, optionally decorated with a display name.
@@ -31,7 +34,7 @@
   = Var
   { _varName ∷ !(Maybe String)
   , _varIndex ∷ !Int
-  }
+  } deriving Typeable
 
 instance Show Var where
   show (Var (Just v) _) = v
@@ -80,6 +83,8 @@
   Bound ∷ Int → Tm0 o
   Abs ∷ Tm o n → Tm o (S n)
   App ∷ o ns → Rec (Tm o) ns → Tm0 o
+
+deriving instance Typeable Tm
 
 -- | First order terms (i.e. terms not headed by abstractions).
 --
diff --git a/src/Abt/Types/Nat.hs b/src/Abt/Types/Nat.hs
--- a/src/Abt/Types/Nat.hs
+++ b/src/Abt/Types/Nat.hs
@@ -1,6 +1,16 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE StandaloneDeriving #-}
+
 module Abt.Types.Nat where
 
+import Data.Typeable
+
 data Nat
   = Z
   | S !Nat
+  deriving Typeable
+
+deriving instance Typeable Z
+deriving instance Typeable S
 
diff --git a/src/Abt/Types/View.hs b/src/Abt/Types/View.hs
--- a/src/Abt/Types/View.hs
+++ b/src/Abt/Types/View.hs
@@ -1,8 +1,10 @@
 {-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE KindSignatures #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE UnicodeSyntax #-}
 
 module Abt.Types.View
@@ -17,10 +19,11 @@
 
 import Control.Applicative
 import Data.Profunctor
+import Data.Typeable hiding (Refl)
 import Data.Vinyl
 
 -- | @v@ is the type of variables; @o@ is the type of operators parameterized
--- by arities; @n@ is the "higher type"/order of the term (i.e. a term has
+-- by arities; @n@ is the "higher type"/valence of the term (i.e. a term has
 -- @n=0@, a single binding has @n=1@, etc.); @φ@ is the functor which
 -- interprets the inner structure of the view.
 --
@@ -28,6 +31,8 @@
   V ∷ v → View0 v o φ
   (:\) ∷ v → φ n → View v o (S n) φ
   (:$) ∷ o ns → Rec φ ns → View0 v o φ
+
+deriving instance Typeable View
 
 infixl 2 :$
 
