diff --git a/reclass/datatypes/parameters.py b/reclass/datatypes/parameters.py
index fc6448b..fb18a81 100644
--- a/reclass/datatypes/parameters.py
+++ b/reclass/datatypes/parameters.py
@@ -78,21 +78,21 @@
     def as_dict(self):
         return self._base.copy()
 
-    def _wrap_container(self, container, key, value):
+    def _wrap_value(self, value):
         if isinstance(value, dict):
-            self._wrap_dict(value)
+            return self._wrap_dict(value)
         elif isinstance(value, list):
-            self._wrap_list(value)
-        elif not isinstance(value, (Value, ValueList)):
-            container[key] = Value(value, self._delimiter)
+            return self._wrap_list(value)
+        elif isinstance(value, (Value, ValueList)):
+            return value
+        else:
+            return Value(value, self._delimiter)
 
-    def _wrap_list(self, item_list):
-        for n, value in enumerate(item_list):
-            self._wrap_container(item_list, n, value)
+    def _wrap_list(self, source):
+        return [ self._wrap_value(v) for v in source ]
 
-    def _wrap_dict(self, dictionary):
-        for key, value in dictionary.iteritems():
-            self._wrap_container(dictionary, key, value)
+    def _wrap_dict(self, source):
+        return { k: self._wrap_value(v) for k, v in source.iteritems() }
 
     def _update_value(self, cur, new, path):
         if cur is None:
@@ -186,8 +186,7 @@
 
         self._unrendered = None
         if isinstance(other, dict):
-            wrapped = copy.deepcopy(other)
-            self._wrap_dict(wrapped)
+            wrapped = self._wrap_dict(other)
             self._base = self._merge_recurse(self._base, wrapped, DictPath(self._delimiter))
 
         elif isinstance(other, self.__class__):
