diff --git a/main.py b/main.py
index 1124821818bb079f03199b9b761d6d4a3c3cd1c6..05910139c66aa6d29748ae3d3ed949088e3b39ac 100755
--- a/main.py
+++ b/main.py
@@ -3,22 +3,63 @@
 import toscaparser
 import sys
 import os
-import toscaparser.yaml
+#import toscaparser.tosca_template
+import toscaparser.utils.yamlparser as yaml
 
 print "Opening file " + sys.argv[1]
 #res = toscaparser.validate(sys.argv[1])
 #templ = toscaparser.tosca_template.ToscaTemplate(os.path.join(
 #            os.path.dirname(os.path.abspath(__file__)),
-#            'data',
+#           'data',
 #            sys.argv[1]))
 
+TEMPLATES = {}
 
-yaml_data = open(sys.argv[1]).read()
+def load_template(fn, templs, key):
+	yaml_data = open(fn).read()
+	templs[key] = yaml.simple_ordered_parse(yaml_data)
 
-templ = yaml.simple_ordered_parse(yaml_data)
+tosca_types = [ 
+	'data_types', 
+	'artifact_types', 
+	'capability_types',
+	'requirements_types',
+	'relationship_types',
+	'interface_types',
+	'node_types',
+	'group_types',
+	'policy_types'
+]
 
-def get_datatypes(t):
-	return t['data_types']
+ids = [ 6, 2, 1]
 
-for datatype in get_datatypes(templ):
-	print i
\ No newline at end of file
+def print_lvl(n, txt):
+	index = ".".join(map(str,ids[:(n+1)]))
+	print index +  " " + ('-'*(n+1)) + ' ' + txt
+
+def print_all_types(templ, lvl):
+	for tt in tosca_types:
+        	if not tt in templ:
+			continue
+		print_lvl(lvl, tt)
+		for dt in templ[tt]:
+			print_lvl(lvl + 1, dt)
+			ids[lvl+1] = ids[lvl+1] + 1
+		ids[lvl+1] = 1
+		ids[lvl] = ids[lvl] + 1
+		print
+	ids[lvl] = 2
+
+FOLDR = sys.argv[1]
+
+fns = {
+	'VNFD' : 'etsi_nfv_sol001_vnfd_2_5_1_types.yaml',
+	'NSD'  : 'etsi_nfv_sol001_nsd_2_5_1_types.yaml',
+        'PNFD' : 'etsi_nfv_sol001_pnfd_2_5_1_types.yaml'
+}
+
+for fn in ['VNFD', 'NSD', 'PNFD']:
+	load_template(FOLDR + '/' + fns[fn], TEMPLATES, fn)
+	print_lvl(0, fn)
+	print_all_types(TEMPLATES[fn], 1)
+	ids[0] = ids[0] + 1