diff --git a/data-access/servlet/src/main/java/common/output/MCutResult.java b/data-access/servlet/src/main/java/common/output/MCutResult.java
index b5dbe1eaeaf167234ef965aec7ca057ce9906305..1f2aac894a3733a7a885d0d77549142ab4a400aa 100644
--- a/data-access/servlet/src/main/java/common/output/MCutResult.java
+++ b/data-access/servlet/src/main/java/common/output/MCutResult.java
@@ -1,5 +1,6 @@
 
 import org.json.simple.JSONObject;
+import java.io.File;
 
 class MCutResult
 {
@@ -20,8 +21,24 @@ class MCutResult
          jo.put("content", content);
          return jo;
       }
+
+      void deleteFile()
+      {
+         if(contentType == ContentType.FILENAME)
+         {
+            File cutFile = new File(content);
+            cutFile.delete();
+         }
+      }
    }
 
+   public void deleteCutFiles()
+   {
+      for(Cut cut : cutResArr)
+      {
+         cut.deleteFile();
+      }
+   }
 
    public String fileName;
    public long fileSize;
diff --git a/data-access/servlet/src/main/java/mcutout/webapi/UWSMCutoutWork.java b/data-access/servlet/src/main/java/mcutout/webapi/UWSMCutoutWork.java
index df5e0e167d3892297754802c560f6b974239f0ac..4cd11f3b1f87a29a126c22e737a5c184b5a348d8 100644
--- a/data-access/servlet/src/main/java/mcutout/webapi/UWSMCutoutWork.java
+++ b/data-access/servlet/src/main/java/mcutout/webapi/UWSMCutoutWork.java
@@ -1,4 +1,5 @@
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.PrintWriter;
 import java.io.OutputStream;
 import java.io.BufferedOutputStream;
@@ -35,7 +36,6 @@ import org.json.simple.parser.ParseException;
 
 public class UWSMCutoutWork extends JobThread
 {
-   final String RESPONSE_ENCODING = "utf-8";
 
    private Settings     settings  = UWSMCutout.settings;
    private Subsurvey[] subsurveys = UWSMCutout.subsurveys;
@@ -67,29 +67,31 @@ public class UWSMCutoutWork extends JobThread
          /* UWS -> SODA (JDL in POST body is part of SODA REC) */
 
          UploadFile jsonFile = (UploadFile)job.getAdditionalParameterValue("mcutout");
-         final String contentType = "text/xml"; // FIXME should be input param ? RESPONSEFORMAT ?
 
-         Result result = createResult("Report");
-         result.setMimeType("text/xml");
-         OutputStream respOutputStream = getResultOutput(result);
-
-         if(contentType.equals("text/xml") || contentType.equals("application/xml"))
+         InputStreamReader isr = new InputStreamReader(jsonFile.open());
+         BufferedReader input = new BufferedReader(isr);
+         StringBuffer jsonStringBuffer = new StringBuffer();
+         String line;
+         while((line = input.readLine()) != null)
          {
-            InputStreamReader isr = new InputStreamReader(jsonFile.open());
-            BufferedReader input = new BufferedReader(isr);
-            StringBuffer jsonStringBuffer = new StringBuffer();
-            String line;
-            while((line = input.readLine()) != null)
-            {
-               jsonStringBuffer.append(line);
-            }
-            String reqJsonString = jsonStringBuffer.toString();
+            jsonStringBuffer.append(line);
+         }
+         String reqJsonString = jsonStringBuffer.toString();
+
+         /* SODA -> Implementation */
 
-            /* SODA -> Implementation */
+         MCutResult mresult = vlkb.doMCutout(reqJsonString);
 
-            MCutResult mresult = vlkb.doMCutout(reqJsonString);
+         /* Implement -> SODA */
 
-            /* Implement -> SODA */
+         final String contentType = "application/gzip";// FIXME force stream output
+
+         if(contentType.equals("text/xml") || contentType.equals("application/xml"))
+         {
+            Result result = createResult("Report");
+            result.setMimeType("text/xml");
+            OutputStream respOutputStream = getResultOutput(result);
+            final String RESPONSE_ENCODING = "utf-8";
 
             PrintWriter writer = new PrintWriter(new OutputStreamWriter(respOutputStream, RESPONSE_ENCODING));
 
@@ -105,6 +107,25 @@ public class UWSMCutoutWork extends JobThread
             writer.close();
 
             /* SODA -> UWS */
+
+            publishResult(result);
+         }
+         else if(contentType.equals("application/gzip") || contentType.equals("application/x-tar+gzip"))
+         {
+            Result result = createResult("mcutout.tar.gz");
+            result.setMimeType("application/gzip");
+            OutputStream respOutputStream = getResultOutput(result);
+
+            String absCutPathname = mresult.fileName;
+            File downloadFile = new File(absCutPathname);
+            FileInputStream fileInput = new FileInputStream(downloadFile);
+
+            fileInput.transferTo(respOutputStream);
+
+            downloadFile.delete();
+            mresult.deleteCutFiles();
+
+            publishResult(result);
          }
          else
          {
@@ -112,8 +133,6 @@ public class UWSMCutoutWork extends JobThread
          }
 
          /* FIXME here was uws-check is-job-Interrupted */
-
-         publishResult(result);
       }
       catch(IOException ex)
       {