diff --git a/registry.cabal b/registry.cabal
--- a/registry.cabal
+++ b/registry.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 1a8c9c072c763ae2ddd435d72d7da1fbaab8c70197bf52bc957716c0f1a5b132
+-- hash: 8f088229b02c37ae05a8267381fa377432e06918f7a865c2ddc0443407d2476c
 
 name:           registry
-version:        0.3.0.4
+version:        0.3.0.5
 synopsis:       data structure for assembling components
 description:    This library provides a "Registry" which is a data structure containing a list of functions and values representing dependencies in a directed acyclic graph. A `make` function can then be used to create a value of a specific type out of the registry.
                 You can start with the [README](https://github.com/etorreborre/registry/blob/master/README.md) for a full description of the library.
diff --git a/src/Data/Registry/Internal/Types.hs b/src/Data/Registry/Internal/Types.hs
--- a/src/Data/Registry/Internal/Types.hs
+++ b/src/Data/Registry/Internal/Types.hs
@@ -29,6 +29,13 @@
   | ProvidedValue Dynamic ValueDescription
   deriving (Show)
 
+instance Eq Value where
+  CreatedValue _ vd1 mc1 ms1 ds1 == CreatedValue _ vd2 mc2 ms2 ds2 =
+    (vd1, mc1, ms1, ds1) == (vd2, mc2, ms2, ds2)
+  ProvidedValue _ vd1 == ProvidedValue _ vd2 =
+    vd1 == vd2
+  _ == _ = False
+
 instance Hashable Value where
   hash value = hash (valDescription value)
   hashWithSalt n value = hashWithSalt n (valDescription value)
@@ -236,7 +243,7 @@
 newtype Dependencies = Dependencies
   { unDependencies :: [Value]
   }
-  deriving (Show, Semigroup, Monoid)
+  deriving (Eq, Show, Semigroup, Monoid)
 
 -- | The values types that a value depends on
 newtype DependenciesTypes = DependenciesTypes
@@ -276,7 +283,7 @@
   { _specializationPath :: SpecializationPath,
     _specializationValue :: Value
   }
-  deriving (Show)
+  deriving (Eq, Show)
 
 type SpecializationPath = NonEmpty SomeTypeRep
 
