diff --git a/src/grpc_client/main.py b/src/grpc_client/main.py
index 3633797..619b43b 100644
--- a/src/grpc_client/main.py
+++ b/src/grpc_client/main.py
@@ -35,13 +35,13 @@
         self.grpc_secure_endpoint = secure + ":50051"
         self.grpc_insecure_endpoint = insecure + ":50055"
 
-    def setup_resources(self, client, key, deferred, recipe):
+    def setup_resources(self, client, key, deferred, arg):
         log.info("[XOS-TOSCA] Loading resources for authenticated user")
         if key not in RESOURCES:
             RESOURCES[key] = {}
         for k in client.xos_orm.all_model_names:
             RESOURCES[key][k] = getattr(client.xos_orm, k)
-        reactor.callLater(0, deferred.callback, recipe)
+        reactor.callLater(0, deferred.callback, arg)
 
     def start(self):
         log.info("[XOS-TOSCA] Connecting to xos-core")
@@ -60,14 +60,14 @@
 
         return deferred
 
-    def create_secure_client(self, username, password, recipe):
+    def create_secure_client(self, username, password, arg):
         """
         This method will check if this combination of username/password already has stored orm classes in RESOURCES, otherwise create them
         """
         deferred = defer.Deferred()
         key = "%s~%s" % (username, password)
         if key in RESOURCES:
-            reactor.callLater(0, deferred.callback, recipe)
+            reactor.callLater(0, deferred.callback, arg)
         else:
             local_cert = Config.get('local_cert')
             client = SecureClient(endpoint=self.grpc_secure_endpoint, username=username, password=password, cacert=local_cert)
@@ -75,6 +75,6 @@
             # SecureClient is preceeded by an insecure client, so treat all secure clients as previously connected
             # See CORD-3152
             client.was_connected = True
-            client.set_reconnect_callback(functools.partial(self.setup_resources, client, key, deferred, recipe))
+            client.set_reconnect_callback(functools.partial(self.setup_resources, client, key, deferred, arg))
             client.start()
         return deferred
diff --git a/src/web_server/main.py b/src/web_server/main.py
index 9a6c9b3..271b1b2 100644
--- a/src/web_server/main.py
+++ b/src/web_server/main.py
@@ -39,12 +39,12 @@
 
     app = Klein()
 
-    def execute_tosca(self, recipe):
-        self.parser.execute()
-        if self.parser.delete:
-            response_text = "Deleted models: %s" % str(self.parser.ordered_models_name)
+    def execute_tosca(self, parser):
+        parser.execute()
+        if parser.delete:
+            response_text = "Deleted models: %s" % str(parser.ordered_models_name)
         else:
-            response_text = "Created models: %s" % str(self.parser.ordered_models_name)
+            response_text = "Created models: %s" % str(parser.ordered_models_name)
         return response_text
 
     def errorCallback(self, failure, request):
@@ -83,8 +83,8 @@
         username = headers['xos-username']
         password = headers['xos-password']
 
-        d = GRPC_Client().create_secure_client(username, password, recipe)
-        self.parser = TOSCA_Parser(recipe, username, password)
+        parser = TOSCA_Parser(recipe, username, password)
+        d = GRPC_Client().create_secure_client(username, password, parser)
         tosca_execution = d.addCallback(self.execute_tosca)
         tosca_execution.addErrback(self.errorCallback, request)
         return d
@@ -96,8 +96,8 @@
         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)
+        parser = TOSCA_Parser(recipe, username, password, delete=True)
+        d = GRPC_Client().create_secure_client(username, password, parser)
         tosca_execution = d.addCallback(self.execute_tosca)
         tosca_execution.addErrback(self.errorCallback, request)
         return d
