code tidy up
diff --git a/reclass/datatypes/parameters.py b/reclass/datatypes/parameters.py
index fd3e572..576afb0 100644
--- a/reclass/datatypes/parameters.py
+++ b/reclass/datatypes/parameters.py
@@ -100,17 +100,10 @@
             return new
 
         values = cur
-        if isinstance(cur, dict):
-            value = Value(cur)
-            values = Values()
-            values.append(value)
-        elif isinstance(cur, list):
-            value = Value(cur)
-            values = Values()
-            values.append(value)
+        if isinstance(cur, (dict, list)):
+            values = Values(Value(cur))
         elif isinstance(cur, Value):
-            values = Values()
-            values.append(cur)
+            values = Values(cur)
 
         if isinstance(new, (dict, list)):
            new = Value(new)
@@ -306,9 +299,8 @@
                     value_inner = path_from_ref.get_value(self._base)
                     self._interpolate_inner(path_from_ref, value_inner, options)
 
-        # all references deferenced and on more references to work out
-        # so render value
         if value.allRefs():
+            # all references have been deferenced so render value
             try:
                 new = value.render(self._base, options)
                 if isinstance(new, dict):
@@ -320,7 +312,7 @@
                 else:
                     path.set_value(self._base, new)
 
-                # finally, remove the reference from the occurrences cache
+                # remove the reference from the unrendered list
                 del self._unrendered[path]
             except UndefinedVariableError as e:
                 raise UndefinedVariableError(e.var, path)
diff --git a/reclass/utils/dictitem.py b/reclass/utils/dictitem.py
index 726e3ef..8185d23 100644
--- a/reclass/utils/dictitem.py
+++ b/reclass/utils/dictitem.py
@@ -50,7 +50,7 @@
                 raise TypeError('allow dict over scalar = False: cannot merge %s onto %s' % (repr(self), repr(item)))
         raise TypeError('Cannot merge %s over %s' % (repr(self), repr(item)))
 
-    def render(self, context, options):
+    def render(self, context):
         value = {}
         for key, item in self._items.iteritems():
             value[key] = item
diff --git a/reclass/utils/listitem.py b/reclass/utils/listitem.py
index ec87294..f79212e 100644
--- a/reclass/utils/listitem.py
+++ b/reclass/utils/listitem.py
@@ -36,7 +36,7 @@
     def get_references(self):
         return self._refs
 
-    def render(self, context, options):
+    def render(self, context):
         value = []
         for item in self._items:
             value.append(item)
diff --git a/reclass/utils/refitem.py b/reclass/utils/refitem.py
index e25d04f..e606e98 100644
--- a/reclass/utils/refitem.py
+++ b/reclass/utils/refitem.py
@@ -6,12 +6,11 @@
 
 from reclass.utils.mergeoptions import MergeOptions
 from reclass.utils.dictpath import DictPath
-from reclass.defaults import PARAMETER_INTERPOLATION_DELIMITER
 from reclass.errors import UndefinedVariableError
 
 class RefItem(object):
 
-    def __init__(self, items, delimiter=PARAMETER_INTERPOLATION_DELIMITER):
+    def __init__(self, items, delimiter):
         self._delimiter = delimiter
         self._items = items
         self._refs = []
@@ -22,13 +21,12 @@
         self._refs = []
         self._allRefs = True
         value = ''
-        options = MergeOptions()
         for item in self._items:
             if item.has_references():
                 item.assembleRefs(context)
                 self._refs.extend(item.get_references())
             try:
-                value += item.render(context, options)
+                value += item.render(context)
             except UndefinedVariableError as e:
                 self._allRefs = False
         if self._allRefs:
@@ -53,14 +51,14 @@
         except KeyError as e:
             raise UndefinedVariableError(ref)
 
-    def render(self, context, options):
+    def render(self, context):
         # Preserve type if only one item
         if len(self._items) == 1:
-            return self._resolve(self._items[0].render(context, options), context)
+            return self._resolve(self._items[0].render(context), context)
         # Multiple items
         string = ''
         for item in self._items:
-            string += str(item.render(context, options))
+            string += str(item.render(context))
         return self._resolve(string, context)
 
     def __repr__(self):
diff --git a/reclass/utils/scaitem.py b/reclass/utils/scaitem.py
index 76a2e61..05fc9a2 100644
--- a/reclass/utils/scaitem.py
+++ b/reclass/utils/scaitem.py
@@ -42,7 +42,7 @@
                 raise TypeError('allow scalar over dict = False: cannot merge %s over %s' % (repr(self), repr(item)))
         raise TypeError('Cannot merge %s over %s' % (repr(self), repr(item)))
 
-    def render(self, context, options):
+    def render(self, context):
         return self._value
 
     def __repr__(self):
diff --git a/reclass/utils/values.py b/reclass/utils/values.py
index fba09e1..918f75d 100644
--- a/reclass/utils/values.py
+++ b/reclass/utils/values.py
@@ -8,10 +8,12 @@
 
 class Values(object):
 
-    def __init__(self):
+    def __init__(self, value=None):
         self._refs = []
         self._allRefs = True
         self._values = []
+        if value is not None:
+            self._values.append(value)
         self.assembleRefs()
 
     def append(self, value):
@@ -56,8 +58,6 @@
 
     def render(self, context, options=None):
         from reclass.datatypes.parameters import Parameters
-        from reclass.utils.dictitem import DictItem
-        from reclass.utils.scaitem import ScaItem
 
         if options is None:
             options = MergeOptions()
@@ -74,7 +74,8 @@
                     output = p1.as_dict()
                     continue
                 elif isinstance(output, list) and isinstance(new, list):
-                    raise TypeError('Cannot merge %s over %s' % (repr(self._values[n]), repr(self._values[n-1])))
+                    output.extend(new)
+                    continue
                 elif isinstance(output, (dict, list)) or isinstance(new, (dict, list)):
                     raise TypeError('Cannot merge %s over %s' % (repr(self._values[n]), repr(self._values[n-1])))
                 else: