minor logic tidy up
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