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: 0f62a255f43633f757431a763183e406213100d4991b41c662d92635261e9d76
+-- hash: b4858fe4acf6e5d10d5b1ccbccf4ec9c5afefc6a5ed30c08bf688927144c6fbd
 
 name:           registry
-version:        0.3.3.1
+version:        0.3.3.2
 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/Registry.hs b/src/Data/Registry/Registry.hs
--- a/src/Data/Registry/Registry.hs
+++ b/src/Data/Registry/Registry.hs
@@ -143,7 +143,7 @@
 class AddRegistryLike a b c | a b -> c where
   (<:) :: a -> b -> c
 
-instance (insr ~ (ins1 :++ ins2), outr ~ (out1 :++ out2)) => AddRegistryLike (Registry ins1 out1) (Registry ins2 out2) (Registry insr outr) where
+instance (insr ~ (ins1 :++ ins2), outr ~ (out1 :++ out2), IsSubset ins1 (out1 :++ out2) ()) => AddRegistryLike (Registry ins1 out1) (Registry ins2 out2) (Registry insr outr) where
   (<:) = (<+>)
 
 instance
