diff --git a/reclass/datatypes/tests/test_exports.py b/reclass/datatypes/tests/test_exports.py
index a0acce7..16a45cb 100644
--- a/reclass/datatypes/tests/test_exports.py
+++ b/reclass/datatypes/tests/test_exports.py
@@ -120,5 +120,14 @@
         p.interpolate(e)
         self.assertIn(p.as_dict(), [ r1, r2 ])
 
+    def test_merging_inv_queries(self):
+        e = {'node1': {'a': 1}, 'node2': {'a': 1}, 'node3': {'a': 2}}
+        p1 = Parameters({'exp': '$[ if exports:a == 1 ]'}, SETTINGS, '')
+        p2 = Parameters({'exp': '$[ if exports:a == 2 ]'}, SETTINGS, '')
+        r = { 'exp': [ 'node1', 'node2', 'node3' ] }
+        p1.merge(p2)
+        p1.interpolate(e)
+        self.assertEqual(p1.as_dict(), r)
+
 if __name__ == '__main__':
     unittest.main()
diff --git a/reclass/values/invitem.py b/reclass/values/invitem.py
index 3874f39..5461612 100644
--- a/reclass/values/invitem.py
+++ b/reclass/values/invitem.py
@@ -189,6 +189,9 @@
     def get_references(self):
         return self._question.refs
 
+    def assembleRefs(self, context):
+        return
+
     def get_inv_references(self):
         return self.inv_refs
 
diff --git a/reclass/values/valuelist.py b/reclass/values/valuelist.py
index a56395b..86563fa 100644
--- a/reclass/values/valuelist.py
+++ b/reclass/values/valuelist.py
@@ -71,9 +71,9 @@
         self.ignore_failed_render = True
         for value in self._values:
             if value.has_inv_query:
-                self._inv_refs.extend(value.get_inv_references)
+                self._inv_refs.extend(value.get_inv_references())
                 self._has_inv_query = True
-                if vale.ignore_failed_render() is False:
+                if value.ignore_failed_render() is False:
                     self.ignore_failed_render = False
         if self._has_inv_query is False:
             self.ignore_failed_render = False
@@ -88,6 +88,13 @@
             if value.allRefs is False:
                 self.allRefs = False
 
+    @property
+    def needs_all_envs(self):
+        for value in self._values:
+            if value.needs_all_envs:
+                return True
+        return False
+
     def merge(self):
         output = None
         for n, value in enumerate(self._values):
