diff --git a/src/grpc_client/models_accessor.py b/src/grpc_client/models_accessor.py
index 82934e5..927eb05 100644
--- a/src/grpc_client/models_accessor.py
+++ b/src/grpc_client/models_accessor.py
@@ -14,6 +14,7 @@
         if data.get('name'):
             used_key = 'name'
         else:
+            # FIXME apparently we're not matching model without a name field
             used_key = data.keys()[0]
 
         key = "%s~%s" % (username, password)
diff --git a/src/tosca/parser.py b/src/tosca/parser.py
index 725d259..d98cdf6 100644
--- a/src/tosca/parser.py
+++ b/src/tosca/parser.py
@@ -127,7 +127,11 @@
             setattr(model, "%s_id" % class_name, related_model.id)
         return model
 
-    def __init__(self, recipe, username, password):
+    def __init__(self, recipe, username, password, **kwargs):
+
+        self.delete = False
+        if 'delete' in kwargs:
+            self.delete = True
 
         # store username/password combination to read resources
         self.username = username
@@ -148,6 +152,7 @@
         self.recipe = recipe
 
     def execute(self):
+
         try:
             # [] save the recipe to a tmp file
             self.save_recipe_to_tmp_file(self.recipe)
@@ -173,8 +178,11 @@
                 # [] check if the model has requirements
                 # [] if it has populate them
                 model = self.populate_dependencies(model, recipe.requirements, self.saved_model_by_name)
-                # [] save or update
-                model.save()
+                # [] save, update or delete
+                if self.delete and not model.is_new:
+                    model.delete()
+                elif not self.delete:
+                    model.save()
 
                 self.saved_model_by_name[recipe.name] = model
 
diff --git a/src/web_server/main.py b/src/web_server/main.py
index 266d651..efeae13 100644
--- a/src/web_server/main.py
+++ b/src/web_server/main.py
@@ -39,8 +39,14 @@
             response[name] = "/custom_type/%s" % name
         return json.dumps(response)
 
+    @app.route("/custom_type/<name>")
+    def custom_type(self, request, name):
+        request.responseHeaders.addRawHeader(b"content-type", b"text/plain")
+        custom_type = open(TOSCA_DEFS_DIR + '/' + name + '.yaml').read()
+        return custom_type
+
     @app.route('/run', methods=['POST'])
-    def execute(self, request):
+    def run(self, request):
         recipe = request.content.read()
         headers = request.getAllHeaders()
         username = headers['xos-username']
@@ -51,11 +57,17 @@
         d.addCallback(self.execute_tosca)
         return d
 
-    @app.route("/custom_type/<name>")
-    def custom_type(self, request, name):
-        request.responseHeaders.addRawHeader(b"content-type", b"text/plain")
-        custom_type = open(TOSCA_DEFS_DIR + '/' + name + '.yaml').read()
-        return custom_type
+    @app.route('/delete', methods=['POST'])
+    def delete(self, request):
+        recipe = request.content.read()
+        headers = request.getAllHeaders()
+        username = headers['xos-username']
+        password = headers['xos-password']
+
+        d = GRPC_Client().create_secure_client(username, password, recipe)
+        self.parser = TOSCA_Parser(recipe, username, password, delete=True)
+        d.addCallback(self.execute_tosca)
+        return d
 
     def __init__(self):
         self.app.run('0.0.0.0', '9102')
\ No newline at end of file
