diff --git a/lib/xos-genx/Makefile b/lib/xos-genx/Makefile
deleted file mode 100644
index feee40e..0000000
--- a/lib/xos-genx/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-test:
-	nosetests -s -v --with-id --with-coverage --cover-html --cover-erase --cover-xml --cover-package="xosgenx"
-
diff --git a/lib/xos-genx/requirements.txt b/lib/xos-genx/requirements.txt
index b210781..924fbb6 100644
--- a/lib/xos-genx/requirements.txt
+++ b/lib/xos-genx/requirements.txt
@@ -1,8 +1,8 @@
 Jinja2~=2.10
-PyYAML~=3.12
-astunparse~=1.5.0
+PyYAML~=5.1
+astunparse~=1.6.2
 colorama~=0.4.1
-inflect~=1.0.1
+inflect~=2.1.0
 plyxproto~=4.0.0
 ply~=3.11
 six~=1.12.0
diff --git a/lib/xos-genx/xos-genx-tests/test_translator.py b/lib/xos-genx/xos-genx-tests/test_translator.py
index f98894b..ae4289a 100644
--- a/lib/xos-genx/xos-genx-tests/test_translator.py
+++ b/lib/xos-genx/xos-genx-tests/test_translator.py
@@ -125,8 +125,7 @@
         args.inputs = xproto
         args.target = "modeldefs.xtarget"
         output = XOSProcessor.process(args)
-
-        yaml_ir = yaml.load(output)
+        yaml_ir = yaml.safe_load(output)
         self.assertEqual(len(yaml_ir["items"]), 4)
 
     def test_gui_hidden_models(self):
@@ -147,7 +146,7 @@
         args.inputs = xproto
         args.target = "modeldefs.xtarget"
         output = XOSProcessor.process(args)
-        yaml_ir = yaml.load(output)
+        yaml_ir = yaml.safe_load(output)
         self.assertEqual(len(yaml_ir["items"]), 1)
         self.assertIn("Bar", output)
         self.assertNotIn("Foo", output)
@@ -165,7 +164,7 @@
         args.inputs = xproto
         args.target = "modeldefs.xtarget"
         output = XOSProcessor.process(args)
-        yaml_ir = yaml.load(output)
+        yaml_ir = yaml.safe_load(output)
         self.assertEqual(len(yaml_ir["items"]), 1)
         self.assertIn("name", output)
         self.assertNotIn("secret", output)
@@ -336,7 +335,7 @@
         args.target = "modeldefs.xtarget"
         output = XOSProcessor.process(args)
 
-        read_only = [s for s in output.splitlines() if "read_only: True" in s]
+        read_only = [s for s in output.splitlines() if "read_only: true" in s]
         self.assertEqual(len(read_only), 3)  # readonly is 1 for ParentFoo and 2 for Foo
 
 
diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/gui.py b/lib/xos-genx/xosgenx/jinja2_extensions/gui.py
index 07dbc35..a48d95a 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/gui.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/gui.py
@@ -146,7 +146,7 @@
             elif l["link_type"] == "onetomany":
                 on_field = l["dst_port"]
             outlist.append(
-                "- {model: %s, type: %s, on_field: %s}\n"
+                "{model: %s, type: %s, on_field: %s}"
                 % (l["peer"]["name"], l["link_type"], on_field)
             )
         seen.append(l["peer"])
diff --git a/lib/xos-genx/xosgenx/targets/modeldefs.xtarget b/lib/xos-genx/xosgenx/targets/modeldefs.xtarget
index ec7e5f2..94b4136 100644
--- a/lib/xos-genx/xosgenx/targets/modeldefs.xtarget
+++ b/lib/xos-genx/xosgenx/targets/modeldefs.xtarget
@@ -1,53 +1,57 @@
+---
+# Created by modeldefs.xtarget
 items:
 {%- for m in proto.messages | sort(attribute='name') %}
-{%- if m.name != 'XOSBase'  and xproto_unquote(xproto_first_non_empty([m.options.gui_hidden, 'False'])) != 'True' %}
-- app: {{ xproto_unquote(xproto_first_non_empty([m.options.name, m.options.app_label, options.name, context.app_label])) }}
-  {%- if m.options.description %}
-  description: "{{ xproto_unquote(m.options.description) }}"
-  {%- endif %}
-  {%- if m.options.verbose_name %}
-  verbose_name: "{{ xproto_unquote(m.options.verbose_name) }}"
-  {%- endif %}
-  fields:
-  {%- set id_field = {'type':'int32', 'name':'id', 'options':{}} %}
-  {% for f in (xproto_base_fields(m, proto.message_table) + m.fields + [id_field]) | sort(attribute='name') -%}
-  {% if xproto_unquote(xproto_first_non_empty([f.options.gui_hidden, 'False'])) != 'True' and (not f.link or f.options.link_type != 'manytomany') -%}
-  - hint: {% if f.options.help_text %}{{ xproto_unquote(f.options.help_text) }}{% else %}''{% endif %}
-    {% if not f.link -%}
-    name: {{ f.name }}
-    {%- else -%}
-    name: {{ f.name }}_id
-    relation: {model: {{ f.options.model }}, type: {{ f.options.link_type }}}
-    {% endif %}
-  {%- if f.options.default %}
-    default: "{{ xproto_unquote(xproto_default_to_gui(f.options.default)) }}"
-  {%- endif %}
-  {%- if f.options.choices %}
-    options:
-    {% for o in xproto_options_choices_to_dict(xproto_unquote(f.options.choices)) %}
-    - {{ xproto_dict_to_sorted_string(o) }}
-    {% endfor %}
-  {%- endif %}
-    type: {{ xproto_type_to_ui_type(f) }}
-    read_only: {{ xproto_is_true(f.options.feedback_state) }}
-    {% set validators = xproto_validators(f) -%}
-    {% if validators -%}
-    validators:
-    {% for v in validators | sort(attribute='name',reverse=True) -%}
-    - {{ v | yaml }}
-    {% endfor %}
-    {% else -%}
-    validators: []
-    {% endif %}
-  {% endif -%}
-  {% endfor %}
-  name: {{ m.name }}
-  {%- set goodlinks = xproto_links_to_modeldef_relations( xproto_base_links(m, proto.message_table) + m.links ) + xproto_links_to_modeldef_relations( xproto_base_rlinks(m, proto.message_table) + m.rlinks )%}
-  {% if goodlinks %}
-  relations:
-  {{ goodlinks | join('\n') | indent(width=2)}}
-  {%- else %}
-  relations: []
-  {%- endif %}
+{% if m.name != 'XOSBase'  and xproto_unquote(xproto_first_non_empty([m.options.gui_hidden, 'False'])) != 'True' %}
+  - name: {{ m.name }}
+    app: {{ xproto_unquote(xproto_first_non_empty([m.options.name, m.options.app_label, options.name, context.app_label])) }}
+    {%- if m.options.verbose_name %}
+    verbose_name: "{{ xproto_unquote(m.options.verbose_name) }}"
+    {%- endif %}
+    {%- if m.options.description %}
+    description: "{{ xproto_unquote(m.options.description) }}"
+    {%- endif %}
+    {%- set goodlinks = xproto_links_to_modeldef_relations( xproto_base_links(m, proto.message_table) + m.links ) + xproto_links_to_modeldef_relations( xproto_base_rlinks(m, proto.message_table) + m.rlinks )%}
+    {%- if goodlinks %}
+    relations:
+    {%- for gl in goodlinks %}
+      - {{ gl }}
+    {%- endfor %}
+    {%- else %}
+    relations: []
+    {%- endif %}
+    fields:
+      {%- set id_field = {'type':'int32', 'name':'id', 'options':{}} %}
+      {%- for f in (xproto_base_fields(m, proto.message_table) + m.fields + [id_field]) | sort(attribute='name') %}
+      {%- if xproto_unquote(xproto_first_non_empty([f.options.gui_hidden, 'False'])) != 'True' and (not f.link or f.options.link_type != 'manytomany') %}
+      {%- if not f.link %}
+      - name: {{ f.name }}
+      {%- else %}
+      - name: {{ f.name }}_id
+        relation: {model: {{ f.options.model }}, type: {{ f.options.link_type }}}
+      {%- endif %}
+        hint: {% if f.options.help_text %}"{{ xproto_unquote(f.options.help_text) }}"{% else %}""{% endif %}
+        {%- if f.options.default %}
+        default: "{{ xproto_unquote(xproto_default_to_gui(f.options.default)) }}"
+        {%- endif %}
+        {%- if f.options.choices %}
+        options:
+        {%- for o in xproto_options_choices_to_dict(xproto_unquote(f.options.choices)) %}
+          - {{ xproto_dict_to_sorted_string(o) }}
+        {%- endfor %}
+        {%- endif %}
+        type: {{ xproto_type_to_ui_type(f) }}
+        read_only: {{ xproto_is_true(f.options.feedback_state) | lower }}
+        {%- set validators = xproto_validators(f) %}
+        {%- if validators %}
+        validators:
+        {%- for v in validators | sort(attribute='name', reverse=True) %}
+          - {{ v | yaml | indent(width=12)}}
+        {%- endfor %}
+        {%- else %}
+        validators: []
+        {%- endif %}
+      {%- endif %}
+      {%- endfor %}
 {%- endif %}
-{% endfor -%}
+{%- endfor %}
