fix inventory output merging in parameters from other nodes
diff --git a/reclass/datatypes/parameters.py b/reclass/datatypes/parameters.py
index 97de688..8f83c11 100644
--- a/reclass/datatypes/parameters.py
+++ b/reclass/datatypes/parameters.py
@@ -183,14 +183,12 @@
         self._unrendered = None
         if isinstance(other, dict):
             wrapped = self._wrap_dict(other)
-            self._base = self._merge_recurse(self._base, wrapped, DictPath(self._delimiter))
-
         elif isinstance(other, self.__class__):
-            self._base = self._merge_recurse(self._base, other._base, DictPath(self._delimiter))
-
+            wrapped = self._wrap_dict(other._base)
         else:
             raise TypeError('Cannot merge %s objects into %s' % (type(other),
                             self.__class__.__name__))
+        self._base = self._merge_recurse(self._base, wrapped, DictPath(self._delimiter))
 
     def render_simple(self, options=None):
         self._unrendered = None
diff --git a/reclass/datatypes/tests/test_parameters.py b/reclass/datatypes/tests/test_parameters.py
index 1cc3804..8731d69 100644
--- a/reclass/datatypes/tests/test_parameters.py
+++ b/reclass/datatypes/tests/test_parameters.py
@@ -401,5 +401,41 @@
         p1.interpolate()
         self.assertEqual(p1.as_dict(), r)
 
+    def test_list_merging_for_multiple_nodes(self):
+        p1 = Parameters({ 'alpha': { 'one': [1, 2] }})
+        p2 = Parameters({ 'beta': {'two': '${alpha:one}' }})
+        p3 = Parameters({'beta': {'two': [3] }})
+        n1 = Parameters({ 'name': 'node1'})
+        r1 = { 'alpha': { 'one': [1, 2] }, 'beta': { 'two': [1, 2] }, 'name': 'node1' }
+        r2 = { 'alpha': { 'one': [1, 2] }, 'beta': { 'two': [1, 2, 3] }, 'name': 'node2' }
+        n1.merge(p1)
+        n1.merge(p2)
+        n1.interpolate()
+        n2 = Parameters({'name': 'node2'})
+        n2.merge(p1)
+        n2.merge(p2)
+        n2.merge(p3)
+        n2.interpolate()
+        self.assertEqual(n1.as_dict(), r1)
+        self.assertEqual(n2.as_dict(), r2)
+
+    def test_dict_merging_for_multiple_nodes(self):
+        p1 = Parameters({ 'alpha': { 'one': { 'a': 'aa', 'b': 'bb' }}})
+        p2 = Parameters({ 'beta': {'two': '${alpha:one}' }})
+        p3 = Parameters({'beta': {'two': {'c': 'cc' }}})
+        n1 = Parameters({ 'name': 'node1'})
+        r1 = { 'alpha': { 'one': {'a': 'aa', 'b': 'bb'} }, 'beta': { 'two': {'a': 'aa', 'b': 'bb'} }, 'name': 'node1' }
+        r2 = { 'alpha': { 'one': {'a': 'aa', 'b': 'bb'} }, 'beta': { 'two': {'a': 'aa', 'b': 'bb', 'c': 'cc'} }, 'name': 'node2' }
+        n1.merge(p1)
+        n1.merge(p2)
+        n1.interpolate()
+        n2 = Parameters({'name': 'node2'})
+        n2.merge(p1)
+        n2.merge(p2)
+        n2.merge(p3)
+        n2.interpolate()
+        self.assertEqual(n1.as_dict(), r1)
+        self.assertEqual(n2.as_dict(), r2)
+
 if __name__ == '__main__':
     unittest.main()