diff --git a/reclass_tools/reclass_models.py b/reclass_tools/reclass_models.py
index 3a4af38..a851169 100644
--- a/reclass_tools/reclass_models.py
+++ b/reclass_tools/reclass_models.py
@@ -19,8 +19,10 @@
 from reclass import config as reclass_config
 from reclass import core as reclass_core
 from reclass import defaults as reclass_defaults
+from reclass.datatypes import parameters as reclass_parameters
 from reclass.utils.refvalue import RefValue
 import yaml
+import mock
 
 from reclass_tools import helpers
 # import salt.cli.call
@@ -57,7 +59,17 @@
 
         super(ReclassCore, self).__init__(storage, class_mappings, input_data)
 
+
     def _recurse_entity(self, entity, merge_base=None, seen=None, nodename=None):
+
+        def _new_merge_dict(self, cur, new, path):
+            try:
+                return orig_merge_dict(self, cur, new, path)
+            except TypeError as e:
+                if "Current value:" not in e.message:
+                    e.message +="\nValue path: {}\nCurrent value: {}\nNew value: {}\n".format(path, cur, new)
+                raise TypeError(e.message)
+
         if seen is None:
             seen = {}
         if '__visited' not in seen:
@@ -66,10 +78,12 @@
         orig_visited = copy.deepcopy(seen['__visited'])
         seen['__visited'].append(entity.name)
 
-        result =  super(ReclassCore, self)._recurse_entity(entity,
-                                                           merge_base,
-                                                           seen,
-                                                           nodename)
+        orig_merge_dict = reclass_parameters.Parameters._merge_dict
+        with mock.patch.object(reclass_parameters.Parameters, '_merge_dict', new=_new_merge_dict):
+            result =  super(ReclassCore, self)._recurse_entity(entity,
+                                                               merge_base,
+                                                               seen,
+                                                               nodename)
         if self.track_key_path:
             key = helpers.get_nested_key(entity.parameters.as_dict(),
                                          path=self.track_key_path)
diff --git a/requirements.txt b/requirements.txt
index 6345082..1f5c522 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,3 +3,4 @@
 six>=1.9.0
 cookiecutter
 jinja2==2.8.1
+mock>=1.2
\ No newline at end of file
