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 5288da237b716068d2af188b2175f5fd46e298af..b65a669a745ef90866b28b98db750a8375876c32 100644
--- a/data-access/servlet/src/main/java/common/output/MCutResult.java
+++ b/data-access/servlet/src/main/java/common/output/MCutResult.java
@@ -1,12 +1,20 @@
 
 
-
 class MCutResult
 {
-   public enum ContentType {FILENAME, BAD_REQUEST, SERVICE_ERROR};
-   public Inputs inputs;
-   public int index;
-   public ContentType contentType;
-   public String content;
+
+   class Cut
+   {
+      public enum ContentType {FILENAME, BAD_REQUEST, SERVICE_ERROR};
+      public Inputs inputs;
+      public int index;
+      public ContentType contentType;
+      public String content;
+   }
+
+
+   public String fileName;
+   public long fileSize;
+   Cut[] cutResArr;
 }
 
diff --git a/data-access/servlet/src/main/java/cutout/Datasets.java b/data-access/servlet/src/main/java/cutout/Datasets.java
index c07bdb955e452ce4e20c042e33bafc31ea23df58..684ba2056fa2e8583b1ba5f213bd095f97761f5c 100644
--- a/data-access/servlet/src/main/java/cutout/Datasets.java
+++ b/data-access/servlet/src/main/java/cutout/Datasets.java
@@ -16,7 +16,7 @@ public interface Datasets
       throws FileNotFoundException, IOException;
 
 
-   public DataLink doMCutout(String jdlJson)
+   public MCutResult doMCutout(String jdlJson)
       throws IOException;
 
 }
diff --git a/data-access/servlet/src/main/java/cutout/DatasetsImpl.java b/data-access/servlet/src/main/java/cutout/DatasetsImpl.java
index 7a5490643cedacce7455dbef1bfab9713bc2568f..b64e361fce77a38d08c61a150dddbaefb3139b66 100644
--- a/data-access/servlet/src/main/java/cutout/DatasetsImpl.java
+++ b/data-access/servlet/src/main/java/cutout/DatasetsImpl.java
@@ -67,7 +67,7 @@ class DatasetsImpl implements Datasets
 
 
 
-   public DataLink doMCutout(String jdlJson)
+   public MCutResult doMCutout(String jdlJson)
          throws IOException
       {
          LOGGER.info("trace");
diff --git a/data-access/servlet/src/main/java/cutout/json/JdlMCutout.java b/data-access/servlet/src/main/java/cutout/json/JdlMCutout.java
index c076dd1e4b08c55d9a77835566cd8930038817b7..5791ca4ab181a3129b116d63399a1c721bf700ea 100644
--- a/data-access/servlet/src/main/java/cutout/json/JdlMCutout.java
+++ b/data-access/servlet/src/main/java/cutout/json/JdlMCutout.java
@@ -101,11 +101,11 @@ public class JdlMCutout
 
 
 
-   public static DataLink responseFromMCutoutJson(String response)
+   public static MCutResult responseFromMCutoutJson(String response)
       // throws ParseException
    {   
-      DataLink dlk = new DataLink();
 
+      MCutResult cuts = new MCutResult();
       try {
          JSONParser parser = new JSONParser();
          Object jsonObj = parser.parse(response);
@@ -132,7 +132,7 @@ public class JdlMCutout
 
             JSONArray jsonArray = (JSONArray)jsonObject.get("responses");
 
-            MCutResult[] mcutResArr = new MCutResult[jsonArray.size()];
+            MCutResult.Cut[] cutResArr = new MCutResult.Cut[jsonArray.size()];
 
             int i = 0;
             @SuppressWarnings("unchecked")
@@ -141,29 +141,29 @@ public class JdlMCutout
             {
                JSONObject jObj = itr.next();
 
-               mcutResArr[i].inputs  = (Inputs)jObj.get("input");
+               cutResArr[i].inputs  = (Inputs)jObj.get("input");
                String ctype = (String)jObj.get("type");
                if(ctype.equals("FILENAME"))
-                  mcutResArr[i].contentType = MCutResult.ContentType.FILENAME;
+                  cutResArr[i].contentType = MCutResult.Cut.ContentType.FILENAME;
                else if(ctype.equals("BAD_REQUEST"))
-                  mcutResArr[i].contentType = MCutResult.ContentType.BAD_REQUEST;
+                  cutResArr[i].contentType = MCutResult.Cut.ContentType.BAD_REQUEST;
                else if(ctype.equals("SERVICE_ERROR"))
-                  mcutResArr[i].contentType = MCutResult.ContentType.SERVICE_ERROR;
-               mcutResArr[i].content = (String)jObj.get("content");
+                  cutResArr[i].contentType = MCutResult.Cut.ContentType.SERVICE_ERROR;
+               cutResArr[i].content = (String)jObj.get("content");
                i++;
             }
 
-            dlk.contentLength = fileSize;
-            dlk.accessUrl     = fileName;
-            dlk.mcutResultArr = mcutResArr;
+            cuts.fileSize = fileSize;
+            cuts.fileName = fileName;
+            cuts.cutResArr = cutResArr;
          }
-      }   
+      }
       catch  (ParseException e)
-      {   
+      {
          e.printStackTrace();
          throw new IllegalStateException("Internal system error.");
-      }   
-      return dlk;
+      }
+      return cuts;
    }
 
 
diff --git a/data-access/servlet/src/main/java/cutout/json/JsonDecoder.java b/data-access/servlet/src/main/java/cutout/json/JsonDecoder.java
index a3b9ffc3abf19e876d5e2e8a7e0b8518568da393..3ac4b2b37a8d2e96ceb424aa8e311705762bec98 100644
--- a/data-access/servlet/src/main/java/cutout/json/JsonDecoder.java
+++ b/data-access/servlet/src/main/java/cutout/json/JsonDecoder.java
@@ -14,13 +14,13 @@ import org.json.simple.parser.ParseException;
 //
 // 1. exception (decoded inside 2 3)
 //
-// 2. response from cutout:   struct cutout_res_s  --> DataLink
+// 2. response from cutout:   struct cutout_res_s  --> CutResult
 //    .filesize
 //    .filename
 //    .nullval_count : {fill_ratio null_count total_count}
 //
 // NOTE: MCutout moved to -> dacc/JdlMCutout.java
-// 3. response from mcutout:  struct mcutout_res_s --> DataLink
+// 3. response from mcutout:  struct mcutout_res_s --> MCutResult
 //    .filesize
 //    .tgz_filename
 //    .cut_resp_s[] : {cut_param_s content_type content}
diff --git a/data-access/servlet/src/main/java/webapi/ServletMCutout.java b/data-access/servlet/src/main/java/webapi/ServletMCutout.java
index fd88d8da960a85b8789dcc6824a79527dbbb234a..db6133e8176f502e87f0db2245b2f5e905d3f13c 100644
--- a/data-access/servlet/src/main/java/webapi/ServletMCutout.java
+++ b/data-access/servlet/src/main/java/webapi/ServletMCutout.java
@@ -96,7 +96,8 @@ public class ServletMCutout extends javax.servlet.http.HttpServlet
 
          OutputStream respOutputStream = response.getOutputStream();
 
-         DataLink dlk = datasets.doMCutout(reqJsonString);
+         MCutResult mCutRes = datasets.doMCutout(reqJsonString);
+         DataLink dlk = new DataLink(mCutRes);
 
          final String contentType = "text/xml"; // FIXME
          final String respEncoding = "utf-8"; // FIXME
diff --git a/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java b/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java
index 259cecb8ab8f6577c58e07452c39e5119a6b4c72..393b81f5e8aae78b0f0ebb5af2a4af8206202e68 100644
--- a/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java
+++ b/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java
@@ -83,7 +83,8 @@ public class UWSMCutoutWork extends JobThread
 
             /* SODA -> Implementation */
 
-            DataLink dlk = datasets.doMCutout(reqJsonString);
+            MCutResult mCutResults = datasets.doMCutout(reqJsonString);
+            DataLink dlk = new DataLink(mCutResults);
 
             /* Implement -> SODA */
 
diff --git a/data-access/servlet/src/main/java/webapi/output/DataLink.java b/data-access/servlet/src/main/java/webapi/output/DataLink.java
index 321379dccc7009eaf01adb28ad0af77bd3ee9143..7c40950f4d47a2491d303d74a2e9a08163b593cc 100644
--- a/data-access/servlet/src/main/java/webapi/output/DataLink.java
+++ b/data-access/servlet/src/main/java/webapi/output/DataLink.java
@@ -11,23 +11,23 @@ class DataLink
    /* DataLink fields */
 
    String id;
-   String accessUrl;
+   String accessUrl;   // MX
    String serviceDef;
    String errorMessage;
-   String description;
+   String description;  // X
    String semantics;
    String contentType;
-   long  contentLength;
+   long  contentLength;  // MX
 
    /* legacy-VLKB fields */
 
    Inputs inputs;
    String versionString;
    String cut;
-   String absCutPathname;
+   String absCutPathname; // ServeltCutout uses
    int datacubeCount;
    NullValueCount nullVals;
-   MCutResult[] mcutResultArr;
+   MCutResult.Cut[] mcutResultArr;
 
 
    public DataLink()
@@ -62,6 +62,31 @@ class DataLink
       this.mcutResultArr  = null;
    }
 
+
+   public DataLink(MCutResult cutResult)
+   {
+      this.nullVals = new NullValueCount();
+
+      this.id            = "_PIXEL_BOUNDS"; 
+      this.accessUrl     = cutResult.fileName; // FIXME filename ->> remoteUrl
+      this.serviceDef    = null;
+      this.errorMessage  = null;
+      this.description   = "cutout_from ID";
+      this.semantics     = "FIXME find in IVOA docs...";
+      this.contentType   = "application/fits"; 
+      this.contentLength = cutResult.fileSize;
+
+      // VLKB-extension to DataLink:
+      this.inputs         = null;
+      this.versionString  = Version.asString;
+      this.cut            = null;
+      this.absCutPathname = cutResult.fileName;
+      this.datacubeCount  = 1;
+      this.nullVals       = null;
+      this.mcutResultArr  = cutResult.cutResArr;
+   }
+
+
    public String convertLocalPathnameToRemoteUrl(String localPathname, String FITScutpath, String FITSRemoteUrlCutouts)
    {
       String filename = localPathname.replaceAll(FITScutpath + "/", "");