diff --git a/data-discovery/src/main/java/vlkb/output/XmlSerializer.java b/data-discovery/src/main/java/vlkb/output/XmlSerializer.java
index cd984fdad0ddda82fe0050c0f86b8606d7bf2059..953aeba1c8ccccf34f385ef857ac65817f3292fb 100644
--- a/data-discovery/src/main/java/vlkb/output/XmlSerializer.java
+++ b/data-discovery/src/main/java/vlkb/output/XmlSerializer.java
@@ -39,91 +39,89 @@ public final class XmlSerializer
       BufferedWriter out = new BufferedWriter( writer );
 
       out.write("<?xml-stylesheet type='text/xsl' href='VOTable2XHTML.xsl'?>");
-      out.write( "<VOTABLE version='1.1'>\n" );
-      out.write( "<RESOURCE>\n" );
-      out.write( "<DESCRIPTION> " + searchOutputData.versionString + " </DESCRIPTION>\n" );
+      out.write( "<VOTABLE version='1.1'>" );
+      out.write( "<RESOURCE>" );
+      out.write( "<DESCRIPTION> " + searchOutputData.versionString + " </DESCRIPTION>" );
       for ( int i = 0; i < tables.length; i++ )
       {
          VOSerializer.makeSerializer( DataFormat.TABLEDATA, tables[ i ] ).writeInlineTableElement( out );
       }
-      out.write( "</RESOURCE>\n" );
-      out.write( "</VOTABLE>\n" );
+      out.write( "</RESOURCE>" );
+      out.write( "</VOTABLE>" );
       out.flush();
    }
 
+   static final ColumnInfo[] OBSCORE_COLINFO =
+   {
+      new ColumnInfo( "dataproduct_type",  String.class,  "Dataproduct Type (image|cube)" ),
+      new ColumnInfo( "calib_level",       Integer.class, "Calibration level" ),
+      new ColumnInfo( "obs_collection",    String.class,  "Collection" ),
+      new ColumnInfo( "obs_id",            String.class,  "Observation Id" ),
+      new ColumnInfo( "obs_publisher_did", String.class,  "Publisher Did" ),
+
+      new ColumnInfo( "access_url",     String.class, "Access URL" ),
+      new ColumnInfo( "access_format",  String.class, "Format (MIME type)" ),
+      new ColumnInfo( "access_estsize", Long.class,   "Extimated size (KB)" ),
+
+      new ColumnInfo( "target_name", String.class,  "Target" ),
+
+      new ColumnInfo( "s_ra",         Double.class, "Right Ascention" ),
+      new ColumnInfo( "s_dec",        Double.class, "Declination" ),
+      new ColumnInfo( "s_fov",        Double.class, "Field of view" ),
+      new ColumnInfo( "s_region",     String.class, "Region" ),
+      new ColumnInfo( "s_xel1",       Long.class,   "Pixels axis1" ),
+      new ColumnInfo( "s_xel2",       Long.class,   "Pixels axis2" ),
+      new ColumnInfo( "s_resolution", Double.class, "Spatial resolution" ),
+
+      new ColumnInfo( "t_min",        Double.class, "Time min" ),
+      new ColumnInfo( "t_max",        Double.class, "Time max" ),
+      new ColumnInfo( "t_exptime",    Double.class, "Exposure time" ),
+      new ColumnInfo( "t_resolution", Double.class, "Time resolution" ),
+      new ColumnInfo( "t_xel",        Long.class,   "Time pixels" ),
+
+      new ColumnInfo( "em_min",       Double.class, "Spectrum min" ),
+      new ColumnInfo( "em_max",       Double.class, "Spectrum max" ),
+      new ColumnInfo( "em_res_power", Double.class, "Spectrum resolution power" ),
+      new ColumnInfo( "em_xel",       Long.class,   "Spectrum pixels" ),
+
+      new ColumnInfo( "o_ucd", String.class, "Observable UCD" ),
+
+      new ColumnInfo( "pol_states", String.class, "Polarization states" ),
+      new ColumnInfo( "pol_xel",    Long.class,   "Polarization pixels" ),
+
+      new ColumnInfo( "facility_name", String.class, "Facility" ),
+      new ColumnInfo( "instrument_name", String.class, "Instrument" ),
+
+
+      // VLKB extensions
+      new ColumnInfo( "overlap",     Integer.class, "Overlap Code" ),
+      new ColumnInfo( "overlapSky",  Integer.class, "Overlap Code for Sky axes" ),
+      new ColumnInfo( "overlapSpec", Integer.class, "Overlap Code for Spectral axis" ),
+
+      new ColumnInfo( "P1lon", Double.class, "P1 longitude" ),
+      new ColumnInfo( "P1lat", Double.class, "P1 latitude" ),
+      new ColumnInfo( "P2lon", Double.class, "P2 longitude" ),
+      new ColumnInfo( "P2lat", Double.class, "P2 latitude" ),
+      new ColumnInfo( "P3lon", Double.class, "P3 longitude" ),
+      new ColumnInfo( "P3lat", Double.class, "P3 latitude" ),
+      new ColumnInfo( "P4lon", Double.class, "P4 longitude" ),
+      new ColumnInfo( "P4lat", Double.class, "P4 latitude" ),
+
+      new ColumnInfo( "file_url",   String.class, "Access URL: all file" ),
+      new ColumnInfo( "cutout_url", String.class, "Access URL: cut file" ),
+      new ColumnInfo( "merge_url",  String.class, "Access URL: demosaicing files" ),
+
+      // subsurvey metadata
+      new ColumnInfo( "velocity_unit", String.class, "Velocity Unit" ),
+      new ColumnInfo( "survey",        String.class, "Survey name" ),
+      new ColumnInfo( "species",       String.class, "Species" ),
+      new ColumnInfo( "transition",    String.class, "Transition" ),
+      new ColumnInfo( "description",   String.class, "Descritpion" )
+   };
 
    private static StarTable makeSearchResultsTable(Subsurvey[] ssurv)
    {
-      // FIXME make static final
-      ColumnInfo[] colInfos =
-      {
-         new ColumnInfo( "dataproduct_type",  String.class,  "Dataproduct Type (image|cube)" ),
-         new ColumnInfo( "calib_level",       Integer.class, "Calibration level" ),
-         new ColumnInfo( "obs_collection",    String.class,  "Collection" ),
-         new ColumnInfo( "obs_id",            String.class,  "Observation Id" ),
-         new ColumnInfo( "obs_publisher_did", String.class,  "Publisher Did" ),
-
-         new ColumnInfo( "access_url",     String.class, "Access URL" ),
-         new ColumnInfo( "access_format",  String.class, "Format (MIME type)" ),
-         new ColumnInfo( "access_estsize", Long.class,   "Extimated size (KB)" ),
-
-         new ColumnInfo( "target_name", String.class,  "Target" ),
-
-         new ColumnInfo( "s_ra",         Double.class, "Right Ascention" ),
-         new ColumnInfo( "s_dec",        Double.class, "Declination" ),
-         new ColumnInfo( "s_fov",        Double.class, "Field of view" ),
-         new ColumnInfo( "s_region",     String.class, "Region" ),
-         new ColumnInfo( "s_xel1",       Long.class,   "Pixels axis1" ),
-         new ColumnInfo( "s_xel2",       Long.class,   "Pixels axis2" ),
-         new ColumnInfo( "s_resolution", Double.class, "Spatial resolution" ),
-
-         new ColumnInfo( "t_min",        Double.class, "Time min" ),
-         new ColumnInfo( "t_max",        Double.class, "Time max" ),
-         new ColumnInfo( "t_exptime",    Double.class, "Exposure time" ),
-         new ColumnInfo( "t_resolution", Double.class, "Time resolution" ),
-         new ColumnInfo( "t_xel",        Long.class,   "Time pixels" ),
-
-         new ColumnInfo( "em_min",       Double.class, "Spectrum min" ),
-         new ColumnInfo( "em_max",       Double.class, "Spectrum max" ),
-         new ColumnInfo( "em_res_power", Double.class, "Spectrum resolution power" ),
-         new ColumnInfo( "em_xel",       Long.class,   "Spectrum pixels" ),
-
-         new ColumnInfo( "o_ucd", String.class, "Observable UCD" ),
-
-         new ColumnInfo( "pol_states", String.class, "Polarization states" ),
-         new ColumnInfo( "pol_xel",    Long.class,   "Polarization pixels" ),
-
-         new ColumnInfo( "facility_name", String.class, "Facility" ),
-         new ColumnInfo( "instrument_name", String.class, "Instrument" ),
-
-
-         // VLKB extensions
-         new ColumnInfo( "overlap",     Integer.class, "Overlap Code" ),
-         new ColumnInfo( "overlapSky",  Integer.class, "Overlap Code for Sky axes" ),
-         new ColumnInfo( "overlapSpec", Integer.class, "Overlap Code for Spectral axis" ),
-
-         new ColumnInfo( "P1lon", Double.class, "P1 longitude" ),
-         new ColumnInfo( "P1lat", Double.class, "P1 latitude" ),
-         new ColumnInfo( "P2lon", Double.class, "P2 longitude" ),
-         new ColumnInfo( "P2lat", Double.class, "P2 latitude" ),
-         new ColumnInfo( "P3lon", Double.class, "P3 longitude" ),
-         new ColumnInfo( "P3lat", Double.class, "P3 latitude" ),
-         new ColumnInfo( "P4lon", Double.class, "P4 longitude" ),
-         new ColumnInfo( "P4lat", Double.class, "P4 latitude" ),
-
-         new ColumnInfo( "file_url",   String.class, "Access URL: all file" ),
-         new ColumnInfo( "cutout_url", String.class, "Access URL: cut file" ),
-         new ColumnInfo( "merge_url",  String.class, "Access URL: demosaicing files" ),
-
-         // subsurvey metadata
-         new ColumnInfo( "velocity_unit", String.class, "Velocity Unit" ),
-         new ColumnInfo( "survey",        String.class, "Survey name" ),
-         new ColumnInfo( "species",       String.class, "Species" ),
-         new ColumnInfo( "transition",    String.class, "Transition" ),
-         new ColumnInfo( "description",   String.class, "Descritpion" )
-      };
-
-      RowListStarTable astro = new RowListStarTable( colInfos );
+      RowListStarTable astro = new RowListStarTable( OBSCORE_COLINFO );
 
       for(Subsurvey subsurvey : ssurv)
       {