ensure exports are correctly calculated during an inventory calculation
diff --git a/reclass/core.py b/reclass/core.py
index b3620b6..afdcf40 100644
--- a/reclass/core.py
+++ b/reclass/core.py
@@ -150,6 +150,9 @@
         new_yaml = yaml.dump(new.as_dict(), default_flow_style=True, Dumper=ExplicitDumper)
         if old_yaml != new_yaml:
             self._storage.put_exports(new)
+            return True
+        else:
+            return False
 
     def nodeinfo(self, nodename):
         original_exports = Parameters(self._storage.get_exports())
@@ -161,12 +164,19 @@
 
     def inventory(self):
         original_exports = Parameters(self._storage.get_exports())
-        exports = copy.deepcopy(original_exports)
         original_exports.render_simple()
+        exports = Parameters()
         entities = {}
         for n in self._storage.enumerate_nodes():
             entities[n] = self._nodeinfo(n, exports)
-        self._update_exports(original_exports, exports)
+        changed = self._update_exports(original_exports, exports)
+        if changed:
+            # use brute force: if the exports have changed rerun
+            # the inventory cacluation
+            #exports = Parameters(exports.as_dict())
+            entities = {}
+            for n in self._storage.enumerate_nodes():
+                entities[n] = self._nodeinfo(n, exports)
 
         nodes = {}
         applications = {}
diff --git a/reclass/datatypes/parameters.py b/reclass/datatypes/parameters.py
index 0ec29e6..c0b6e59 100644
--- a/reclass/datatypes/parameters.py
+++ b/reclass/datatypes/parameters.py
@@ -96,11 +96,12 @@
         if cur is None:
             return new
 
-        values = cur
         if isinstance(cur, (dict, list)):
             values = ValueList(Value(cur))
         elif isinstance(cur, Value):
             values = ValueList(cur)
+        else:
+            values = ValueList(Value(cur))
 
         if isinstance(new, (dict, list)):
            new = Value(new)