skip already rendered refs in dicts
diff --git a/reclass/datatypes/exports.py b/reclass/datatypes/exports.py
index 33095ae..0d33312 100644
--- a/reclass/datatypes/exports.py
+++ b/reclass/datatypes/exports.py
@@ -5,6 +5,8 @@
 #
 from parameters import Parameters
 from reclass.errors import UndefinedVariableError
+from reclass.values.value import Value
+from reclass.values.valuelist import ValueList
 
 class Exports(Parameters):
 
@@ -29,10 +31,16 @@
         while len(self._unrendered) > 0:
             path, v = self._unrendered.iteritems().next()
             value = path.get_value(self._base)
-            external._interpolate_references(path, value, None)
-            new = self._interpolate_render_from_external(external._base, path, value)
-            path.set_value(self._base, new)
-            del self._unrendered[path]
+            if not isinstance(value, (Value, ValueList)):
+                # references to lists and dicts are only deepcopied when merged
+                # together so it's possible a value with references in a referenced
+                # list or dict has already been rendered
+                del self._unrendered[path]
+            else:
+                external._interpolate_references(path, value, None)
+                new = self._interpolate_render_from_external(external._base, path, value)
+                path.set_value(self._base, new)
+                del self._unrendered[path]
 
     def _interpolate_render_from_external(self, context, path, value):
         try: