diff --git a/poly-arity.cabal b/poly-arity.cabal
--- a/poly-arity.cabal
+++ b/poly-arity.cabal
@@ -1,5 +1,5 @@
 Name:                   poly-arity
-Version:                0.0.3
+Version:                0.0.4
 Author:                 Athan Clark <athan.clark@gmail.com>
 Maintainer:             Athan Clark <athan.clark@gmail.com>
 License:                BSD3
@@ -14,9 +14,8 @@
   HS-Source-Dirs:       src
   GHC-Options:          -Wall
   Exposed-Modules:      Data.Function.Poly
-  Build-Depends:        base >= 4 && < 5
+  Build-Depends:        base >= 4.6 && < 5
                       , constraints
-                      , HList
 
 Test-Suite spec
   Type:                 exitcode-stdio-1.0
diff --git a/src/Data/Function/Poly.hs b/src/Data/Function/Poly.hs
--- a/src/Data/Function/Poly.hs
+++ b/src/Data/Function/Poly.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE
-    TypeFamilies
+    GADTs
+  , TypeFamilies
   , KindSignatures
   , DataKinds
   , ConstraintKinds
@@ -14,7 +15,10 @@
 module Data.Function.Poly where
 
 import Data.Constraint
-import Data.HList
+
+data HList (xs :: [*]) where
+  HNil :: HList '[]
+  HCons :: x -> HList xs -> HList (x ': xs)
 
 
 type family TypeListToArity (xs :: [*]) (r :: *) :: * where
