diff --git a/data-discovery/src/main/java/vlkb/common/Coord.java b/data-discovery/src/main/java/vlkb/common/Coord.java
index 38286699dbf3e6e17c0b336f7a9ca6fd85b4d060..23d9eb59e020aa1f1dcaead731f0a156883cf421 100644
--- a/data-discovery/src/main/java/vlkb/common/Coord.java
+++ b/data-discovery/src/main/java/vlkb/common/Coord.java
@@ -1,363 +1,10 @@
-import java.util.logging.Logger;
-import java.util.Map;
-import java.io.PrintWriter;
 
 import vo.parameter.*;
 
 class Coord
 {
-   private static final Logger LOGGER = Logger.getLogger(Coord.class.getName());
-
-//   String skySystem; // FIXME make enum
-
-   /*/ center
-   double lon;
-   double lat;
-
-   // extent  < EXT_LIMIT = 4deg
-   String shape; // FIXME enum CIRCLE | RECT 
-   double radius;
-   double dlon;
-   double dlat;
-
-   public boolean vel_valid;
-   String vel_type; // FIXME make enum
-   double vel_up;
-   double vel_low;*/
-
-// Begin ..................................
-
-//   String specSystem; // FIXME enum VELO_LSRK | WAVE_Barycentric | NONE
-
    Pos  pos;
    Band band;
    Time time;
    Pol  pol;
-
-// End ....................................
-
-
-   private boolean API_VLKB_legacy = false;
-/*
-   Coord(Map<String, String[]> params)
-   {
-      String api_l = getFirstValue(params, "l");
-      String api_b = getFirstValue(params, "b");
-
-      API_VLKB_legacy = ((api_l != null) && (api_b != null));
-
-      if(API_VLKB_legacy)
-         parseVlkb(params);
-      else
-         parseSoda(params);
-
-      LOGGER.info("Parse result: " + toQueryString());
-   }
-*/
-/*
-   protected void parseSoda(Map<String, String[]> params)
-   {
-      LOGGER.info("trace");
-
-      try
-      {
-         String pubdid   = null;
-         Coord  coord    = null;
-
-
-         pubdid          = getFirstString(params, "ID");
-         String[] circle = getFirstStringArray(params,"CIRCLE", " ", 3);
-         String[] vel    = getFirstStringArray(params,"BAND", " ", 2);
-
-
-         String skySystem = getFirstString(params, "skysystem"); // FIXME add sanity checks / use enum
-         if(skySystem == null) skySystem = "ICRS";
-
-         this.skySystem = skySystem;
-         this.lon = Double.parseDouble(circle[0]);
-         this.lat = Double.parseDouble(circle[1]);
-         this.radius = Double.parseDouble(circle[2]);
-
-         if(this.radius <= 0.0) throw new IllegalArgumentException("radius must be positive and not zero");
-         this.shape = "CIRCLE";
-
-
-         String specSystem = getFirstString(params, "specsystem");
-         if(specSystem == null) specSystem = "2"; // 2=WAVE BARY
-         if( (vel != null) && (vel.length >= 2) )
-         {
-            this.specSystem = specSystem; // FIXME add sanity checks / use enum
-
-            if((vel[0] != null) && (vel[1] != null))
-            {
-               this.band.wavelength[0] = Double.parseDouble(vel[0]);
-               this.band.wavelength[1]  = Double.parseDouble(vel[1]);
-               this.vel_valid = true;
-            }
-            else
-            {
-               this.vel_valid = false;
-            }
-         }
-      }
-      catch (IllegalArgumentException illArg)
-      {
-         // response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Request with incorrect parameters: " + illArg.getMessage());
-         throw new IllegalArgumentException("Request with incorrect parameters: " + illArg.getMessage());
-      }
-   } 
-*/
-/*
-   protected void parseVlkb(Map<String, String[]> params)
-   {
-      LOGGER.info("trace");
-
-      // (l,b) is mandatory 
-
-      this.skySystem = "GALACTIC";
-      String lcl = getFirstValue(params, "l");
-      String lcb = getFirstValue(params, "b");
-
-      if((lcl == null) || (lcb == null))
-         throw new IllegalArgumentException("parameters (l,b) are mandatory."); 
-
-      lon = Double.parseDouble(lcl);
-      lat = Double.parseDouble(lcb);
-
-      // one of: radius r OR (dlon,dlat) is mandatory
-
-      if(params.containsKey("r"))
-      {
-         String lcr = getFirstValue(params, "r");
-         radius = Double.parseDouble(lcr);
-         this.shape = "CIRCLE";
-      }
-      else if (params.containsKey("dl") && params.containsKey("db"))
-      {
-         String lcdl = getFirstValue(params, "dl");
-         String lcdb = getFirstValue(params, "db");
-         dlon = Double.parseDouble(lcdl);
-         dlat = Double.parseDouble(lcdb);
-         this.shape = "RECT";
-      }
-      else
-         throw new IllegalArgumentException("area extent is mandatory: either radius r or (dl,db) must be given."); 
-
-      // velocity is optional
-
-      String cvlow = getFirstValue(params, "vl");
-      String cvup  = getFirstValue(params, "vu");
-      String cvtype = "1"; // VLKB: VELO LSRK
-
-      vel_valid = (cvlow != null) && (cvup != null);
-
-      if(vel_valid)
-      {
-         vel_low = Double.parseDouble(cvlow);
-         vel_up  = Double.parseDouble(cvup);
-         vel_type = cvtype;
-      }
-   }
-*/
-
-
-//   void setSkySystem(String skySystem) { this.skySystem = skySystem; }
-//   void setSpecSystem(String velType) { this.vel_type = velType; }
-/*
-   void setVelocity(double vel_low, double vel_up, String vel_type)
-   {
-      this.vel_type  = vel_type;
-      this.vel_low   = vel_low;
-      this.vel_up    = vel_up;
-      this.vel_valid = true;
-   }
-*/
-
-
-
-
-   // generate cutout/merge queryStrings
-
-   String toQueryString()
-   {
-      //if(API_VLKB_legacy)
-      //   return toVlkbLegacyQueryString();
-      //else
-         return toVoQueryString();
-   }
-
-/*
-   String toVlkbLegacyQueryString()
-   {
-      LOGGER.info("trace");
-
-      StringBuilder sb = new StringBuilder();
-
-      sb.append("skysystem=" + pos.skySystem);
-      sb.append("&l=" + pos.circle.lon );
-      sb.append("&b=" + pos.circle.lat );
-
-      switch(shape)
-      {
-         case "CIRCLE" : sb.append("&r="  + pos.circle.radius   );
-                         break;
-         case "RECT"   :
-//                         sb.append("&dl=" + dlon  );
-//                         sb.append("&db=" + dlat  );
-                         break;
-         default:
-            LOGGER.info("Coord::toVlkbLegacyQueryString: unknown shape: " + shape);
-      }
-
- /*     if(vel_valid)
-      {
-         sb.append("&vl=" + vel_low);
-         sb.append("&vu=" + vel_up );
-         sb.append("&specsystem=" + vel_type );
-      }
-* /
-      sb.append("&pubdid="); // FIXME id-value will be added in FormatResponseFilter
-
-      return sb.toString();
-   }
-*/
-
-   String toVoQueryString()
-   {
-      LOGGER.info("trace");
-
-      StringBuilder sb = new StringBuilder();
-
-      sb.append("skysystem=" + pos.system);
-
-      switch(pos.shape)
-      {
-         case "CIRCLE" :
-            sb.append("&POS=CIRCLE "  + pos.circle.lon + " " + pos.circle.lat + " " + pos.circle.radius);
-            break;
-
-         case "RECT" :
-            if(band != null)
-               sb.append("&POS=RANGE="
-                     + " " + pos.range.lon1 + " " + pos.range.lon2
-                     + " " + pos.range.lat1 + " " + pos.range.lat2
-                     + " " + band.wavelength[0]  + " " + band.wavelength[1]);
-            else
-               sb.append("&POS=RANGE="
-                     + " " + pos.range.lon1 + " " + pos.range.lon2
-                     + " " + pos.range.lat1 + " " + pos.range.lat2);
-            break;
-
-         default:
-            LOGGER.info("Coord::toVoQueryString: unknown shape: " + pos.shape);
-      }
-
-      if(band != null)
-      {
-         sb.append("&BAND= " + band.wavelength[0] + " " + band.wavelength[1]);
-         sb.append("&specsystem=" + band.system );
-      }
-
-      sb.append("&ID="); // FIXME id-value will be added in FormatResponseFilter
-
-      return sb.toString();
-   }
-
-
-
-
-
-   // utils
-
-   public String toString()
-   {
-      String area = "";//null;
-      /*switch(shape)
-      {
-         case "CIRCLE" : area = String.valueOf(pos.circle.radius); break;
-         case "RECT"   : area = dlon + ", " + dlat; break;
-         default: // FIXME leave with exception
-                         area = "err: " + shape;
-      }
-      */
-      String resourceSearchArea 
-         = "(P; area) = (" + pos.circle.lon + ", " + pos.circle.lat + "; " + area + ") [deg]";
-
-      return resourceSearchArea;
-   }
-
-
-   void toXML(PrintWriter writer)
-   {
-      // center is mandatory -> create no Coord if center not valid
-      writer.println("<SkySystem>"+pos.system+"</SkySystem>");
-      switch(pos.shape)
-      {
-         case "CIRCLE" :  
-            writer.println("<l>"+pos.circle.lon+"</l>");
-            writer.println("<b>"+pos.circle.lat+"</b>");
-            writer.println("<r>"+String.valueOf(pos.circle.radius)+"</r>"); break;
-         case "RECT"   :
-            writer.println("<l>"  + (pos.range.lon1 + pos.range.lon2)/2.0 + "</l>");
-            writer.println("<b>"  + (pos.range.lat1 + pos.range.lat2)/2.0 + "</b>");
-            writer.println("<dl>" + (pos.range.lon2 - pos.range.lon1) + "</dl>");
-            writer.println("<db>" + (pos.range.lat2 - pos.range.lat1) + "</db>");
-            break;
-         default:
-            writer.println("<shape> unknown shape: " + pos.shape + " </shape>");
-      }
-      if(band != null)
-      {
-         writer.println("<vl>"   + String.valueOf(band.wavelength[0])  +"</vl>");
-         writer.println("<vu>"   + String.valueOf(band.wavelength[1])   +"</vu>");
-         writer.println("<vtype>"+ band.system                 +"</vtype>");
-      }
-   }
-
-
-
-   // used in constructor and parseVlkb
-   // if param present -> must have at least one value
-   static private String getFirstValue(Map<String, String[]> map, String key)
-   {
-      String[] value = map.get(key);
-
-      if(value == null)
-         return null;
-
-      if(value.length > 0)    // key-value present at least once: return first occurance
-         return value[0].toString();
-      else                    // length=0: no values present (array exists but is empty)
-         throw new IllegalArgumentException("parameter " + key + " has no value."); 
-   }
-
-
-   // used in parseSoda
-   String getFirstString(Map<String, String[]> params, String key)
-   {
-      String[] values = params.get(key);
-      if (values == null) return null;
-
-      if (values.length < 1)
-         throw new IllegalArgumentException(key + " has no valid value");
-      else
-         return values[0];// FIXME if values[0] is null -> canot distinguish from key not found
-   }
-
-
-   String[] getFirstStringArray(Map<String, String[]> params, String key, String separator, int arrayLength)
-   {
-      String array = getFirstString(params, key);
-      if (array == null) return null;
-
-      String[] stringArray = array.split(separator);
-
-      if(stringArray.length != arrayLength)
-         throw new IllegalArgumentException(
-               key + " parameter has incorrect number of elements ("
-               + stringArray.length + " vs " + arrayLength + ") or incorrect separator used");
-
-      return stringArray;
-   }
-
 }
diff --git a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java
index 2b9e01157161683c52eeae89089ef018ec13f0fa..7515fe06a03ba8d21b4fc36a051e20fdadff1657 100644
--- a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java
+++ b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java
@@ -113,13 +113,13 @@ public class FormatResponseFilter implements Filter
          Dataset[] datasetArr = convert(obsCoreArr,
                coord, // VLKB: calc overlap-code for velocity
                settings.serviceUrls.cutoutUrl(),
-               coord.toQueryString());
+               toQueryString(coord));
 
          SearchOutputData searchOutputData = SearchOutputData.marshall(datasetArr,
                subsurveyId,
                dbSubsurveyArr,
                settings.serviceUrls.mergeUrl(),
-               coord.toQueryString());
+               toQueryString(coord));
 
          String respFormat;
          String respFormatReq[] = params.get("RESPONSEFORMAT");
@@ -349,4 +349,50 @@ public class FormatResponseFilter implements Filter
    }
 
 
+
+      // generate cutout/merge queryStrings
+   private String toQueryString(Coord coord)
+   {
+      LOGGER.info("trace");
+
+      StringBuilder sb = new StringBuilder();
+
+      sb.append("skysystem=" + coord.pos.system);
+
+      switch(coord.pos.shape)
+      {
+         case "CIRCLE" :
+            sb.append("&POS=CIRCLE "  + coord.pos.circle.lon
+                  + " " + coord.pos.circle.lat + " " + coord.pos.circle.radius);
+            break;
+
+         case "RECT" :
+            if(coord.band != null)
+               sb.append("&POS=RANGE="
+                     + " " + coord.pos.range.lon1 + " " + coord.pos.range.lon2
+                     + " " + coord.pos.range.lat1 + " " + coord.pos.range.lat2
+                     + " " + coord.band.wavelength[0]  + " " + coord.band.wavelength[1]);
+            else
+               sb.append("&POS=RANGE="
+                     + " " + coord.pos.range.lon1 + " " + coord.pos.range.lon2
+                     + " " + coord.pos.range.lat1 + " " + coord.pos.range.lat2);
+            break;
+
+         default:
+            LOGGER.info("Coord::toVoQueryString: unknown shape: " + coord.pos.shape);
+      }
+
+      if(coord.band != null)
+      {
+         sb.append("&BAND= " + coord.band.wavelength[0] + " " + coord.band.wavelength[1]);
+         sb.append("&specsystem=" + coord.band.system );
+      }
+
+      sb.append("&ID="); // FIXME id-value will be added in FormatResponseFilter
+
+      return sb.toString();
+   }
+
+
+
 }