diff --git a/src/grpc_client/models_accessor.py b/src/grpc_client/models_accessor.py
index 29c2f11..188a9ce 100644
--- a/src/grpc_client/models_accessor.py
+++ b/src/grpc_client/models_accessor.py
@@ -11,14 +11,13 @@
         Give a Model Class Name and some data, check if that exits or instantiate a new one
         """
 
-
         if data.get('name'):
             used_key = 'name'
         else:
             used_key = data.keys()[0]
 
         if class_name not in RESOURCES:
-            raise Exception('[XOS-TOSCA] The model your tring to create (%s: %s, class: %s) is not know by xos-core' % (used_key, data[used_key], class_name))
+            raise Exception('[XOS-TOSCA] The model you are trying to create (%s: %s, class: %s) is not know by xos-core' % (used_key, data[used_key], class_name))
 
         cls = RESOURCES[class_name]
         models = cls.objects.filter(**{used_key: data[used_key]})
@@ -27,6 +26,10 @@
             print "[XOS-Tosca] Model %s already exist, retrieving instance..." % data[used_key]
             model = models[0]
         elif len(models) == 0:
+
+            if 'must-exist' in data and data['must-exist']:
+                raise Exception("[XOS-TOSCA] Model %s:%s has property 'must-exist' but cannot be found" % (class_name, data[used_key]))
+
             model = cls.objects.new()
             print "[XOS-Tosca] Model %s is new, creating new instance..." % data[used_key]
         else:
diff --git a/src/tosca/parser.py b/src/tosca/parser.py
index 029b6ed..7c4f429 100644
--- a/src/tosca/parser.py
+++ b/src/tosca/parser.py
@@ -1,4 +1,4 @@
-from toscaparser.tosca_template import ToscaTemplate
+from toscaparser.tosca_template import ToscaTemplate, ValidationError
 from default import TOSCA_RECIPES_DIR
 from grpc_client.resources import RESOURCES
 from grpc_client.models_accessor import GRPCModelsAccessor
@@ -89,6 +89,8 @@
         for line in msg.splitlines():
             if line.strip().startswith('MissingRequiredFieldError'):
                 readable.append(line)
+            if line.strip().startswith('UnknownFieldError'):
+                readable.append(line)
 
         if len(readable) > 0:
             return '/n'.join(readable)
@@ -162,7 +164,7 @@
                 if class_name not in RESOURCES:
                     raise Exception("Nodetemplate %s's type %s is not a known resource" % (recipe.name, class_name))
                 model = GRPCModelsAccessor.get_model_from_classname(class_name, data)
-                # [] populate model with data[[
+                # [] populate model with data
                 model = self.populate_model(model, data)
                 # [] check if the model has requirements
                 # [] if it has populate them
@@ -172,12 +174,11 @@
 
                 self.saved_model_by_name[recipe.name] = model
 
-        except Exception as e:
-            print e
+        except ValidationError as e:
             if e.message:
-                exception_msg = e.message
+                exception_msg = TOSCA_Parser._translate_exception(e.message)
             else:
-                exception_msg = str(e)
+                exception_msg = TOSCA_Parser._translate_exception(str(e))
             raise Exception(exception_msg)
 
 
diff --git a/src/tosca/xtarget/tosca.xtarget b/src/tosca/xtarget/tosca.xtarget
index 313874b..2cdec9c 100644
--- a/src/tosca/xtarget/tosca.xtarget
+++ b/src/tosca/xtarget/tosca.xtarget
@@ -9,22 +9,10 @@
             {{ m.name|lower }}:
                 type: tosca.capabilities.xos.{{ m.name }}
         properties:
-            no-delete:
+            must-exist:
                 type: boolean
                 default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
+                description: Allow to reference existing models in TOSCA recipes
             {% for f in m.fields %}
             {%- if not f.link -%}
             {{ f.name }}:
