diff --git a/Dockerfile b/Dockerfile
index e4f2354..cb2110d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,7 @@
 # docker build -t xosproject/xos-tosca:candidate .
 
 # xosproject/xos-tosca
-FROM xosproject/xos-client:2.1.18
+FROM xosproject/xos-client:2.1.19
 
 # Set environment variables
 ENV CODE_SOURCE .
diff --git a/VERSION b/VERSION
index 781dcb0..65087b4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.1.3
+1.1.4
diff --git a/src/tosca/parser.py b/src/tosca/parser.py
index fe8382b..3f44c50 100644
--- a/src/tosca/parser.py
+++ b/src/tosca/parser.py
@@ -14,6 +14,8 @@
 # limitations under the License.
 
 
+import os
+from tempfile import NamedTemporaryFile
 from xosconfig import Config
 from multistructlog import create_logger
 log = create_logger(Config().get('logging'))
@@ -127,11 +129,6 @@
         else:
             return msg
 
-    def save_recipe_to_tmp_file(self, recipe):
-        tmp_file = open(self.recipe_file, 'w')
-        tmp_file.write(recipe)
-        tmp_file.close()
-
     @staticmethod
     def get_tosca_models_by_name(template):
         models_by_name = {}
@@ -183,7 +180,6 @@
         self.saved_model_by_name = {}
 
         self.ordered_models_template = []
-        self.recipe_file = TOSCA_RECIPES_DIR + '/tmp.yaml'
 
         self.recipe = recipe
 
@@ -191,9 +187,17 @@
 
         try:
             # [] save the recipe to a tmp file
-            self.save_recipe_to_tmp_file(self.recipe)
-            # [] parse the recipe with TOSCA Parse
-            self.template = ToscaTemplate(self.recipe_file)
+            with NamedTemporaryFile(delete=False, suffix=".yaml", dir=TOSCA_RECIPES_DIR) as recipe_file:
+                try:
+                    recipe_file.write(self.recipe)
+                    recipe_file.close()
+
+                    # [] parse the recipe with TOSCA Parse
+                    self.template = ToscaTemplate(recipe_file.name)
+                finally:
+                    # [] Make sure the temporary file is cleaned up
+                    os.remove(recipe_file.name)
+
             # [] get all models in the recipe
             self.templates_by_model_name = self.get_tosca_models_by_name(self.template)
             # [] compute requirements
diff --git a/test/test_tosca_parser.py b/test/test_tosca_parser.py
index b16817a..9641380 100644
--- a/test/test_tosca_parser.py
+++ b/test/test_tosca_parser.py
@@ -219,20 +219,3 @@
 InvalidTypeError: with some message
 TypeMismatchError: with some message
 """)
-
-    def test_save_recipe_to_tmp_file(self):
-        """
-        [TOSCA_Parser] save_recipe_to_tmp_file: should save a TOSCA recipe to a tmp file
-        """
-        parser = TOSCA_Parser('', 'user', 'pass')
-        parser.recipe_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'test_tmp.yaml')
-
-        parser.save_recipe_to_tmp_file('my tosca')
-
-        self.assertTrue(os.path.exists(parser.recipe_file))
-
-        content = open(parser.recipe_file).read()
-
-        self.assertEqual(content, 'my tosca')
-
-        os.remove(parser.recipe_file)
\ No newline at end of file
