diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/base.py b/lib/xos-genx/xosgenx/jinja2_extensions/base.py
index dd19bd8..1293863 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/base.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/base.py
@@ -176,7 +176,7 @@
     else:
         return tuple([xproto_tuplify(i) for i in nested_list_or_set])
 
-def xproto_field_graph_components(fields, tag='unique_with'):
+def xproto_field_graph_components(fields, model, tag='unique_with'):
     def find_components(graph):
         pending = set(graph.keys())
         components = []
@@ -188,10 +188,10 @@
             while front:
                 node = front.pop()
                 neighbours = graph[node]
-                neighbours-=component # These we have already visited
+                neighbours -= component  # These we have already visited
                 front |= neighbours
 
-                pending-=neighbours
+                pending -= neighbours
                 component |= neighbours
             
             components.append(component)
@@ -208,15 +208,14 @@
 
             for uf in tagged_fields:
                 if uf not in field_names:
-                    raise FieldNotFound('Field %s not found'%uf)
+                    raise FieldNotFound('Field "%s" not found in model "%s", referenced from field "%s" by option "%s"' % (uf, model['name'], f['name'], tag))
 
-                field_graph.setdefault(f['name'],set()).add(uf)
-                field_graph.setdefault(uf,set()).add(f['name'])
+                field_graph.setdefault(f['name'], set()).add(uf)
+                field_graph.setdefault(uf, set()).add(f['name'])
         except KeyError:
             pass
 
-    components = find_components(field_graph)
-    return components
+    return find_components(field_graph)
 
 def xproto_api_opts(field):
     options = []
diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/tosca.py b/lib/xos-genx/xosgenx/jinja2_extensions/tosca.py
index 9e3b4a8..996d63d 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/tosca.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/tosca.py
@@ -33,11 +33,11 @@
     else:
         return type
 
-def xproto_fields_to_tosca_keys(fields):
+def xproto_fields_to_tosca_keys(fields, m):
     keys = []
 
     # look for one_of keys
-    _one_of = xproto_field_graph_components(fields, 'tosca_key_one_of')
+    _one_of = xproto_field_graph_components(fields, m, 'tosca_key_one_of')
     one_of = [list(i) for i in _one_of]
 
     # look for explicit keys
