diff --git a/Makefile b/Makefile
index 41b3f2e..a6493e6 100644
--- a/Makefile
+++ b/Makefile
@@ -27,4 +27,4 @@
 	curl -H "xos-username: xosadmin@opencord.org" -H "xos-password: rk1UYDHZXbu6KVCMkhmV" -X POST --data-binary @test/tosca/test.yaml 127.0.0.1:9102/delete
 
 tosca:
-	xosgenx --target=src/tosca/xtarget/tosca.xtarget --output=src/tosca/custom_types --write-to-file=model --dest-extension=yaml ../xos/xos/core/models/core.xproto
\ No newline at end of file
+	xosgenx --target=src/tosca/xtarget/tosca.xtarget --output=src/tosca/custom_types --write-to-file=target ../xos/xos/core/models/core.xproto
\ No newline at end of file
diff --git a/docs/devel.md b/docs/devel.md
index 33c5f93..4a7f752 100644
--- a/docs/devel.md
+++ b/docs/devel.md
@@ -3,7 +3,7 @@
 To run a development environment locally, you'll need to have:
 - an XOS configuration running in the frontend vm
 - source the xos virtual env (from `xos` root: `source scripts/setup_venv.sh`)
-- install `xos-tosca` specific dependencies: `pip install -r requirements`
+- install `xos-tosca` specific dependencies: `pip install -r pip_requirements.txt`
 - an entry in the `/etc/hosts` file that point `xos-core.opencord.org` to you local environment
 
 ### Run the xos-tosca process
diff --git a/src/tosca/generator.py b/src/tosca/generator.py
index 065170c..12e2442 100644
--- a/src/tosca/generator.py
+++ b/src/tosca/generator.py
@@ -43,8 +43,7 @@
             args.output = TOSCA_DEFS_DIR
             args.inputs = str(xproto.xproto)
             args.target = os.path.join(current_dir, 'xtarget/tosca.xtarget')
-            args.write_to_file = 'model'
-            args.dest_extension = 'yaml'
+            args.write_to_file = 'target'
             XOSGenerator.generate(args)
             print "[XOS-TOSCA] Recipes generated in %s" % args.output
         except Exception as e:
diff --git a/src/tosca/xtarget/tosca.xtarget b/src/tosca/xtarget/tosca.xtarget
index d162d30..5faafee 100644
--- a/src/tosca/xtarget/tosca.xtarget
+++ b/src/tosca/xtarget/tosca.xtarget
@@ -1,7 +1,10 @@
+
+{% for m in proto.messages %}
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 node_types:
-{% for m in proto.messages %}
+
     tosca.nodes.{{ m.name }}:
         derived_from: tosca.nodes.Root
         description: {% if m.options.description -%}{{ m.options.description}}{% else%}"An XOS {{ m.name }}"{%- endif %}
@@ -13,7 +16,7 @@
                 type: boolean
                 default: false
                 description: Allow to reference existing models in TOSCA recipes
-            {% for f in m.fields %}
+            {% for f in (m.fields + xproto_base_fields(m, proto.message_table)) | sort(attribute='name') %}
             {%- if not f.link -%}
             {{ f.name }}:
                 type: {{ xproto_tosca_field_type(f.type) }}
@@ -38,4 +41,8 @@
     tosca.capabilities.xos.{{ m.name }}:
         derived_from: tosca.capabilities.Root
         description: {{ m.name }}
-{%- endfor %}
\ No newline at end of file
+
++++ {{ m.name }}.yaml
+
+{%- endfor %}
+
diff --git a/test/out/.gitignore b/test/out/.gitignore
new file mode 100644
index 0000000..c96a04f
--- /dev/null
+++ b/test/out/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
diff --git a/test/test_tosca_generator.py b/test/test_tosca_generator.py
new file mode 100644
index 0000000..4e3ecda
--- /dev/null
+++ b/test/test_tosca_generator.py
@@ -0,0 +1,85 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+import unittest
+import os
+from xosgenx.generator import XOSGenerator
+
+current_dir = os.path.dirname(os.path.realpath(__file__))
+OUTPUT_DIR = os.path.join(current_dir, 'out');
+print OUTPUT_DIR
+
+class FakeArgs:
+    pass
+
+class TOSCA_Generator_Test(unittest.TestCase):
+
+    def test_generate_basic_tosca(self):
+        """
+        [TOSCA_xtarget] Should generate a basic TOSCA recipe
+        """
+        xproto = \
+            """
+            option app_label = "core";
+
+            message XOSGuiExtension (XOSBase) {
+                 option verbose_name="XOS GUI Extension";
+                 option description="This model holds the instruction to load an extension in the GUI";
+                 required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the GUI Extensions", null = False, db_index = False];
+                 required string files = 2 [max_length = 1024, content_type = "stripped", blank = False, help_text = "List of comma separated file composing the view", null = False, db_index = False];
+            }
+            """
+        args = FakeArgs()
+        args.inputs = xproto
+        args.target = os.path.join(current_dir, '../src/tosca/xtarget/tosca.xtarget')
+        args.output = OUTPUT_DIR
+        args.write_to_file = "single"
+        args.dest_file = "basic.yaml"
+        args.quiet = False
+        output = XOSGenerator.generate(args)
+        self.assertIn("name:", output)
+        self.assertIn("files:", output)
+
+    def test_generate_inherithed_tosca(self):
+        """
+        [TOSCA_xtarget] Should generate a TOSCA recipe for a models that inherits from another model
+        """
+        xproto = \
+            """
+            option app_label = "core";
+
+            message Service (XosBase) {
+                 option verbose_name="Basic Service";
+                 required string name = 1 [max_length = 200, content_type = "stripped", blank = False, null = False, db_index = False];
+            }
+            
+            message MyService (Service) {
+                 option verbose_name="Extending service";
+                 required string prop = 1 [max_length = 200, content_type = "stripped", blank = False, null = False, db_index = False];
+            }
+            """
+        args = FakeArgs()
+        args.inputs = xproto
+        args.target = os.path.join(current_dir, '../src/tosca/xtarget/tosca.xtarget')
+        args.output = OUTPUT_DIR
+        args.write_to_file = 'target'
+        args.quiet = False
+        output = XOSGenerator.generate(args)
+        self.assertEqual(output.count("name:"), 2)
+        self.assertIn("prop:", output)
+
+if __name__ == '__main__':
+  unittest.main()
\ No newline at end of file
diff --git a/test/test_tosca_parser_e2e.py b/test/test_tosca_parser_e2e.py
index 4b6d05d..5e1f916 100644
--- a/test/test_tosca_parser_e2e.py
+++ b/test/test_tosca_parser_e2e.py
@@ -202,7 +202,6 @@
         description: Create a new site with one user
 
         imports:
-           - custom_types/user.yaml
            - custom_types/site.yaml
 
         topology_template:
