diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,8 +1,13 @@
 # `Data.Reify.GADT`
 
+[![Hackage Version](https://img.shields.io/hackage/v/data-reify-gadt)](https://hackage.haskell.org/package/data-reify-gadt)
+[![Doc](https://img.shields.io/badge/Documentation-Haddock-purple)](https://hackage.haskell.org/package/data-reify-gadt-0.1.0.0/docs/Data-Reify-GADT.html)
+[![CI](https://github.com/Arthi-chaud/data-reify-gadt/actions/workflows/CI.yml/badge.svg)](https://github.com/Arthi-chaud/data-reify-gadt/actions/workflows/CI.yml)
+
+
 `data-reify-gadt` is a rewrite of [`data-reify`](https://hackage.haskell.org/package/data-reify) to make the library usable with GADTs.
 
-With this implementation, it is possible to use `data-reify`'s technique to make a graph out of typed ASTs that uses GADTs.
+With this implementation, it is possible to use `data-reify`'s technique to make a graph out of typed ASTs that use GADTs.
 
 The logic is the same, only the type definition changes slightly.
 
diff --git a/data-reify-gadt.cabal b/data-reify-gadt.cabal
--- a/data-reify-gadt.cabal
+++ b/data-reify-gadt.cabal
@@ -1,96 +1,103 @@
-cabal-version:      2.2
-name:               data-reify-gadt
-version:            0.1.0.0
-license:            BSD-3-Clause
-license-file:       LICENSE
-copyright:          2025 Arthur Jamet
-maintainer:         aj530@kent.ac.uk
-author:             Arthur Jamet
-tested-with:        ghc ==9.6.6 ghc ==9.8.4 ghc ==9.10.1 ghc ==9.12.1
-homepage:           https://github.com/Arthi-chaud/data-reify-gadt#readme
-bug-reports:        https://github.com/Arthi-chaud/data-reify-gadt/issues
-synopsis:           Data.Reify for GADTs
-description:
-    Please see the README on GitHub at <https://github.com/Arthi-chaud/data-reify-gadt#readme>
+cabal-version: 2.2
 
-category:           Data
-build-type:         Simple
-extra-source-files: README.md
+-- This file has been generated from package.yaml by hpack version 0.37.0.
+--
+-- see: https://github.com/sol/hpack
 
+name:           data-reify-gadt
+version:        0.1.0.1
+synopsis:       Data.Reify for GADTs
+description:    Please see the README on GitHub at <https://github.com/Arthi-chaud/data-reify-gadt#readme>
+category:       Data
+homepage:       https://github.com/Arthi-chaud/data-reify-gadt#readme
+bug-reports:    https://github.com/Arthi-chaud/data-reify-gadt/issues
+author:         Arthur Jamet
+maintainer:     aj530@kent.ac.uk
+copyright:      2025 Arthur Jamet
+license:        BSD-3-Clause
+license-file:   LICENSE
+build-type:     Simple
+tested-with:
+    GHC ==9.6.6
+  , GHC ==9.8.4
+  , GHC ==9.10.1
+  , GHC ==9.12.1
+extra-source-files:
+    README.md
+
 source-repository head
-    type:     git
-    location: https://github.com/Arthi-chaud/data-reify-gadt
+  type: git
+  location: https://github.com/Arthi-chaud/data-reify-gadt
 
 library
-    exposed-modules:
-        Data.Reify.GADT
-        Data.Reify.GADT.Graph
-
-    hs-source-dirs:     src
-    other-modules:
-        Lib
-        Paths_data_reify_gadt
-
-    autogen-modules:    Paths_data_reify_gadt
-    default-language:   Haskell2010
-    default-extensions:
-        RankNTypes QuantifiedConstraints UndecidableInstances
-        ExistentialQuantification TypeOperators
-
-    ghc-options:
-        -Wall -Wcompat -Widentities -Wincomplete-record-updates
-        -Wincomplete-uni-patterns -Wmissing-export-lists
-        -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
-
-    build-depends:
-        base >=4.7 && <5,
-        containers >=0.7 && <0.8,
-        hashable >=1.5.0.0 && <1.6,
-        unordered-containers >=0.2.20 && <0.3
+  exposed-modules:
+      Data.Reify.GADT
+      Data.Reify.GADT.Graph
+  other-modules:
+      Lib
+      Paths_data_reify_gadt
+  autogen-modules:
+      Paths_data_reify_gadt
+  hs-source-dirs:
+      src
+  default-extensions:
+      RankNTypes
+      QuantifiedConstraints
+      UndecidableInstances
+      ExistentialQuantification
+      TypeOperators
+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
+  build-depends:
+      base >=4.7 && <5
+    , containers
+    , hashable
+    , unordered-containers
+  default-language: Haskell2010
 
 executable example-ast
-    main-is:            ast.hs
-    hs-source-dirs:     examples
-    other-modules:      Paths_data_reify_gadt
-    autogen-modules:    Paths_data_reify_gadt
-    default-language:   Haskell2010
-    default-extensions:
-        RankNTypes QuantifiedConstraints UndecidableInstances
-        ExistentialQuantification TypeOperators
-
-    ghc-options:
-        -Wall -Wcompat -Widentities -Wincomplete-record-updates
-        -Wincomplete-uni-patterns -Wmissing-export-lists
-        -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
-
-    build-depends:
-        base >=4.7 && <5,
-        containers >=0.7 && <0.8,
-        data-reify-gadt,
-        hashable >=1.5.0.0 && <1.6,
-        unordered-containers >=0.2.20 && <0.3
+  main-is: ast.hs
+  other-modules:
+      Paths_data_reify_gadt
+  autogen-modules:
+      Paths_data_reify_gadt
+  hs-source-dirs:
+      examples
+  default-extensions:
+      RankNTypes
+      QuantifiedConstraints
+      UndecidableInstances
+      ExistentialQuantification
+      TypeOperators
+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
+  build-depends:
+      base >=4.7 && <5
+    , containers
+    , data-reify-gadt
+    , hashable
+    , unordered-containers
+  default-language: Haskell2010
 
 test-suite test
-    type:               exitcode-stdio-1.0
-    main-is:            Spec.hs
-    hs-source-dirs:     test
-    other-modules:      Paths_data_reify_gadt
-    autogen-modules:    Paths_data_reify_gadt
-    default-language:   Haskell2010
-    default-extensions:
-        RankNTypes QuantifiedConstraints UndecidableInstances
-        ExistentialQuantification TypeOperators
-
-    ghc-options:
-        -Wall -Wcompat -Widentities -Wincomplete-record-updates
-        -Wincomplete-uni-patterns -Wmissing-export-lists
-        -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
-        -threaded -rtsopts -with-rtsopts=-N
-
-    build-depends:
-        base >=4.7 && <5,
-        containers >=0.7 && <0.8,
-        data-reify-gadt,
-        hashable >=1.5.0.0 && <1.6,
-        hspec >=2.11.11 && <2.12,
-        unordered-containers >=0.2.20 && <0.3
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Paths_data_reify_gadt
+  autogen-modules:
+      Paths_data_reify_gadt
+  hs-source-dirs:
+      test
+  default-extensions:
+      RankNTypes
+      QuantifiedConstraints
+      UndecidableInstances
+      ExistentialQuantification
+      TypeOperators
+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
+  build-depends:
+      base >=4.7 && <5
+    , containers
+    , data-reify-gadt
+    , hashable
+    , hspec
+    , unordered-containers
+  default-language: Haskell2010
diff --git a/examples/ast.hs b/examples/ast.hs
--- a/examples/ast.hs
+++ b/examples/ast.hs
@@ -20,7 +20,7 @@
 
 instance MuRef (Fix TreeF) where
     type DeRef (Fix TreeF) = TreeF
-    type E (Fix TreeF) = Fix TreeF
+    type SubNode (Fix TreeF) = Fix TreeF
     mapDeRef f (Fx e) = case e of
         Leaf a -> pure $ Leaf a
         Node l r -> Node <$> f l <*> f r
diff --git a/src/Data/Reify/GADT.hs b/src/Data/Reify/GADT.hs
--- a/src/Data/Reify/GADT.hs
+++ b/src/Data/Reify/GADT.hs
@@ -27,9 +27,9 @@
 -- and a way to map over the deferenced internals.
 class MuRef (a :: Type -> Type) where
     type DeRef a :: (Type -> Type) -> (Type -> Type)
-    type E a :: Type -> Type
+    type SubNode a :: Type -> Type
     mapDeRef ::
-        (Applicative f, e ~ E a) =>
+        (Applicative f, e ~ SubNode a) =>
         (forall t'. (MuRef e) => e t' -> f (u t')) ->
         a t ->
         f ((DeRef a) u t)
@@ -37,7 +37,7 @@
 -- | 'reifyGraph' takes a data structure that admits 'MuRef', and returns a 'Graph' that contains
 -- the dereferenced nodes, with their children as 'Unique's rather than recursive values.
 reifyGraph ::
-    (MuRef s, E (E s) ~ E s, DeRef (E s) ~ DeRef s) =>
+    (MuRef s, SubNode (SubNode s) ~ SubNode s, DeRef (SubNode s) ~ DeRef s) =>
     s a ->
     IO (Graph (DeRef s) a)
 reifyGraph m = do
@@ -51,7 +51,7 @@
 --
 -- This allows for, e.g., a list of mutually recursive structures.
 reifyGraphs ::
-    (MuRef s, E (E s) ~ E s, DeRef (E s) ~ DeRef s, Traversable t) =>
+    (MuRef s, SubNode (SubNode s) ~ SubNode s, DeRef (SubNode s) ~ DeRef s, Traversable t) =>
     t (s e) ->
     IO (t (Graph (DeRef s) e))
 reifyGraphs coll = do
@@ -67,7 +67,7 @@
 -- Reify a data structure's 'Graph' using the supplied map of stable names and
 -- unique supply.
 reifyWithContext ::
-    (MuRef s, E (E s) ~ E s, DeRef (E s) ~ DeRef s) =>
+    (MuRef s, SubNode (SubNode s) ~ SubNode s, DeRef (SubNode s) ~ DeRef s) =>
     MVar (HashMap DynStableName Unique) ->
     MVar Unique ->
     s a ->
@@ -81,8 +81,7 @@
 
 -- The workhorse for 'reifyGraph' and 'reifyGraphs'.
 findNodes ::
-    -- ‘DeRef (E (e t) t') ~ DeRef (e t')’
-    (MuRef s, E (E s) ~ E s, DeRef (E s) ~ DeRef s) =>
+    (MuRef s, SubNode (SubNode s) ~ SubNode s, DeRef (SubNode s) ~ DeRef s) =>
     -- | A map of stable names to unique numbers.
     --   Invariant: all 'Uniques' that appear in the range are less
     --   than the current value in the unique name supply.
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -18,7 +18,7 @@
 
 instance MuRef (Fix ExprF) where
     type DeRef (Fix ExprF) = ExprF
-    type E (Fix ExprF) = Fix ExprF
+    type SubNode (Fix ExprF) = Fix ExprF
     mapDeRef f (Fx e) = case e of
         Val a -> pure $ Val a
         Dup a -> Dup <$> f a
