diff --git a/reclass/datatypes/parameters.py b/reclass/datatypes/parameters.py
index fb18a81..97de688 100644
--- a/reclass/datatypes/parameters.py
+++ b/reclass/datatypes/parameters.py
@@ -95,9 +95,6 @@
         return { k: self._wrap_value(v) for k, v in source.iteritems() }
 
     def _update_value(self, cur, new, path):
-        if cur is None:
-            return new
-
         if isinstance(cur, Value):
             values = ValueList(cur)
         elif isinstance(cur, ValueList):
@@ -162,11 +159,10 @@
         """
 
 
-        if isinstance(new, dict) and (cur is None or isinstance(cur, dict)):
-            if cur is None:
-                cur = {}
+        if cur is None:
+            return new
+        elif isinstance(new, dict) and isinstance(cur, dict):
             return self._merge_dict(cur, new, path)
-
         else:
             return self._update_value(cur, new, path)
 
diff --git a/reclass/utils/dictpath.py b/reclass/utils/dictpath.py
index 8ff037f..f5c4e36 100644
--- a/reclass/utils/dictpath.py
+++ b/reclass/utils/dictpath.py
@@ -59,12 +59,12 @@
         if contents is None:
             self._parts = []
         else:
-            if isinstance(contents, types.StringTypes):
+            if isinstance(contents, list):
+                self._parts = contents
+            elif isinstance(contents, types.StringTypes):
                 self._parts = self._split_string(contents)
             elif isinstance(contents, tuple):
                 self._parts = list(contents)
-            elif isinstance(contents, list):
-                self._parts = contents
             else:
                 raise TypeError('DictPath() takes string or list, '\
                                 'not %s' % type(contents))
diff --git a/reclass/values/valuelist.py b/reclass/values/valuelist.py
index 29d32df..c7e965c 100644
--- a/reclass/values/valuelist.py
+++ b/reclass/values/valuelist.py
@@ -8,12 +8,10 @@
 
 class ValueList(object):
 
-    def __init__(self, value=None):
+    def __init__(self, value):
         self._refs = []
         self._allRefs = True
-        self._values = []
-        if value is not None:
-            self._values.append(value)
+        self._values = [ value ]
         self.assembleRefs()
         self._has_exports = False
         self._check_for_exports()
@@ -63,8 +61,8 @@
     def merge(self, options):
         output = None
         for n, value in enumerate(self._values):
-            if n is 0:
-                output = self._values[0]
+            if output is None:
+                output = value
             else:
                 output = value.merge_over(output, options)
         return output
