diff --git a/data-discovery/src/main/java/vlkb/search/DbPSearch.java b/data-discovery/src/main/java/vlkb/search/DbPSearch.java
index dbd44949d499af6fbc318d5d0080cd0d78941a0a..3aaab5ef577c9cac401d208ba6c3ee1df2f96552 100644
--- a/data-discovery/src/main/java/vlkb/search/DbPSearch.java
+++ b/data-discovery/src/main/java/vlkb/search/DbPSearch.java
@@ -26,81 +26,25 @@ public class DbPSearch
    private static final Logger LOGGER = Logger.getLogger(DbPSearch.class.getName());
    private DBConn dbConn;
 
-   //private static final String DB_DRIVER = "org.postgresql.Driver";
 
    DbPSearch(DBConn dbConn)
    {
       this.dbConn = dbConn;
    }
 
-   public String[] queryOverlapingPubdid(Coord coord, SubsurveyId subsurveyId)
-   {
-      LOGGER.info("trace");
 
-//      String skySystem = coord.skySystem;
-      String shape = coord.pos.shape;
-
-      double lon;
-      double lat;
-      double radius;
-      double dlon;
-      double dlat;
-
-      String inputRegion = null;
 
-      if(shape.equals("CIRCLE"))
-      {
-         lon = coord.pos.circle.lon;
-         lat = coord.pos.circle.lat;
-         radius = coord.pos.circle.radius;
-          inputRegion = "scircle '<(" + Double.toString(lon) + "d," + Double.toString(lat) + "d),"
-            + Double.toString(radius) + "d>'";
-      }
-      else if (shape.equals("RECT"))
-      {
-         lon =  (coord.pos.range.lon1 + coord.pos.range.lon2)/2.0;
-         lat =  (coord.pos.range.lat1 + coord.pos.range.lat2)/2.0;
-         dlon = (coord.pos.range.lon2 - coord.pos.range.lon1)/2.0;
-         dlat = (coord.pos.range.lat2 - coord.pos.range.lat1)/2.0;
-  
-         /* South-West and North-East corners of a box */
-         String sw_lon = Double.toString(lon - dlon/2.0);
-         String sw_lat = Double.toString(lat - dlat/2.0);
-         String ne_lon = Double.toString(lon + dlon/2.0);
-         String ne_lat = Double.toString(lat + dlat/2.0);
 
-         inputRegion = "sbox '( ("+ sw_lon + "d, " + sw_lat + "d), (" + ne_lon +"d, " + ne_lat + "d) )'";
-      }
-      else if (shape.equals("POLYGON"))
-      {
-         // FIXME redefine Polygon as point-array:
-         assert(coord.pos.polygon.lon.length == coord.pos.polygon.lat.length);
+   public String[] queryOverlapingPubdid(Coord coord, SubsurveyId subsurveyId)
+   {
+      LOGGER.info("trace");
 
-         // Polygon has at least 3 points
-         inputRegion = "spoly '( (" + coord.pos.polygon.lon[0] + "d, " + coord.pos.polygon.lat[0] + "d),";
-         for(int ii=1; ii < coord.pos.polygon.lon.length; ii++)
-         {
-            inputRegion += ", (" + coord.pos.polygon.lon[ii] + "d, " + coord.pos.polygon.lat[ii] + "d)";
-         }
-         inputRegion += " )'";
-      }
-      else
-      {
-         throw new IllegalArgumentException("Coord::shape was: " + shape + " but valid is CIRCLE or RECT");
-      }
+      String inputRegion = toPgSphereSqlTypeString(coord.pos);
+      String dbRegion    = toRegionColumnName(coord.pos.system);
 
-      boolean  vel_valid = (coord.band != null) && (coord.band.system != Band.System.NONE);//coord.vel_valid;
-
-      String theQuery;
-      if(coord.pos.system == Pos.System.GALACTIC)
-      {
-         theQuery ="SELECT obs_publisher_did FROM obscore WHERE ("+inputRegion+"  && polygon_region_galactic)";
-      }
-      else
-      {
-         theQuery ="SELECT obs_publisher_did FROM obscore WHERE (" + inputRegion + "  && polygon_region)";
-      }
+      String theQuery = "SELECT obs_publisher_did FROM obscore WHERE ("+inputRegion+"  && " + dbRegion + ")";
 
+      boolean  vel_valid = (coord.band != null) && (coord.band.system != Band.System.NONE);
       if(vel_valid)
       {
          String vel_no_overlap
@@ -115,7 +59,7 @@ public class DbPSearch
 
       if(subsurveyId != null)
       {
-         /* FIXME replace this implementation with exact string match once survey_id is defined / added to obs_core */
+         /* FIXME replace this implementation with exact string match once survey_id is defined in obs_core */
 
          String addSS = "";
          if((subsurveyId.surveyName != null) && (subsurveyId.surveyName.length() > 0))
@@ -141,20 +85,19 @@ public class DbPSearch
 
       List<String> pubdidList = new ArrayList<>();
 
-      LOGGER.info("Connecting to: " + dbConn.uri() + " with optional user/pwd: " + dbConn.userName() +" / "+ dbConn.password() );
+      LOGGER.info("Connecting to: " + dbConn.uri()
+            + " with optional user/pwd: " + dbConn.userName() +" / "+ dbConn.password() );
 
       try( 
             Connection conn = DriverManager.getConnection(dbConn.uri(), dbConn.userName(), dbConn.password());
             Statement  st   = conn.createStatement();
             ResultSet  res  = st.executeQuery(theQuery);)
       {
-
          while (res.next())
          {
             String pubdid_str = res.getString("obs_publisher_did");
             pubdidList.add(pubdid_str);
          }
-
       }
       catch (SQLException se)
       {
@@ -172,127 +115,19 @@ public class DbPSearch
 
 
 
-   public FormatResponseFilter.ObsCore[] queryOutputData(String[] pubdidArr, Coord coord/*, SubsurveyId subsurveyId*/)
+   public FormatResponseFilter.ObsCore[] queryOutputData(String[] pubdidArr, Coord coord)
    {
       LOGGER.info("");
 
-      String skySystem = coord.pos.system.toString();
-      String shape = coord.pos.shape;
-
-      double lon;
-      double lat;
-      double radius;
-      double dlon;
-      double dlat;
-
-      String inputRegion = null;
-
-      if(shape.equals("CIRCLE"))
-      {
-         lon = coord.pos.circle.lon;
-         lat = coord.pos.circle.lat;
-         radius = coord.pos.circle.radius;
-         inputRegion = "scircle '<(" + Double.toString(lon) + "d," + Double.toString(lat) + "d),"
-            + Double.toString(radius) + "d>'";
-      }
-      else if (shape.equals("RECT"))
-      {
-         lon =  (coord.pos.range.lon1 + coord.pos.range.lon2)/2.0;
-         lat =  (coord.pos.range.lat1 + coord.pos.range.lat2)/2.0;
-         dlon = (coord.pos.range.lon2 - coord.pos.range.lon1)/2.0;
-         dlat = (coord.pos.range.lat2 - coord.pos.range.lat1)/2.0;
-
-         /* South-West and North-East corners of a box */
-         String sw_lon = Double.toString(lon - dlon/2.0);
-         String sw_lat = Double.toString(lat - dlat/2.0);
-         String ne_lon = Double.toString(lon + dlon/2.0);
-         String ne_lat = Double.toString(lat + dlat/2.0);
-
-         inputRegion = "sbox '( ("+ sw_lon + "d, " + sw_lat + "d), (" + ne_lon +"d, " + ne_lat + "d) )'";
-      }
-      else
-      { // FIXME how to deal with Polygon ? -> use enclose-RECT -> RANGE
-         /* lon = coord.lon;
-            lat = coord.lat;
-            radius = coord.radius;
-            dlon = coord.dlon;
-            dlat = coord.dlat;*/
-
-         throw new IllegalArgumentException("Coord::shape was: " + shape + " but valid is CIRCLE or RECT");
-      }
-
-      boolean  vel_valid = (coord.band != null) && (coord.band.system != Band.System.NONE);//coord.vel_valid;
-     //      String   vel_type    = coord.vel_type;
-    //  double   vel_low   = coord.band.wavelength[0];//vel_low;
-    //  double   vel_up    = coord.band.wavelength[1];//vel_up;
-
-
-      /*
-         double lon = coord.lon;
-         double lat = coord.lat;
-         double radius = coord.radius;
-         double dlon = coord.dlon;
-         double dlat = coord.dlat;
-
-         boolean  vel_valid   = coord.vel_valid;
-         String   vel_type    = coord.vel_type;
-         double   vel_low     = coord.vel_low;
-         double   vel_up      = coord.vel_up;
-
-         String inputRegion = null;
-
-         if(coord.shape.equals("CIRCLE"))
-         {
-         inputRegion = "scircle '<(" + Double.toString(lon) + "d," + Double.toString(lat) + "d),"
-         + Double.toString(radius) + "d>'";
-         }
-         else if( coord.shape.equals("RECT") )
-         {
-      /*Vert vert[] = toVertices(lon, lat, dlon, dlat);
-
-      inputRegion = "spoly '{" 
-      + "(" + Double.toString(vert[0].lon) + "d," + Double.toString(vert[0].lat) + "d)," 
-      + "(" + Double.toString(vert[1].lon) + "d," + Double.toString(vert[1].lat) + "d)," 
-      + "(" + Double.toString(vert[2].lon) + "d," + Double.toString(vert[2].lat) + "d)," 
-      + "(" + Double.toString(vert[3].lon) + "d," + Double.toString(vert[3].lat) + "d)" 
-      + "}'";
-      */
-
-      /* South-West and North-East corners of a box * /
-         String sw_lon = Double.toString(lon - dlon/2.0);
-         String sw_lat = Double.toString(lat - dlat/2.0);
-         String ne_lon = Double.toString(lon + dlon/2.0);
-         String ne_lat = Double.toString(lat + dlat/2.0);
-
-         inputRegion = "sbox '( ("+ sw_lon + "d, " + sw_lat + "d), (" + ne_lon +"d, " + ne_lat + "d) )'";
-         }
-         else
-         {
-         throw new IllegalArgumentException("Coord::shape was: " + coord.shape + " but valid is CIRCLE or RECT");
-         }
-         */
-
-
-
-
-
       String commaSepPubdids  = String.join("\',\'", pubdidArr);
 
+      String inputRegion = toPgSphereSqlTypeString(coord.pos);
+      String dbRegion    = toRegionColumnName(coord.pos.system);
 
-      //String theQuery ="SELECT dataproduct_type,obs_publisher_did,obs_collection,polygon_region_galactic,access_url,em_min,em_max," 
-      String theQuery;
-      if(coord.pos.system == Pos.System.GALACTIC)
-      {
-         theQuery ="SELECT *," 
-            + inputRegion + " <@ polygon_region_galactic AS inputInsideDb, " 
-            + inputRegion + " @> polygon_region_galactic AS dbInsideInput FROM obscore WHERE (obs_publisher_did IN (\'"+commaSepPubdids+"\'))";
-      }
-      else
-      {
-         theQuery ="SELECT *," 
-            + inputRegion + " <@ polygon_region AS inputInsideDb, " 
-            + inputRegion + " @> polygon_region AS dbInsideInput FROM obscore WHERE (obs_publisher_did IN (\'"+commaSepPubdids+"\'))";
-      }
+      String theQuery ="SELECT *," 
+         + inputRegion + " <@ " + dbRegion + " AS inputInsideDb, " 
+         + inputRegion + " @> " + dbRegion + " AS dbInsideInput FROM obscore WHERE (obs_publisher_did IN (\'"
+         +commaSepPubdids+"\'))";
 
       theQuery += " ORDER BY obs_collection";
 
@@ -300,14 +135,13 @@ public class DbPSearch
 
       List<FormatResponseFilter.ObsCore> obsCoreList = new ArrayList<>();
 
-      LOGGER.info("Connecting to: " + dbConn.uri() + " with optional user/pwd: " + dbConn.userName() +" / "+ dbConn.password() );
+      LOGGER.info("Connecting to: " + dbConn.uri()
+            + " with optional user/pwd: " + dbConn.userName() +" / "+ dbConn.password() );
       try( 
             Connection conn = DriverManager.getConnection(dbConn.uri(), dbConn.userName(), dbConn.password());
             Statement  st   = conn.createStatement();
             ResultSet  res  = st.executeQuery(theQuery);)
       {
-         //ResultSet res = doQuery(theQuery);
-
          while (res.next())
          {
             FormatResponseFilter.ObsCore obsCore = new FormatResponseFilter.ObsCore();
@@ -371,100 +205,76 @@ public class DbPSearch
 
       return cubes;
    }
-   /*
-      public static void loadDriver()// throws ClassNotFoundException
-      {
-   /* https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html :
-    * Any JDBC 4.0 drivers that are found in your class path are automatically loaded.
-    * (However, you must manually load any drivers prior to JDBC 4.0 with the method
-    * Class.forName.)
-    * /
-   /* OR
-    * DriverManager.registerDriver(new org.postgresql.Driver());
-    * LOGGER.info(getClasspathString());
-    * LOGGER.info(getRegisteredDriverList());
-    *i /
-    try
-    {
-   //   Class.forName(DB_DRIVER);
-    }
-    catch (ClassNotFoundException e)
-    {
-    LOGGER.info("DB driver "+ DB_DRIVER +" not found: " + e.getMessage());
-    e.printStackTrace();
-    }
-      }
-      */
-   /*
-      private ResultSet doQuery(String theQuery) throws SQLException, ClassNotFoundException
-      {
-   /* https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html :
-    * Any JDBC 4.0 drivers that are found in your class path are automatically loaded.
-    * (However, you must manually load any drivers prior to JDBC 4.0 with the method
-    * Class.forName.)
-    * /
-   //    Class.forName(DB_DRIVER);
-   /* OR
-    * DriverManager.registerDriver(new org.postgresql.Driver());
-    * LOGGER.info(getClasspathString());
-    * LOGGER.info(getRegisteredDriverList());
-    * /
 
-    LOGGER.info("Connecting to: " + dbConn.uri() + " with optional user/pwd: " + dbConn.userName() +" / "+ dbConn.password() );
 
-    Connection conn = DriverManager.getConnection(dbConn.uri(), dbConn.userName(), dbConn.password());
+   private String toPgSphereSqlTypeString(Pos pos)
+   {
+      double lon;
+      double lat;
+      double radius;
+      double dlon;
+      double dlat;
 
-    Statement  st   = conn.createStatement();
+      String inputRegion = null;
 
-    ResultSet  res  = st.executeQuery(theQuery);
+      String shape = pos.shape;
 
-    return res;
+      if(shape.equals("CIRCLE"))
+      {
+         lon = pos.circle.lon;
+         lat = pos.circle.lat;
+         radius = pos.circle.radius;
+         inputRegion = "scircle '<(" + Double.toString(lon) + "d," + Double.toString(lat) + "d),"
+            + Double.toString(radius) + "d>'";
       }
-      */
-   /*   public Subsurvey[] getSurveyTable()
-        {
-        List<Subsurvey> survList = new ArrayList<Subsurvey>();
-
-        String theQuery = "SELECT name,species,transition,rest_frequency,restf_fits_unit,velocity_fits_unit,description FROM surveys";
+      else if (shape.equals("RECT"))
+      {
+         lon =  (pos.range.lon1 + pos.range.lon2)/2.0;
+         lat =  (pos.range.lat1 + pos.range.lat2)/2.0;
+         dlon = (pos.range.lon2 - pos.range.lon1)/2.0;
+         dlat = (pos.range.lat2 - pos.range.lat1)/2.0;
 
+         /* South-West and North-East corners of a box */
+         String sw_lon = Double.toString(lon - dlon/2.0);
+         String sw_lat = Double.toString(lat - dlat/2.0);
+         String ne_lon = Double.toString(lon + dlon/2.0);
+         String ne_lat = Double.toString(lat + dlat/2.0);
 
-        LOGGER.info("Connecting to: " + dbConn.uri() + " with optional user/pwd: " + dbConn.userName() +" / "+ dbConn.password() );
-        try( 
-        Connection conn = DriverManager.getConnection(dbConn.uri(), dbConn.userName(), dbConn.password());
-        Statement  st   = conn.createStatement();
-        ResultSet  res  = st.executeQuery(theQuery);)
-        {
-   //ResultSet res = doQuery(theQuery);
+         inputRegion = "sbox '( ("+ sw_lon + "d, " + sw_lat + "d), (" + ne_lon +"d, " + ne_lat + "d) )'";
+      }
+      else if (shape.equals("POLYGON"))
+      {
+         // FIXME redefine Polygon as point-array:
+         assert(pos.polygon.lon.length == pos.polygon.lat.length);
 
-   if(res == null)
-   {
-   LOGGER.info("Query yielded no resuls: " + theQuery);
+         // Polygon has at least 3 points
+         inputRegion = "spoly '( (" + pos.polygon.lon[0] + "d, " + pos.polygon.lat[0] + "d),";
+         for(int ii=1; ii < pos.polygon.lon.length; ii++)
+         {
+            inputRegion += ", (" + pos.polygon.lon[ii] + "d, " + pos.polygon.lat[ii] + "d)";
+         }
+         inputRegion += " )'";
+      }
+      else
+      {
+         throw new IllegalArgumentException("Coord::shape was: " + shape + " but valid is CIRCLE or RECT");
+      }
+      return inputRegion;
    }
-   else
-   {
-   while (res.next())
+
+   private String toRegionColumnName(Pos.System system)
    {
-   Subsurvey surv = new Subsurvey();
-   surv.rf          = res.getDouble("rest_frequency");
-   surv.surveyname  = res.getString("name");
-   surv.species     = res.getString("species");
-   surv.transition  = res.getString("transition");
-   surv.rf_unit     = res.getString("restf_fits_unit");
-   surv.vel_unit    = res.getString("velocity_fits_unit");
-   surv.description = res.getString("description");
-
-   survList.add(surv);
-   }
+      String dbRegion;
+      switch(system)
+      {
+         case GALACTIC:
+            dbRegion = "polygon_region_galactic";
+            break;
+         default:
+            dbRegion = "polygon_region";
+      }
+      return dbRegion;
    }
-        }
-        catch (SQLException se)
-        {
-        logSqlExInfo(se);
-        se.printStackTrace();
-        }
-        return survList.toArray(new Subsurvey[0]);
-        }
-        */
 
 
 
@@ -483,36 +293,5 @@ public class DbPSearch
 
 
 
-   private String getClasspathString()
-   {
-      StringBuffer classpath = new StringBuffer("getClasspathString:\r\n");
-      ClassLoader applicationClassLoader = this.getClass().getClassLoader();
-      if (applicationClassLoader == null) {
-         applicationClassLoader = ClassLoader.getSystemClassLoader();
-      }
-      URL[] urls = ((URLClassLoader)applicationClassLoader).getURLs();
-      for(int i=0; i < urls.length; i++) {
-         classpath.append(urls[i].getFile()).append("\r\n");
-      }
-
-      return classpath.toString();
-   }
-
-
-   /* Returns the list of JDBC Drivers loaded by the caller's class loader */
-   private String getRegisteredDriverList()
-   {
-      StringBuffer drvList = new StringBuffer("getRegisteredDriverList:\r\n");
-      for (Enumeration e = DriverManager.getDrivers();
-            e.hasMoreElements(); )
-      {
-         Driver d = (Driver) e.nextElement();
-         String driverClass = d.getClass().getName();
-         drvList.append(driverClass).append("\r\n");	
-      }
-      return drvList.toString();
-   }
-
-
-
 }
+