diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+= Version 1.3.1.1, 2016-06-09 =
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+* Ensure hashmap.h is distributed with the tarball
+
 = Version 1.3.1, 2016-06-09 =
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * GHC 8 compatibility
diff --git a/hashmap.cabal b/hashmap.cabal
--- a/hashmap.cabal
+++ b/hashmap.cabal
@@ -1,5 +1,5 @@
 Name:                hashmap
-Version:             1.3.1
+Version:             1.3.1.1
 Synopsis:            Persistent containers Map and Set based on hashing.
 Description:         An implementation of persistent 'Map' and 'Set' containers
                      based on hashing. The implementation is build on
@@ -28,7 +28,7 @@
 Category:            Data
 Build-type:          Simple
 Cabal-version:       >= 1.6
-Extra-source-files:  CHANGES, README.md
+Extra-source-files:  CHANGES, README.md, include/*.h
 tested-with:         GHC == 7.0.4
                    , GHC == 7.2.2
                    , GHC == 7.4.2
diff --git a/include/hashmap.h b/include/hashmap.h
new file mode 100644
--- /dev/null
+++ b/include/hashmap.h
@@ -0,0 +1,27 @@
+#ifndef HASKELL_HASHMAP_H
+#define HASKELL_HASHMAP_H
+
+/*
+ * Define INSTANCE_TYPEABLE[0-2]
+ */
+#if __GLASGOW_HASKELL__ >= 707
+#define INSTANCE_TYPEABLE0(tycon,tcname,str) deriving instance Typeable tycon
+#define INSTANCE_TYPEABLE1(tycon,tcname,str) deriving instance Typeable tycon
+#define INSTANCE_TYPEABLE2(tycon,tcname,str) deriving instance Typeable tycon
+#elif defined(__GLASGOW_HASKELL__)
+#define INSTANCE_TYPEABLE0(tycon,tcname,str) deriving instance Typeable tycon
+#define INSTANCE_TYPEABLE1(tycon,tcname,str) deriving instance Typeable1 tycon
+#define INSTANCE_TYPEABLE2(tycon,tcname,str) deriving instance Typeable2 tycon
+#else
+#define INSTANCE_TYPEABLE0(tycon,tcname,str) tcname :: TyCon; tcname = mkTyCon str; \
+  instance Typeable tycon where { typeOf _ = mkTyConApp tcname [] }
+#define INSTANCE_TYPEABLE1(tycon,tcname,str) tcname :: TyCon; tcname = mkTyCon str; \
+  instance Typeable1 tycon where { typeOf1 _ = mkTyConApp tcname [] }; \
+  instance Typeable a => Typeable (tycon a) where { typeOf = typeOfDefault }
+#define INSTANCE_TYPEABLE2(tycon,tcname,str) tcname :: TyCon; tcname = mkTyCon str; \
+  instance Typeable2 tycon where { typeOf2 _ = mkTyConApp tcname [] }; \
+  instance Typeable a => Typeable1 (tycon a) where { typeOf1 = typeOf1Default }; \
+  instance (Typeable a, Typeable b) => Typeable (tycon a b) where { typeOf = typeOfDefault }
+#endif
+
+#endif
