diff --git a/config/obs_kind_mod.f90 b/config/obs_kind_mod.f90
new file mode 100644
index 0000000000000000000000000000000000000000..9fa9f32dbdbb9fa2de4aff7663a5ee2be485b31b
--- /dev/null
+++ b/config/obs_kind_mod.f90
@@ -0,0 +1,2700 @@
+! DART software - Copyright UCAR. This open source software is provided
+! by UCAR, "as is", without charge, subject to all terms of use at
+! http://www.image.ucar.edu/DAReS/DART/DART_download
+
+!----------------------------------------------------------------------
+! WARNING!!  The file obs_kind_mod.f90 is AUTOGENERATED by the
+! 'preprocess' program.  Any changes made to this file will be
+! overwritten when it is regenerated.  To make permanent changes in
+! the code, edit DEFAULT_obs_kind_mod.F90, edit the observation
+! specific obs_def_xxx_mod.f90 files, or edit the xxx_quantity.f90 files.
+!----------------------------------------------------------------------
+
+! FIXME: this should change to obs_qty_mod - but that is a large footprint,
+! non-backwards compatible change.  almost every other module in the system
+! has a use statement for this module
+
+! module obs_qty_mod
+module obs_kind_mod
+
+use        types_mod, only : obstypelength, r8, MISSING_R8
+use    utilities_mod, only : error_handler, E_ERR, E_WARN,  &
+                             logfileunit, find_namelist_in_file, log_it,     &
+                             check_namelist_read, do_output, ascii_file_format, &
+                             string_to_real
+
+implicit none
+private
+
+public :: get_name_for_type_of_obs,       &
+          assimilate_this_type_of_obs,    &
+          evaluate_this_type_of_obs,      &
+          get_quantity_for_type_of_obs,   &
+          get_index_for_type_of_obs,      &
+          write_type_of_obs_table,        &
+          read_type_of_obs_table,         &
+          get_type_of_obs_from_menu,      &
+          map_type_of_obs_table,          &
+          use_ext_prior_this_type_of_obs, &
+          get_name_for_quantity,          &
+          get_index_for_quantity,         &
+          set_namevalue_for_quantity,     &
+          get_num_items_for_quantity,     &
+          get_itemname_for_quantity,      &
+          get_itemvalue_for_quantity,     &
+          has_bounds_for_quantity
+
+public :: get_num_types_of_obs, get_num_quantities
+
+!----------------------------------------------------------------------------
+! These lists are autogenerated by the 'preprocess' program.
+!
+! To add new observation types (e.g. AIRS_U_WIND_COMPONENT), edit the
+! obs_def_xxx_mod.f90 files and add the filename to the 'obs_type_files' variable
+! in the &preprocess_nml namelist of the model-specific work/input.nml file.
+! There can be multiple filenames listed for 'obs_type_files'.
+!
+! To add a new fundamental quantity (e.g. QTY_TEMPERATURE), first examine
+! all the xxx_quantities_mod.f90 files to be sure it does not already exist.
+! If it really does not, add QTY_xxx to the most appropriate file and
+! add xxx_quantities_mod.f90 to the 'quantity_files' variable in the &preprocess_nml
+! namelist.  There can be multiple filenames listed for 'quantity_files'.
+!
+! Add a descriptive comment along with expected units and any other
+! helpful information.  These quantities should be useable by any
+! model of the same system to allow interoperability and comparisons
+! between model results.
+!
+
+!---------------------------------------------------------------------------  
+                                                                              
+! Integer definitions for DART QUANTITIES
+                                                                              
+integer, parameter, public ::               QTY_STATE_VARIABLE =     0
+integer, parameter, public ::             QTY_U_WIND_COMPONENT =     1
+integer, parameter, public ::             QTY_V_WIND_COMPONENT =     2
+integer, parameter, public ::             QTY_SURFACE_PRESSURE =     3
+integer, parameter, public ::                  QTY_TEMPERATURE =     4
+integer, parameter, public ::            QTY_SPECIFIC_HUMIDITY =     5
+integer, parameter, public ::                     QTY_PRESSURE =     6
+integer, parameter, public ::            QTY_VERTICAL_VELOCITY =     7
+integer, parameter, public ::       QTY_RAINWATER_MIXING_RATIO =     8
+integer, parameter, public ::                     QTY_DEWPOINT =     9
+integer, parameter, public ::                      QTY_DENSITY =    10
+integer, parameter, public ::                  QTY_MEAN_SOURCE =    11
+integer, parameter, public ::                     QTY_VELOCITY =    12
+integer, parameter, public ::           QTY_RADAR_REFLECTIVITY =    13
+integer, parameter, public ::         QTY_GRAUPEL_MIXING_RATIO =    14
+integer, parameter, public ::            QTY_SNOW_MIXING_RATIO =    15
+integer, parameter, public ::                        QTY_GPSRO =    16
+integer, parameter, public ::           QTY_CLOUD_LIQUID_WATER =    17
+integer, parameter, public ::                    QTY_CLOUD_ICE =    18
+integer, parameter, public ::       QTY_CONDENSATIONAL_HEATING =    19
+integer, parameter, public ::           QTY_VAPOR_MIXING_RATIO =    20
+integer, parameter, public ::     QTY_ICE_NUMBER_CONCENTRATION =    21
+integer, parameter, public ::          QTY_GEOPOTENTIAL_HEIGHT =    22
+integer, parameter, public ::        QTY_POTENTIAL_TEMPERATURE =    23
+integer, parameter, public ::                QTY_SOIL_MOISTURE =    24
+integer, parameter, public ::                 QTY_SOURCE_PHASE =    25
+integer, parameter, public ::            QTY_SURFACE_ELEVATION =    26
+integer, parameter, public ::         QTY_GRAV_WAVE_DRAG_EFFIC =    27
+integer, parameter, public ::    QTY_GRAV_WAVE_STRESS_FRACTION =    28
+integer, parameter, public ::    QTY_POWER_WEIGHTED_FALL_SPEED =    29
+integer, parameter, public ::      QTY_CLOUDWATER_MIXING_RATIO =    30
+integer, parameter, public ::             QTY_ICE_MIXING_RATIO =    31
+integer, parameter, public ::      QTY_DROPLET_NUMBER_CONCENTR =    32
+integer, parameter, public ::         QTY_SNOW_NUMBER_CONCENTR =    33
+integer, parameter, public ::         QTY_RAIN_NUMBER_CONCENTR =    34
+integer, parameter, public ::      QTY_GRAUPEL_NUMBER_CONCENTR =    35
+integer, parameter, public ::               QTY_CLOUD_FRACTION =    36
+integer, parameter, public ::                 QTY_ICE_FRACTION =    37
+integer, parameter, public ::            QTY_RELATIVE_HUMIDITY =    38
+integer, parameter, public ::                 QTY_1D_PARAMETER =    39
+integer, parameter, public ::                 QTY_2D_PARAMETER =    40
+integer, parameter, public ::                 QTY_3D_PARAMETER =    41
+integer, parameter, public ::           QTY_ALTIMETER_TENDENCY =    42
+integer, parameter, public ::           QTY_PRECIPITABLE_WATER =    43
+integer, parameter, public ::     QTY_OCCULTATION_REFRACTIVITY =    44
+integer, parameter, public ::      QTY_OCCULTATION_EXCESSPHASE =    45
+integer, parameter, public ::             QTY_GEOMETRIC_HEIGHT =    46
+integer, parameter, public ::            QTY_INFRARED_RADIANCE =    47
+integer, parameter, public ::         QTY_INFRARED_BRIGHT_TEMP =    48
+integer, parameter, public ::                     QTY_LANDMASK =    49
+integer, parameter, public ::            QTY_EDGE_NORMAL_SPEED =    50
+integer, parameter, public ::                     QTY_CLW_PATH =    51
+integer, parameter, public ::                     QTY_CWP_PATH =    52
+integer, parameter, public ::                QTY_CWP_PATH_ZERO =    53
+integer, parameter, public ::           QTY_WIND_TURBINE_POWER =    54
+integer, parameter, public ::         QTY_2M_SPECIFIC_HUMIDITY =    55
+integer, parameter, public ::               QTY_2M_TEMPERATURE =    56
+integer, parameter, public ::         QTY_10M_U_WIND_COMPONENT =    57
+integer, parameter, public ::         QTY_10M_V_WIND_COMPONENT =    58
+integer, parameter, public ::             QTY_SKIN_TEMPERATURE =    59
+integer, parameter, public ::               QTY_NADIR_RADIANCE =    60
+integer, parameter, public ::        QTY_TRACER_1_MIXING_RATIO =    61
+integer, parameter, public ::        QTY_TRACER_2_MIXING_RATIO =    62
+integer, parameter, public ::         QTY_TRACER_CONCENTRATION =    63
+integer, parameter, public ::                QTY_TRACER_SOURCE =    64
+integer, parameter, public ::             QTY_SOIL_TEMPERATURE =    65
+integer, parameter, public ::            QTY_SOIL_LIQUID_WATER =    66
+integer, parameter, public ::           QTY_VERTICAL_VORTICITY =    67
+integer, parameter, public ::               QTY_SURFACE_ALBEDO =    68
+integer, parameter, public ::           QTY_SURFACE_EMISSIVITY =    69
+integer, parameter, public ::             QTY_DUST_OPACITY_7MB =    70
+integer, parameter, public ::                          QTY_THC =    71
+integer, parameter, public ::                   QTY_VORTEX_LON =    72
+integer, parameter, public ::                   QTY_VORTEX_LAT =    73
+integer, parameter, public ::                  QTY_VORTEX_PMIN =    74
+integer, parameter, public ::                  QTY_VORTEX_WMAX =    75
+integer, parameter, public ::               QTY_EXNER_FUNCTION =    76
+integer, parameter, public ::     QTY_TURBULENT_KINETIC_ENERGY =    77
+integer, parameter, public ::     QTY_TOTAL_PRECIPITABLE_WATER =    78
+integer, parameter, public ::                    QTY_VERTLEVEL =    79
+integer, parameter, public ::        QTY_MICROWAVE_BRIGHT_TEMP =    80
+integer, parameter, public ::           QTY_INTEGRATED_SULFATE =    81
+integer, parameter, public ::              QTY_INTEGRATED_DUST =    82
+integer, parameter, public ::             QTY_INTEGRATED_SMOKE =    83
+integer, parameter, public ::           QTY_INTEGRATED_SEASALT =    84
+integer, parameter, public ::               QTY_INTEGRATED_AOD =    85
+integer, parameter, public ::                          QTY_SO2 =    86
+integer, parameter, public ::                      QTY_SULFATE =    87
+integer, parameter, public ::                         QTY_DUST =    88
+integer, parameter, public ::                        QTY_SMOKE =    89
+integer, parameter, public ::                      QTY_SEASALT =    90
+integer, parameter, public ::            QTY_HAIL_MIXING_RATIO =    91
+integer, parameter, public ::         QTY_HAIL_NUMBER_CONCENTR =    92
+integer, parameter, public ::               QTY_GRAUPEL_VOLUME =    93
+integer, parameter, public ::                  QTY_HAIL_VOLUME =    94
+integer, parameter, public ::    QTY_DIFFERENTIAL_REFLECTIVITY =    95
+integer, parameter, public ::  QTY_SPECIFIC_DIFFERENTIAL_PHASE =    96
+integer, parameter, public ::                QTY_FLASH_RATE_2D =    97
+integer, parameter, public ::                     QTY_RADIANCE =    98
+integer, parameter, public ::       QTY_BRIGHTNESS_TEMPERATURE =    99
+integer, parameter, public ::   QTY_BI_DIRECTIONAL_REFLECTANCE =   100
+integer, parameter, public ::                 QTY_SURFACE_TYPE =   101
+integer, parameter, public ::                   QTY_WIND_FETCH =   102
+integer, parameter, public ::                   QTY_WATER_TYPE =   103
+integer, parameter, public ::                    QTY_FOAM_FRAC =   104
+integer, parameter, public ::                QTY_INSOLUBLE_AER =   105
+integer, parameter, public ::              QTY_H2O_SOLUBLE_AER =   106
+integer, parameter, public ::                         QTY_SOOT =   107
+integer, parameter, public ::                QTY_SEASALT_ACCUM =   108
+integer, parameter, public ::               QTY_SEASALT_COARSE =   109
+integer, parameter, public ::              QTY_MINERAL_NUCLEUS =   110
+integer, parameter, public ::                QTY_MINERAL_ACCUM =   111
+integer, parameter, public ::               QTY_MINERAL_COARSE =   112
+integer, parameter, public ::          QTY_MINERAL_TRANSPORTED =   113
+integer, parameter, public ::              QTY_SULPHATED_DROPS =   114
+integer, parameter, public ::                 QTY_VOLCANIC_ASH =   115
+integer, parameter, public ::             QTY_NEW_VOLCANIC_ASH =   116
+integer, parameter, public ::                   QTY_ASIAN_DUST =   117
+integer, parameter, public ::                 QTY_BLACK_CARBON =   118
+integer, parameter, public ::                    QTY_DUST_BIN1 =   119
+integer, parameter, public ::                    QTY_DUST_BIN2 =   120
+integer, parameter, public ::                    QTY_DUST_BIN3 =   121
+integer, parameter, public ::            QTY_AMMONIUM_SULPHATE =   122
+integer, parameter, public ::                QTY_SEA_SALT_BIN1 =   123
+integer, parameter, public ::                QTY_SEA_SALT_BIN2 =   124
+integer, parameter, public ::                QTY_SEA_SALT_BIN3 =   125
+integer, parameter, public ::   QTY_HYDROPHILIC_ORGANIC_MATTER =   126
+integer, parameter, public ::                QTY_CLOUDWATER_DE =   127
+integer, parameter, public ::                 QTY_CLOUD_ICE_DE =   128
+integer, parameter, public ::            QTY_COLUMN_CLOUD_FRAC =   129
+integer, parameter, public ::           QTY_CLOUD_TOP_PRESSURE =   130
+integer, parameter, public ::            QTY_ABSOLUTE_HUMIDITY =   131
+integer, parameter, public ::                           QTY_O3 =   132
+integer, parameter, public ::                          QTY_CO2 =   133
+integer, parameter, public ::                          QTY_N2O =   134
+integer, parameter, public ::                          QTY_CH4 =   135
+integer, parameter, public ::                           QTY_CO =   136
+integer, parameter, public ::                     QTY_SALINITY =   137
+integer, parameter, public ::               QTY_SNOWCOVER_FRAC =   138
+                                                                              
+                                                                              
+integer, parameter, public :: MAX_DEFINED_QUANTITIES =   138
+                                                                              
+!---------------------------------------------------------------------------  
+!---------------------------------------------------------------------------  
+                                                                              
+! Integer definitions for DART OBS TYPES
+                                                                              
+integer, parameter, public ::      RADIOSONDE_U_WIND_COMPONENT =     1
+integer, parameter, public ::      RADIOSONDE_V_WIND_COMPONENT =     2
+integer, parameter, public ::      RADIOSONDE_GEOPOTENTIAL_HGT =     3
+integer, parameter, public ::      RADIOSONDE_SURFACE_PRESSURE =     4
+integer, parameter, public ::           RADIOSONDE_TEMPERATURE =     5
+integer, parameter, public ::     RADIOSONDE_SPECIFIC_HUMIDITY =     6
+integer, parameter, public ::       DROPSONDE_U_WIND_COMPONENT =     7
+integer, parameter, public ::       DROPSONDE_V_WIND_COMPONENT =     8
+integer, parameter, public ::       DROPSONDE_SURFACE_PRESSURE =     9
+integer, parameter, public ::            DROPSONDE_TEMPERATURE =    10
+integer, parameter, public ::      DROPSONDE_SPECIFIC_HUMIDITY =    11
+integer, parameter, public ::        AIRCRAFT_U_WIND_COMPONENT =    12
+integer, parameter, public ::        AIRCRAFT_V_WIND_COMPONENT =    13
+integer, parameter, public ::             AIRCRAFT_TEMPERATURE =    14
+integer, parameter, public ::       AIRCRAFT_SPECIFIC_HUMIDITY =    15
+integer, parameter, public ::           ACARS_U_WIND_COMPONENT =    16
+integer, parameter, public ::           ACARS_V_WIND_COMPONENT =    17
+integer, parameter, public ::                ACARS_TEMPERATURE =    18
+integer, parameter, public ::          ACARS_SPECIFIC_HUMIDITY =    19
+integer, parameter, public ::      MARINE_SFC_U_WIND_COMPONENT =    20
+integer, parameter, public ::      MARINE_SFC_V_WIND_COMPONENT =    21
+integer, parameter, public ::           MARINE_SFC_TEMPERATURE =    22
+integer, parameter, public ::     MARINE_SFC_SPECIFIC_HUMIDITY =    23
+integer, parameter, public ::              MARINE_SFC_PRESSURE =    24
+integer, parameter, public ::        LAND_SFC_U_WIND_COMPONENT =    25
+integer, parameter, public ::        LAND_SFC_V_WIND_COMPONENT =    26
+integer, parameter, public ::             LAND_SFC_TEMPERATURE =    27
+integer, parameter, public ::       LAND_SFC_SPECIFIC_HUMIDITY =    28
+integer, parameter, public ::                LAND_SFC_PRESSURE =    29
+integer, parameter, public ::             SAT_U_WIND_COMPONENT =    30
+integer, parameter, public ::             SAT_V_WIND_COMPONENT =    31
+integer, parameter, public ::                 ATOV_TEMPERATURE =    32
+integer, parameter, public ::                 AIRS_TEMPERATURE =    33
+integer, parameter, public ::           AIRS_SPECIFIC_HUMIDITY =    34
+integer, parameter, public ::           GPS_PRECIPITABLE_WATER =    35
+integer, parameter, public ::          VADWND_U_WIND_COMPONENT =    36
+integer, parameter, public ::          VADWND_V_WIND_COMPONENT =    37
+integer, parameter, public ::       CIMMS_AMV_U_WIND_COMPONENT =    38
+integer, parameter, public ::       CIMMS_AMV_V_WIND_COMPONENT =    39
+integer, parameter, public ::          DOPPLER_RADIAL_VELOCITY =    40
+integer, parameter, public ::               RADAR_REFLECTIVITY =    41
+integer, parameter, public ::      RADAR_CLEARAIR_REFLECTIVITY =    42
+integer, parameter, public ::         PRECIPITATION_FALL_SPEED =    43
+integer, parameter, public ::            METAR_U_10_METER_WIND =    44
+integer, parameter, public ::            METAR_V_10_METER_WIND =    45
+integer, parameter, public ::        METAR_TEMPERATURE_2_METER =    46
+integer, parameter, public ::  METAR_SPECIFIC_HUMIDITY_2_METER =    47
+integer, parameter, public ::           METAR_SURFACE_PRESSURE =    48
+integer, parameter, public ::           METAR_POT_TEMP_2_METER =    49
+integer, parameter, public ::                         DEWPOINT =    50
+integer, parameter, public ::                 DEWPOINT_2_METER =    51
+integer, parameter, public ::                    BUOY_DEWPOINT =    52
+integer, parameter, public ::                    SHIP_DEWPOINT =    53
+integer, parameter, public ::                   SYNOP_DEWPOINT =    54
+integer, parameter, public ::                   AIREP_DEWPOINT =    55
+integer, parameter, public ::                   AMDAR_DEWPOINT =    56
+integer, parameter, public ::                   PILOT_DEWPOINT =    57
+integer, parameter, public ::                   BOGUS_DEWPOINT =    58
+integer, parameter, public ::                    AIRS_DEWPOINT =    59
+integer, parameter, public ::           METAR_DEWPOINT_2_METER =    60
+integer, parameter, public ::              RADIOSONDE_DEWPOINT =    61
+integer, parameter, public ::               DROPSONDE_DEWPOINT =    62
+integer, parameter, public ::                AIRCRAFT_DEWPOINT =    63
+integer, parameter, public ::                   ACARS_DEWPOINT =    64
+integer, parameter, public ::              MARINE_SFC_DEWPOINT =    65
+integer, parameter, public ::                LAND_SFC_DEWPOINT =    66
+integer, parameter, public ::     RADIOSONDE_RELATIVE_HUMIDITY =    67
+integer, parameter, public ::      DROPSONDE_RELATIVE_HUMIDITY =    68
+integer, parameter, public ::       AIRCRAFT_RELATIVE_HUMIDITY =    69
+integer, parameter, public ::          ACARS_RELATIVE_HUMIDITY =    70
+integer, parameter, public ::     MARINE_SFC_RELATIVE_HUMIDITY =    71
+integer, parameter, public ::       LAND_SFC_RELATIVE_HUMIDITY =    72
+integer, parameter, public ::  METAR_RELATIVE_HUMIDITY_2_METER =    73
+integer, parameter, public ::           AIRS_RELATIVE_HUMIDITY =    74
+integer, parameter, public ::        MESONET_RELATIVE_HUMIDITY =    75
+integer, parameter, public ::     RADIOSONDE_SURFACE_ALTIMETER =    76
+integer, parameter, public ::      DROPSONDE_SURFACE_ALTIMETER =    77
+integer, parameter, public ::             MARINE_SFC_ALTIMETER =    78
+integer, parameter, public ::               LAND_SFC_ALTIMETER =    79
+integer, parameter, public ::                  METAR_ALTIMETER =    80
+integer, parameter, public ::        MESONET_SURFACE_ALTIMETER =    81
+integer, parameter, public ::                      TEMPERATURE =    82
+integer, parameter, public ::                SPECIFIC_HUMIDITY =    83
+integer, parameter, public ::                         PRESSURE =    84
+integer, parameter, public ::               GPSRO_REFRACTIVITY =    85
+integer, parameter, public ::                       VORTEX_LAT =    86
+integer, parameter, public ::                       VORTEX_LON =    87
+integer, parameter, public ::                      VORTEX_PMIN =    88
+integer, parameter, public ::                      VORTEX_WMAX =    89
+integer, parameter, public ::            BUOY_U_WIND_COMPONENT =    90
+integer, parameter, public ::            BUOY_V_WIND_COMPONENT =    91
+integer, parameter, public ::            BUOY_SURFACE_PRESSURE =    92
+integer, parameter, public ::                 BUOY_TEMPERATURE =    93
+integer, parameter, public ::            SHIP_U_WIND_COMPONENT =    94
+integer, parameter, public ::            SHIP_V_WIND_COMPONENT =    95
+integer, parameter, public ::            SHIP_SURFACE_PRESSURE =    96
+integer, parameter, public ::                 SHIP_TEMPERATURE =    97
+integer, parameter, public ::           SYNOP_U_WIND_COMPONENT =    98
+integer, parameter, public ::           SYNOP_V_WIND_COMPONENT =    99
+integer, parameter, public ::           SYNOP_SURFACE_PRESSURE =   100
+integer, parameter, public ::          SYNOP_SPECIFIC_HUMIDITY =   101
+integer, parameter, public ::                SYNOP_TEMPERATURE =   102
+integer, parameter, public ::           AIREP_U_WIND_COMPONENT =   103
+integer, parameter, public ::           AIREP_V_WIND_COMPONENT =   104
+integer, parameter, public ::                   AIREP_PRESSURE =   105
+integer, parameter, public ::                AIREP_TEMPERATURE =   106
+integer, parameter, public ::           AMDAR_U_WIND_COMPONENT =   107
+integer, parameter, public ::           AMDAR_V_WIND_COMPONENT =   108
+integer, parameter, public ::                   AMDAR_PRESSURE =   109
+integer, parameter, public ::                AMDAR_TEMPERATURE =   110
+integer, parameter, public ::           PILOT_U_WIND_COMPONENT =   111
+integer, parameter, public ::           PILOT_V_WIND_COMPONENT =   112
+integer, parameter, public ::                   PILOT_PRESSURE =   113
+integer, parameter, public ::                PILOT_TEMPERATURE =   114
+integer, parameter, public ::           BOGUS_U_WIND_COMPONENT =   115
+integer, parameter, public ::           BOGUS_V_WIND_COMPONENT =   116
+integer, parameter, public ::                   BOGUS_PRESSURE =   117
+integer, parameter, public ::                BOGUS_TEMPERATURE =   118
+integer, parameter, public ::        PROFILER_U_WIND_COMPONENT =   119
+integer, parameter, public ::        PROFILER_V_WIND_COMPONENT =   120
+integer, parameter, public ::                PROFILER_PRESSURE =   121
+integer, parameter, public ::                  SATEM_THICKNESS =   122
+integer, parameter, public ::            NOAA_1_VTPR1_RADIANCE =   123
+integer, parameter, public ::            NOAA_2_VTPR1_RADIANCE =   124
+integer, parameter, public ::            NOAA_3_VTPR1_RADIANCE =   125
+integer, parameter, public ::            NOAA_4_VTPR1_RADIANCE =   126
+integer, parameter, public ::             NOAA_5_HIRS_RADIANCE =   127
+integer, parameter, public ::                    NOAA_5_MSU_TB =   128
+integer, parameter, public ::            NOAA_5_AVHRR_RADIANCE =   129
+integer, parameter, public ::             NOAA_6_HIRS_RADIANCE =   130
+integer, parameter, public ::                    NOAA_6_MSU_TB =   131
+integer, parameter, public ::            NOAA_6_AVHRR_RADIANCE =   132
+integer, parameter, public ::             NOAA_7_HIRS_RADIANCE =   133
+integer, parameter, public ::                    NOAA_7_MSU_TB =   134
+integer, parameter, public ::            NOAA_7_AVHRR_RADIANCE =   135
+integer, parameter, public ::             NOAA_8_HIRS_RADIANCE =   136
+integer, parameter, public ::                    NOAA_8_MSU_TB =   137
+integer, parameter, public ::            NOAA_8_AVHRR_RADIANCE =   138
+integer, parameter, public ::             NOAA_9_HIRS_RADIANCE =   139
+integer, parameter, public ::                    NOAA_9_MSU_TB =   140
+integer, parameter, public ::            NOAA_9_AVHRR_RADIANCE =   141
+integer, parameter, public ::            NOAA_10_HIRS_RADIANCE =   142
+integer, parameter, public ::                   NOAA_10_MSU_TB =   143
+integer, parameter, public ::           NOAA_10_AVHRR_RADIANCE =   144
+integer, parameter, public ::            NOAA_11_HIRS_RADIANCE =   145
+integer, parameter, public ::                   NOAA_11_MSU_TB =   146
+integer, parameter, public ::           NOAA_11_AVHRR_RADIANCE =   147
+integer, parameter, public ::            NOAA_12_HIRS_RADIANCE =   148
+integer, parameter, public ::                   NOAA_12_MSU_TB =   149
+integer, parameter, public ::           NOAA_12_AVHRR_RADIANCE =   150
+integer, parameter, public ::           NOAA_13_AVHRR_RADIANCE =   151
+integer, parameter, public ::            NOAA_14_HIRS_RADIANCE =   152
+integer, parameter, public ::                   NOAA_14_MSU_TB =   153
+integer, parameter, public ::           NOAA_14_AVHRR_RADIANCE =   154
+integer, parameter, public ::            NOAA_15_HIRS_RADIANCE =   155
+integer, parameter, public ::                 NOAA_15_AMSUA_TB =   156
+integer, parameter, public ::                 NOAA_15_AMSUB_TB =   157
+integer, parameter, public ::           NOAA_15_AVHRR_RADIANCE =   158
+integer, parameter, public ::            NOAA_16_HIRS_RADIANCE =   159
+integer, parameter, public ::                 NOAA_16_AMSUA_TB =   160
+integer, parameter, public ::                 NOAA_16_AMSUB_TB =   161
+integer, parameter, public ::           NOAA_16_AVHRR_RADIANCE =   162
+integer, parameter, public ::            NOAA_17_HIRS_RADIANCE =   163
+integer, parameter, public ::                 NOAA_17_AMSUA_TB =   164
+integer, parameter, public ::                 NOAA_17_AMSUB_TB =   165
+integer, parameter, public ::           NOAA_17_AVHRR_RADIANCE =   166
+integer, parameter, public ::            NOAA_18_HIRS_RADIANCE =   167
+integer, parameter, public ::                 NOAA_18_AMSUA_TB =   168
+integer, parameter, public ::           NOAA_18_AVHRR_RADIANCE =   169
+integer, parameter, public ::                   NOAA_18_MHS_TB =   170
+integer, parameter, public ::            NOAA_19_HIRS_RADIANCE =   171
+integer, parameter, public ::                 NOAA_19_AMSUA_TB =   172
+integer, parameter, public ::           NOAA_19_AVHRR_RADIANCE =   173
+integer, parameter, public ::                   NOAA_19_MHS_TB =   174
+integer, parameter, public ::                  NOAA_20_ATMS_TB =   175
+integer, parameter, public ::           NOAA_20_VIIRS_RADIANCE =   176
+integer, parameter, public ::                   DMSP_8_SSMI_TB =   177
+integer, parameter, public ::                   DMSP_9_SSMI_TB =   178
+integer, parameter, public ::                  DMSP_10_SSMI_TB =   179
+integer, parameter, public ::                  DMSP_11_SSMI_TB =   180
+integer, parameter, public ::                 DMSP_11_SSMT2_TB =   181
+integer, parameter, public ::                  DMSP_12_SSMI_TB =   182
+integer, parameter, public ::                 DMSP_12_SSMT2_TB =   183
+integer, parameter, public ::                  DMSP_13_SSMI_TB =   184
+integer, parameter, public ::                  DMSP_14_SSMI_TB =   185
+integer, parameter, public ::                 DMSP_14_SSMT2_TB =   186
+integer, parameter, public ::                  DMSP_15_SSMI_TB =   187
+integer, parameter, public ::                 DMSP_15_SSMT2_TB =   188
+integer, parameter, public ::                 DMSP_16_SSMIS_TB =   189
+integer, parameter, public ::                 DMSP_17_SSMIS_TB =   190
+integer, parameter, public ::                 DMSP_18_SSMIS_TB =   191
+integer, parameter, public ::                 DMSP_19_SSMIS_TB =   192
+integer, parameter, public ::        METEOSAT_1_MVIRI_RADIANCE =   193
+integer, parameter, public ::        METEOSAT_2_MVIRI_RADIANCE =   194
+integer, parameter, public ::        METEOSAT_3_MVIRI_RADIANCE =   195
+integer, parameter, public ::        METEOSAT_4_MVIRI_RADIANCE =   196
+integer, parameter, public ::        METEOSAT_5_MVIRI_RADIANCE =   197
+integer, parameter, public ::        METEOSAT_6_MVIRI_RADIANCE =   198
+integer, parameter, public ::        METEOSAT_7_MVIRI_RADIANCE =   199
+integer, parameter, public ::          GOES_4_SOUNDER_RADIANCE =   200
+integer, parameter, public ::          GOES_5_SOUNDER_RADIANCE =   201
+integer, parameter, public ::          GOES_6_SOUNDER_RADIANCE =   202
+integer, parameter, public ::          GOES_7_SOUNDER_RADIANCE =   203
+integer, parameter, public ::           GOES_8_IMAGER_RADIANCE =   204
+integer, parameter, public ::          GOES_8_SOUNDER_RADIANCE =   205
+integer, parameter, public ::           GOES_9_IMAGER_RADIANCE =   206
+integer, parameter, public ::          GOES_9_SOUNDER_RADIANCE =   207
+integer, parameter, public ::          GOES_10_IMAGER_RADIANCE =   208
+integer, parameter, public ::         GOES_10_SOUNDER_RADIANCE =   209
+integer, parameter, public ::          GOES_11_IMAGER_RADIANCE =   210
+integer, parameter, public ::         GOES_11_SOUNDER_RADIANCE =   211
+integer, parameter, public ::          GOES_12_IMAGER_RADIANCE =   212
+integer, parameter, public ::         GOES_12_SOUNDER_RADIANCE =   213
+integer, parameter, public ::          GOES_13_IMAGER_RADIANCE =   214
+integer, parameter, public ::         GOES_13_SOUNDER_RADIANCE =   215
+integer, parameter, public ::          GOES_14_IMAGER_RADIANCE =   216
+integer, parameter, public ::         GOES_14_SOUNDER_RADIANCE =   217
+integer, parameter, public ::          GOES_15_IMAGER_RADIANCE =   218
+integer, parameter, public ::         GOES_15_SOUNDER_RADIANCE =   219
+integer, parameter, public ::             GOES_16_ABI_RADIANCE =   220
+integer, parameter, public ::             GOES_17_ABI_RADIANCE =   221
+integer, parameter, public ::             GOES_18_ABI_RADIANCE =   222
+integer, parameter, public ::             GOES_19_ABI_RADIANCE =   223
+integer, parameter, public ::            GMS_1_IMAGER_RADIANCE =   224
+integer, parameter, public ::            GMS_2_IMAGER_RADIANCE =   225
+integer, parameter, public ::            GMS_3_IMAGER_RADIANCE =   226
+integer, parameter, public ::            GMS_4_IMAGER_RADIANCE =   227
+integer, parameter, public ::            GMS_5_IMAGER_RADIANCE =   228
+integer, parameter, public ::             FY2_2_VISSR_RADIANCE =   229
+integer, parameter, public ::             FY2_3_VISSR_RADIANCE =   230
+integer, parameter, public ::             FY2_4_VISSR_RADIANCE =   231
+integer, parameter, public ::             FY2_5_VISSR_RADIANCE =   232
+integer, parameter, public ::             FY2_7_VISSR_RADIANCE =   233
+integer, parameter, public ::                    TRMM_1_TMI_TB =   234
+integer, parameter, public ::              ERS_1_ATSR_RADIANCE =   235
+integer, parameter, public ::                     ERS_1_MWR_TB =   236
+integer, parameter, public ::              ERS_2_ATSR_RADIANCE =   237
+integer, parameter, public ::                     ERS_2_MWR_TB =   238
+integer, parameter, public ::             EOS_1_MODIS_RADIANCE =   239
+integer, parameter, public ::             EOS_1_ASTER_RADIANCE =   240
+integer, parameter, public ::                   EOS_2_AMSUA_TB =   241
+integer, parameter, public ::              EOS_2_AIRS_RADIANCE =   242
+integer, parameter, public ::                     EOS_2_HSB_TB =   243
+integer, parameter, public ::             EOS_2_MODIS_RADIANCE =   244
+integer, parameter, public ::                   EOS_2_AMSRE_TB =   245
+integer, parameter, public ::            METOP_1_HIRS_RADIANCE =   246
+integer, parameter, public ::                 METOP_1_AMSUA_TB =   247
+integer, parameter, public ::           METOP_1_AVHRR_RADIANCE =   248
+integer, parameter, public ::                   METOP_1_MHS_TB =   249
+integer, parameter, public ::            METOP_2_HIRS_RADIANCE =   250
+integer, parameter, public ::                 METOP_2_AMSUA_TB =   251
+integer, parameter, public ::           METOP_2_AVHRR_RADIANCE =   252
+integer, parameter, public ::                   METOP_2_MHS_TB =   253
+integer, parameter, public ::           METOP_3_AVHRR_RADIANCE =   254
+integer, parameter, public ::          ENVISAT_1_ATSR_RADIANCE =   255
+integer, parameter, public ::                 ENVISAT_1_MWR_TB =   256
+integer, parameter, public ::            MSG_1_SEVIRI_RADIANCE =   257
+integer, parameter, public ::            MSG_2_SEVIRI_RADIANCE =   258
+integer, parameter, public ::            MSG_3_SEVIRI_RADIANCE =   259
+integer, parameter, public ::            MSG_4_SEVIRI_RADIANCE =   260
+integer, parameter, public ::                  MSG_4_SEVIRI_TB =   261
+integer, parameter, public ::                MSG_4_SEVIRI_BDRF =   262
+integer, parameter, public ::             FY1_3_MVISR_RADIANCE =   263
+integer, parameter, public ::             FY1_4_MVISR_RADIANCE =   264
+integer, parameter, public ::          MTSAT_1_IMAGER_RADIANCE =   265
+integer, parameter, public ::          MTSAT_2_IMAGER_RADIANCE =   266
+integer, parameter, public ::            CORIOLIS_1_WINDSAT_TB =   267
+integer, parameter, public ::                   JPSS_0_ATMS_TB =   268
+integer, parameter, public ::            JPSS_0_VIIRS_RADIANCE =   269
+integer, parameter, public ::       SENTINEL3_1_SLSTR_RADIANCE =   270
+integer, parameter, public ::       SENTINEL3_2_SLSTR_RADIANCE =   271
+integer, parameter, public ::              MEGHATR_1_SAPHIR_TB =   272
+integer, parameter, public ::              MEGHATR_1_MADRAS_TB =   273
+integer, parameter, public ::                    FY3_1_MWTS_TB =   274
+integer, parameter, public ::                    FY3_1_MWHS_TB =   275
+integer, parameter, public ::              FY3_1_IRAS_RADIANCE =   276
+integer, parameter, public ::                    FY3_1_MWRI_TB =   277
+integer, parameter, public ::                    FY3_2_MWTS_TB =   278
+integer, parameter, public ::                    FY3_2_MWHS_TB =   279
+integer, parameter, public ::                    FY3_2_MWRI_TB =   280
+integer, parameter, public ::                    FY3_3_MWRI_TB =   281
+integer, parameter, public ::                   FY3_3_MWTS2_TB =   282
+integer, parameter, public ::                   FY3_3_MWHS2_TB =   283
+integer, parameter, public ::            FY3_3_MERSI1_RADIANCE =   284
+integer, parameter, public ::                    FY3_4_MWRI_TB =   285
+integer, parameter, public ::                   FY3_4_MWTS2_TB =   286
+integer, parameter, public ::                   FY3_4_MWHS2_TB =   287
+integer, parameter, public ::            FY3_4_MERSI2_RADIANCE =   288
+integer, parameter, public ::               COMS_1_MI_RADIANCE =   289
+integer, parameter, public ::        METEOR_M_1_MSUMR_RADIANCE =   290
+integer, parameter, public ::        METEOR_M_2_MSUMR_RADIANCE =   291
+integer, parameter, public ::            METEOR_M_2_MTVZAGY_TB =   292
+integer, parameter, public ::           CALIPSO_1_IIR_RADIANCE =   293
+integer, parameter, public ::                GCOM_W_1_AMSR2_TB =   294
+integer, parameter, public ::           NIMBUS_3_MRIR_RADIANCE =   295
+integer, parameter, public ::           NIMBUS_4_THIR_RADIANCE =   296
+integer, parameter, public ::           NIMBUS_5_THIR_RADIANCE =   297
+integer, parameter, public ::           NIMBUS_6_HIRS_RADIANCE =   298
+integer, parameter, public ::                NIMBUS_6_SCAMS_TB =   299
+integer, parameter, public ::           NIMBUS_6_THIR_RADIANCE =   300
+integer, parameter, public ::                 NIMBUS_7_SMMR_TB =   301
+integer, parameter, public ::           NIMBUS_7_THIR_RADIANCE =   302
+integer, parameter, public ::          HIMAWARI_8_AHI_RADIANCE =   303
+integer, parameter, public ::          HIMAWARI_9_AHI_RADIANCE =   304
+integer, parameter, public ::               MTG_1_FCI_RADIANCE =   305
+integer, parameter, public ::                SARAL_1_ALTIKA_TB =   306
+integer, parameter, public ::                 METOPSG_1_ICI_TB =   307
+integer, parameter, public ::      METOPSG_1_METIMAGE_RADIANCE =   308
+integer, parameter, public ::                 METOPSG_1_MWS_TB =   309
+integer, parameter, public ::                 METOPSG_1_MWI_TB =   310
+integer, parameter, public ::            LANDSAT_4_TM_RADIANCE =   311
+integer, parameter, public ::            LANDSAT_5_TM_RADIANCE =   312
+integer, parameter, public ::            LANDSAT_7_TM_RADIANCE =   313
+integer, parameter, public ::          LANDSAT_8_TIRS_RADIANCE =   314
+integer, parameter, public ::                   JASON_2_AMR_TB =   315
+integer, parameter, public ::                     GPM_1_GMI_TB =   316
+integer, parameter, public ::                     GPM_1_DPR_TB =   317
+integer, parameter, public ::         INSAT3_4_IMAGER_RADIANCE =   318
+integer, parameter, public ::        INSAT3_4_SOUNDER_RADIANCE =   319
+integer, parameter, public ::         INSAT3_5_IMAGER_RADIANCE =   320
+integer, parameter, public ::        INSAT3_5_SOUNDER_RADIANCE =   321
+integer, parameter, public ::        TICFIRE_1_MBFIRI_RADIANCE =   322
+integer, parameter, public ::          ISS_1_ECOSTRES_RADIANCE =   323
+integer, parameter, public ::             HJ1_2_IRMSS_RADIANCE =   324
+integer, parameter, public ::         GKOMPSAT2_1_AMI_RADIANCE =   325
+integer, parameter, public ::           GCOM_C_1_SGLI_RADIANCE =   326
+integer, parameter, public ::                  SMOS_1_MIRAS_TB =   327
+integer, parameter, public ::                   ORS_6_COWVR_TB =   328
+integer, parameter, public ::              FY4_1_AGRI_RADIANCE =   329
+integer, parameter, public ::             TROPICS_0_TROPICS_TB =   330
+integer, parameter, public ::              GF5_1_VIMS_RADIANCE =   331
+integer, parameter, public ::                    HY2_1_MWRI_TB =   332
+integer, parameter, public ::                CLOUDSAT_1_CPR_TB =   333
+                                                                              
+                                                                              
+integer, parameter, public :: MAX_DEFINED_TYPES_OF_OBS =   333
+                                                                              
+!---------------------------------------------------------------------------  
+
+!----------------------------------------------------------------------------
+
+character(len=*), parameter :: source = 'DEFAULT_obs_def_mod.F90'
+
+! integer, parameters: max_defined_types_of_obs, max_defined_quantities
+! generated and inserted by preprocess.
+
+logical, save :: module_initialized = .false.
+
+character(len=512) :: msg_string, msg_string1
+
+! @todo FIXME: what is the right len for a units and
+! other name/value pair strings?
+integer, parameter :: namelen  = 256
+integer, parameter :: valuelen = 256
+
+integer :: num_types_assimilate, num_types_evaluate
+integer :: num_types_use_precomputed_FOs
+
+! Map from values of type in a TOC (e.g. the start of an obs_seq file)
+!  to the type index in this module.
+! Initially, these are undefined and have values -1.
+! In each entry, the toc_type_index value is the index in the table of
+! contents (usually an input obs_sequence file), and the mod_type_index
+! is the current type value in this module.
+
+type toc_mod_type_map_type
+   integer :: toc_type_index(max_defined_types_of_obs) = -1
+   integer :: mod_type_index(max_defined_types_of_obs) = -1
+end type toc_mod_type_map_type
+
+type(toc_mod_type_map_type) :: toc_mod_type_map
+
+! old:
+!integer :: map(2, max_defined_types_of_obs) = -1
+
+! An observation type links together a unique integer index,
+! a character string which matches the integer parameter name,
+! what quantity this type is associated with,
+! and whether observations of this type should be assimilated,
+! evaluated, or neither.
+!
+! Name lengths are limited to 32 characters by compiler
+! restrictions on the length of parameter identifiers.
+type obs_type_type
+   integer              :: index = -1
+   character(len=obstypelength) :: name = ''
+   integer              :: quantity = -1
+   logical              :: assimilate = .false.
+   logical              :: evaluate = .false.
+   logical              :: use_precomputed_FO = .false.
+end type obs_type_type
+
+type(obs_type_type) :: obs_type_info(max_defined_types_of_obs)
+
+! An observation quantity type stores a unique integer index,
+! a character string which matches the integer parameter name,
+! and name/value pairs of metadata for this quantity.
+
+integer, parameter :: MAX_ITEMS = 50
+
+type obs_qty_type
+   integer                      :: index = -1
+   character(len=obstypelength) :: name = ''
+   integer                      :: nitems = 0
+   character(len=namelen)       :: itemname(MAX_ITEMS)  = ''
+   character(len=valuelen)      :: itemvalue(MAX_ITEMS) = ''
+end type obs_qty_type
+
+! the raw quantity uses index 0, so this needs to match.
+type(obs_qty_type) :: obs_qty_info(0:max_defined_quantities)
+
+
+! Namelist array to turn on any requested observation types
+character(len=obstypelength) :: assimilate_these_obs_types(max_defined_types_of_obs) = 'null'
+character(len=obstypelength) :: evaluate_these_obs_types(max_defined_types_of_obs) = 'null'
+character(len=obstypelength) :: use_precomputed_FOs_these_obs_types(max_defined_types_of_obs) = 'null'
+
+
+! namelist /obs_qty_nml/ ...
+namelist /obs_kind_nml/ assimilate_these_obs_types, &
+                        evaluate_these_obs_types, &
+                        use_precomputed_FOs_these_obs_types
+
+contains
+
+!----------------------------------------------------------------------------
+
+subroutine initialize_module()
+
+integer :: iunit, io, i, j
+character(len = 169) :: err_string
+character(len=*), parameter :: routine = 'initialize_module'
+
+module_initialized = .true.
+
+! Read the namelist entry
+call find_namelist_in_file("input.nml", "obs_kind_nml", iunit)
+read(iunit, nml = obs_kind_nml, iostat = io)
+call check_namelist_read(iunit, io, "obs_kind_nml")
+
+
+!----------------------------------------------------------------------------
+
+! These lists are autogenerated by the 'preprocess' program.
+!
+! To add quantities, edit the appropriate xxx_quantity_mod.f90 files
+! and then add them to the 'quantity_files' variable in the
+! &preprocess_nml namelist in the input.nml file in the current directory.
+!
+! To add types, edit the obs_def_xxx_mod.f90 files and then add them
+! to the 'obs_type_files' variable of the &preprocess_nml namelist
+! in the input.nml file in the current directory.
+!
+! Associate integer parameter names with a string of the same name.
+! Also associate types of obs with the quantity.
+
+ obs_qty_info(           0 )%index =            0
+ obs_qty_info(           0 )%name = "QTY_STATE_VARIABLE"
+ obs_qty_info(           0 )%nitems =            1
+ obs_qty_info(           0 )%itemname(           1 ) = "desc"
+ obs_qty_info(           0 )%itemvalue(           1 ) = "basic item in a state"
+                                                                              
+ obs_qty_info(           1 )%index =            1
+ obs_qty_info(           1 )%name = "QTY_U_WIND_COMPONENT"
+ obs_qty_info(           1 )%nitems =            0
+                                                                              
+ obs_qty_info(           2 )%index =            2
+ obs_qty_info(           2 )%name = "QTY_V_WIND_COMPONENT"
+ obs_qty_info(           2 )%nitems =            0
+                                                                              
+ obs_qty_info(           3 )%index =            3
+ obs_qty_info(           3 )%name = "QTY_SURFACE_PRESSURE"
+ obs_qty_info(           3 )%nitems =            0
+                                                                              
+ obs_qty_info(           4 )%index =            4
+ obs_qty_info(           4 )%name = "QTY_TEMPERATURE"
+ obs_qty_info(           4 )%nitems =            0
+                                                                              
+ obs_qty_info(           5 )%index =            5
+ obs_qty_info(           5 )%name = "QTY_SPECIFIC_HUMIDITY"
+ obs_qty_info(           5 )%nitems =            0
+                                                                              
+ obs_qty_info(           6 )%index =            6
+ obs_qty_info(           6 )%name = "QTY_PRESSURE"
+ obs_qty_info(           6 )%nitems =            0
+                                                                              
+ obs_qty_info(           7 )%index =            7
+ obs_qty_info(           7 )%name = "QTY_VERTICAL_VELOCITY"
+ obs_qty_info(           7 )%nitems =            0
+                                                                              
+ obs_qty_info(           8 )%index =            8
+ obs_qty_info(           8 )%name = "QTY_RAINWATER_MIXING_RATIO"
+ obs_qty_info(           8 )%nitems =            0
+                                                                              
+ obs_qty_info(           9 )%index =            9
+ obs_qty_info(           9 )%name = "QTY_DEWPOINT"
+ obs_qty_info(           9 )%nitems =            0
+                                                                              
+ obs_qty_info(          10 )%index =           10
+ obs_qty_info(          10 )%name = "QTY_DENSITY"
+ obs_qty_info(          10 )%nitems =            0
+                                                                              
+ obs_qty_info(          11 )%index =           11
+ obs_qty_info(          11 )%name = "QTY_MEAN_SOURCE"
+ obs_qty_info(          11 )%nitems =            0
+                                                                              
+ obs_qty_info(          12 )%index =           12
+ obs_qty_info(          12 )%name = "QTY_VELOCITY"
+ obs_qty_info(          12 )%nitems =            0
+                                                                              
+ obs_qty_info(          13 )%index =           13
+ obs_qty_info(          13 )%name = "QTY_RADAR_REFLECTIVITY"
+ obs_qty_info(          13 )%nitems =            0
+                                                                              
+ obs_qty_info(          14 )%index =           14
+ obs_qty_info(          14 )%name = "QTY_GRAUPEL_MIXING_RATIO"
+ obs_qty_info(          14 )%nitems =            0
+                                                                              
+ obs_qty_info(          15 )%index =           15
+ obs_qty_info(          15 )%name = "QTY_SNOW_MIXING_RATIO"
+ obs_qty_info(          15 )%nitems =            0
+                                                                              
+ obs_qty_info(          16 )%index =           16
+ obs_qty_info(          16 )%name = "QTY_GPSRO"
+ obs_qty_info(          16 )%nitems =            0
+                                                                              
+ obs_qty_info(          17 )%index =           17
+ obs_qty_info(          17 )%name = "QTY_CLOUD_LIQUID_WATER"
+ obs_qty_info(          17 )%nitems =            0
+                                                                              
+ obs_qty_info(          18 )%index =           18
+ obs_qty_info(          18 )%name = "QTY_CLOUD_ICE"
+ obs_qty_info(          18 )%nitems =            0
+                                                                              
+ obs_qty_info(          19 )%index =           19
+ obs_qty_info(          19 )%name = "QTY_CONDENSATIONAL_HEATING"
+ obs_qty_info(          19 )%nitems =            0
+                                                                              
+ obs_qty_info(          20 )%index =           20
+ obs_qty_info(          20 )%name = "QTY_VAPOR_MIXING_RATIO"
+ obs_qty_info(          20 )%nitems =            0
+                                                                              
+ obs_qty_info(          21 )%index =           21
+ obs_qty_info(          21 )%name = "QTY_ICE_NUMBER_CONCENTRATION"
+ obs_qty_info(          21 )%nitems =            0
+                                                                              
+ obs_qty_info(          22 )%index =           22
+ obs_qty_info(          22 )%name = "QTY_GEOPOTENTIAL_HEIGHT"
+ obs_qty_info(          22 )%nitems =            0
+                                                                              
+ obs_qty_info(          23 )%index =           23
+ obs_qty_info(          23 )%name = "QTY_POTENTIAL_TEMPERATURE"
+ obs_qty_info(          23 )%nitems =            0
+                                                                              
+ obs_qty_info(          24 )%index =           24
+ obs_qty_info(          24 )%name = "QTY_SOIL_MOISTURE"
+ obs_qty_info(          24 )%nitems =            0
+                                                                              
+ obs_qty_info(          25 )%index =           25
+ obs_qty_info(          25 )%name = "QTY_SOURCE_PHASE"
+ obs_qty_info(          25 )%nitems =            0
+                                                                              
+ obs_qty_info(          26 )%index =           26
+ obs_qty_info(          26 )%name = "QTY_SURFACE_ELEVATION"
+ obs_qty_info(          26 )%nitems =            0
+                                                                              
+ obs_qty_info(          27 )%index =           27
+ obs_qty_info(          27 )%name = "QTY_GRAV_WAVE_DRAG_EFFIC"
+ obs_qty_info(          27 )%nitems =            0
+                                                                              
+ obs_qty_info(          28 )%index =           28
+ obs_qty_info(          28 )%name = "QTY_GRAV_WAVE_STRESS_FRACTION"
+ obs_qty_info(          28 )%nitems =            0
+                                                                              
+ obs_qty_info(          29 )%index =           29
+ obs_qty_info(          29 )%name = "QTY_POWER_WEIGHTED_FALL_SPEED"
+ obs_qty_info(          29 )%nitems =            0
+                                                                              
+ obs_qty_info(          30 )%index =           30
+ obs_qty_info(          30 )%name = "QTY_CLOUDWATER_MIXING_RATIO"
+ obs_qty_info(          30 )%nitems =            0
+                                                                              
+ obs_qty_info(          31 )%index =           31
+ obs_qty_info(          31 )%name = "QTY_ICE_MIXING_RATIO"
+ obs_qty_info(          31 )%nitems =            0
+                                                                              
+ obs_qty_info(          32 )%index =           32
+ obs_qty_info(          32 )%name = "QTY_DROPLET_NUMBER_CONCENTR"
+ obs_qty_info(          32 )%nitems =            0
+                                                                              
+ obs_qty_info(          33 )%index =           33
+ obs_qty_info(          33 )%name = "QTY_SNOW_NUMBER_CONCENTR"
+ obs_qty_info(          33 )%nitems =            0
+                                                                              
+ obs_qty_info(          34 )%index =           34
+ obs_qty_info(          34 )%name = "QTY_RAIN_NUMBER_CONCENTR"
+ obs_qty_info(          34 )%nitems =            0
+                                                                              
+ obs_qty_info(          35 )%index =           35
+ obs_qty_info(          35 )%name = "QTY_GRAUPEL_NUMBER_CONCENTR"
+ obs_qty_info(          35 )%nitems =            0
+                                                                              
+ obs_qty_info(          36 )%index =           36
+ obs_qty_info(          36 )%name = "QTY_CLOUD_FRACTION"
+ obs_qty_info(          36 )%nitems =            0
+                                                                              
+ obs_qty_info(          37 )%index =           37
+ obs_qty_info(          37 )%name = "QTY_ICE_FRACTION"
+ obs_qty_info(          37 )%nitems =            0
+                                                                              
+ obs_qty_info(          38 )%index =           38
+ obs_qty_info(          38 )%name = "QTY_RELATIVE_HUMIDITY"
+ obs_qty_info(          38 )%nitems =            0
+                                                                              
+ obs_qty_info(          39 )%index =           39
+ obs_qty_info(          39 )%name = "QTY_1D_PARAMETER"
+ obs_qty_info(          39 )%nitems =            0
+                                                                              
+ obs_qty_info(          40 )%index =           40
+ obs_qty_info(          40 )%name = "QTY_2D_PARAMETER"
+ obs_qty_info(          40 )%nitems =            0
+                                                                              
+ obs_qty_info(          41 )%index =           41
+ obs_qty_info(          41 )%name = "QTY_3D_PARAMETER"
+ obs_qty_info(          41 )%nitems =            0
+                                                                              
+ obs_qty_info(          42 )%index =           42
+ obs_qty_info(          42 )%name = "QTY_ALTIMETER_TENDENCY"
+ obs_qty_info(          42 )%nitems =            0
+                                                                              
+ obs_qty_info(          43 )%index =           43
+ obs_qty_info(          43 )%name = "QTY_PRECIPITABLE_WATER"
+ obs_qty_info(          43 )%nitems =            0
+                                                                              
+ obs_qty_info(          44 )%index =           44
+ obs_qty_info(          44 )%name = "QTY_OCCULTATION_REFRACTIVITY"
+ obs_qty_info(          44 )%nitems =            0
+                                                                              
+ obs_qty_info(          45 )%index =           45
+ obs_qty_info(          45 )%name = "QTY_OCCULTATION_EXCESSPHASE"
+ obs_qty_info(          45 )%nitems =            0
+                                                                              
+ obs_qty_info(          46 )%index =           46
+ obs_qty_info(          46 )%name = "QTY_GEOMETRIC_HEIGHT"
+ obs_qty_info(          46 )%nitems =            0
+                                                                              
+ obs_qty_info(          47 )%index =           47
+ obs_qty_info(          47 )%name = "QTY_INFRARED_RADIANCE"
+ obs_qty_info(          47 )%nitems =            0
+                                                                              
+ obs_qty_info(          48 )%index =           48
+ obs_qty_info(          48 )%name = "QTY_INFRARED_BRIGHT_TEMP"
+ obs_qty_info(          48 )%nitems =            0
+                                                                              
+ obs_qty_info(          49 )%index =           49
+ obs_qty_info(          49 )%name = "QTY_LANDMASK"
+ obs_qty_info(          49 )%nitems =            0
+                                                                              
+ obs_qty_info(          50 )%index =           50
+ obs_qty_info(          50 )%name = "QTY_EDGE_NORMAL_SPEED"
+ obs_qty_info(          50 )%nitems =            0
+                                                                              
+ obs_qty_info(          51 )%index =           51
+ obs_qty_info(          51 )%name = "QTY_CLW_PATH"
+ obs_qty_info(          51 )%nitems =            0
+                                                                              
+ obs_qty_info(          52 )%index =           52
+ obs_qty_info(          52 )%name = "QTY_CWP_PATH"
+ obs_qty_info(          52 )%nitems =            0
+                                                                              
+ obs_qty_info(          53 )%index =           53
+ obs_qty_info(          53 )%name = "QTY_CWP_PATH_ZERO"
+ obs_qty_info(          53 )%nitems =            0
+                                                                              
+ obs_qty_info(          54 )%index =           54
+ obs_qty_info(          54 )%name = "QTY_WIND_TURBINE_POWER"
+ obs_qty_info(          54 )%nitems =            0
+                                                                              
+ obs_qty_info(          55 )%index =           55
+ obs_qty_info(          55 )%name = "QTY_2M_SPECIFIC_HUMIDITY"
+ obs_qty_info(          55 )%nitems =            0
+                                                                              
+ obs_qty_info(          56 )%index =           56
+ obs_qty_info(          56 )%name = "QTY_2M_TEMPERATURE"
+ obs_qty_info(          56 )%nitems =            0
+                                                                              
+ obs_qty_info(          57 )%index =           57
+ obs_qty_info(          57 )%name = "QTY_10M_U_WIND_COMPONENT"
+ obs_qty_info(          57 )%nitems =            0
+                                                                              
+ obs_qty_info(          58 )%index =           58
+ obs_qty_info(          58 )%name = "QTY_10M_V_WIND_COMPONENT"
+ obs_qty_info(          58 )%nitems =            0
+                                                                              
+ obs_qty_info(          59 )%index =           59
+ obs_qty_info(          59 )%name = "QTY_SKIN_TEMPERATURE"
+ obs_qty_info(          59 )%nitems =            0
+                                                                              
+ obs_qty_info(          60 )%index =           60
+ obs_qty_info(          60 )%name = "QTY_NADIR_RADIANCE"
+ obs_qty_info(          60 )%nitems =            0
+                                                                              
+ obs_qty_info(          61 )%index =           61
+ obs_qty_info(          61 )%name = "QTY_TRACER_1_MIXING_RATIO"
+ obs_qty_info(          61 )%nitems =            0
+                                                                              
+ obs_qty_info(          62 )%index =           62
+ obs_qty_info(          62 )%name = "QTY_TRACER_2_MIXING_RATIO"
+ obs_qty_info(          62 )%nitems =            0
+                                                                              
+ obs_qty_info(          63 )%index =           63
+ obs_qty_info(          63 )%name = "QTY_TRACER_CONCENTRATION"
+ obs_qty_info(          63 )%nitems =            0
+                                                                              
+ obs_qty_info(          64 )%index =           64
+ obs_qty_info(          64 )%name = "QTY_TRACER_SOURCE"
+ obs_qty_info(          64 )%nitems =            0
+                                                                              
+ obs_qty_info(          65 )%index =           65
+ obs_qty_info(          65 )%name = "QTY_SOIL_TEMPERATURE"
+ obs_qty_info(          65 )%nitems =            0
+                                                                              
+ obs_qty_info(          66 )%index =           66
+ obs_qty_info(          66 )%name = "QTY_SOIL_LIQUID_WATER"
+ obs_qty_info(          66 )%nitems =            0
+                                                                              
+ obs_qty_info(          67 )%index =           67
+ obs_qty_info(          67 )%name = "QTY_VERTICAL_VORTICITY"
+ obs_qty_info(          67 )%nitems =            0
+                                                                              
+ obs_qty_info(          68 )%index =           68
+ obs_qty_info(          68 )%name = "QTY_SURFACE_ALBEDO"
+ obs_qty_info(          68 )%nitems =            0
+                                                                              
+ obs_qty_info(          69 )%index =           69
+ obs_qty_info(          69 )%name = "QTY_SURFACE_EMISSIVITY"
+ obs_qty_info(          69 )%nitems =            0
+                                                                              
+ obs_qty_info(          70 )%index =           70
+ obs_qty_info(          70 )%name = "QTY_DUST_OPACITY_7MB"
+ obs_qty_info(          70 )%nitems =            0
+                                                                              
+ obs_qty_info(          71 )%index =           71
+ obs_qty_info(          71 )%name = "QTY_THC"
+ obs_qty_info(          71 )%nitems =            0
+                                                                              
+ obs_qty_info(          72 )%index =           72
+ obs_qty_info(          72 )%name = "QTY_VORTEX_LON"
+ obs_qty_info(          72 )%nitems =            0
+                                                                              
+ obs_qty_info(          73 )%index =           73
+ obs_qty_info(          73 )%name = "QTY_VORTEX_LAT"
+ obs_qty_info(          73 )%nitems =            0
+                                                                              
+ obs_qty_info(          74 )%index =           74
+ obs_qty_info(          74 )%name = "QTY_VORTEX_PMIN"
+ obs_qty_info(          74 )%nitems =            0
+                                                                              
+ obs_qty_info(          75 )%index =           75
+ obs_qty_info(          75 )%name = "QTY_VORTEX_WMAX"
+ obs_qty_info(          75 )%nitems =            0
+                                                                              
+ obs_qty_info(          76 )%index =           76
+ obs_qty_info(          76 )%name = "QTY_EXNER_FUNCTION"
+ obs_qty_info(          76 )%nitems =            0
+                                                                              
+ obs_qty_info(          77 )%index =           77
+ obs_qty_info(          77 )%name = "QTY_TURBULENT_KINETIC_ENERGY"
+ obs_qty_info(          77 )%nitems =            0
+                                                                              
+ obs_qty_info(          78 )%index =           78
+ obs_qty_info(          78 )%name = "QTY_TOTAL_PRECIPITABLE_WATER"
+ obs_qty_info(          78 )%nitems =            0
+                                                                              
+ obs_qty_info(          79 )%index =           79
+ obs_qty_info(          79 )%name = "QTY_VERTLEVEL"
+ obs_qty_info(          79 )%nitems =            0
+                                                                              
+ obs_qty_info(          80 )%index =           80
+ obs_qty_info(          80 )%name = "QTY_MICROWAVE_BRIGHT_TEMP"
+ obs_qty_info(          80 )%nitems =            0
+                                                                              
+ obs_qty_info(          81 )%index =           81
+ obs_qty_info(          81 )%name = "QTY_INTEGRATED_SULFATE"
+ obs_qty_info(          81 )%nitems =            0
+                                                                              
+ obs_qty_info(          82 )%index =           82
+ obs_qty_info(          82 )%name = "QTY_INTEGRATED_DUST"
+ obs_qty_info(          82 )%nitems =            0
+                                                                              
+ obs_qty_info(          83 )%index =           83
+ obs_qty_info(          83 )%name = "QTY_INTEGRATED_SMOKE"
+ obs_qty_info(          83 )%nitems =            0
+                                                                              
+ obs_qty_info(          84 )%index =           84
+ obs_qty_info(          84 )%name = "QTY_INTEGRATED_SEASALT"
+ obs_qty_info(          84 )%nitems =            0
+                                                                              
+ obs_qty_info(          85 )%index =           85
+ obs_qty_info(          85 )%name = "QTY_INTEGRATED_AOD"
+ obs_qty_info(          85 )%nitems =            0
+                                                                              
+ obs_qty_info(          86 )%index =           86
+ obs_qty_info(          86 )%name = "QTY_SO2"
+ obs_qty_info(          86 )%nitems =            0
+                                                                              
+ obs_qty_info(          87 )%index =           87
+ obs_qty_info(          87 )%name = "QTY_SULFATE"
+ obs_qty_info(          87 )%nitems =            0
+                                                                              
+ obs_qty_info(          88 )%index =           88
+ obs_qty_info(          88 )%name = "QTY_DUST"
+ obs_qty_info(          88 )%nitems =            0
+                                                                              
+ obs_qty_info(          89 )%index =           89
+ obs_qty_info(          89 )%name = "QTY_SMOKE"
+ obs_qty_info(          89 )%nitems =            0
+                                                                              
+ obs_qty_info(          90 )%index =           90
+ obs_qty_info(          90 )%name = "QTY_SEASALT"
+ obs_qty_info(          90 )%nitems =            0
+                                                                              
+ obs_qty_info(          91 )%index =           91
+ obs_qty_info(          91 )%name = "QTY_HAIL_MIXING_RATIO"
+ obs_qty_info(          91 )%nitems =            0
+                                                                              
+ obs_qty_info(          92 )%index =           92
+ obs_qty_info(          92 )%name = "QTY_HAIL_NUMBER_CONCENTR"
+ obs_qty_info(          92 )%nitems =            0
+                                                                              
+ obs_qty_info(          93 )%index =           93
+ obs_qty_info(          93 )%name = "QTY_GRAUPEL_VOLUME"
+ obs_qty_info(          93 )%nitems =            0
+                                                                              
+ obs_qty_info(          94 )%index =           94
+ obs_qty_info(          94 )%name = "QTY_HAIL_VOLUME"
+ obs_qty_info(          94 )%nitems =            0
+                                                                              
+ obs_qty_info(          95 )%index =           95
+ obs_qty_info(          95 )%name = "QTY_DIFFERENTIAL_REFLECTIVITY"
+ obs_qty_info(          95 )%nitems =            0
+                                                                              
+ obs_qty_info(          96 )%index =           96
+ obs_qty_info(          96 )%name = "QTY_SPECIFIC_DIFFERENTIAL_PHASE"
+ obs_qty_info(          96 )%nitems =            0
+                                                                              
+ obs_qty_info(          97 )%index =           97
+ obs_qty_info(          97 )%name = "QTY_FLASH_RATE_2D"
+ obs_qty_info(          97 )%nitems =            0
+                                                                              
+ obs_qty_info(          98 )%index =           98
+ obs_qty_info(          98 )%name = "QTY_RADIANCE"
+ obs_qty_info(          98 )%nitems =            0
+                                                                              
+ obs_qty_info(          99 )%index =           99
+ obs_qty_info(          99 )%name = "QTY_BRIGHTNESS_TEMPERATURE"
+ obs_qty_info(          99 )%nitems =            0
+                                                                              
+ obs_qty_info(         100 )%index =          100
+ obs_qty_info(         100 )%name = "QTY_BI_DIRECTIONAL_REFLECTANCE"
+ obs_qty_info(         100 )%nitems =            0
+                                                                              
+ obs_qty_info(         101 )%index =          101
+ obs_qty_info(         101 )%name = "QTY_SURFACE_TYPE"
+ obs_qty_info(         101 )%nitems =            0
+                                                                              
+ obs_qty_info(         102 )%index =          102
+ obs_qty_info(         102 )%name = "QTY_WIND_FETCH"
+ obs_qty_info(         102 )%nitems =            0
+                                                                              
+ obs_qty_info(         103 )%index =          103
+ obs_qty_info(         103 )%name = "QTY_WATER_TYPE"
+ obs_qty_info(         103 )%nitems =            0
+                                                                              
+ obs_qty_info(         104 )%index =          104
+ obs_qty_info(         104 )%name = "QTY_FOAM_FRAC"
+ obs_qty_info(         104 )%nitems =            0
+                                                                              
+ obs_qty_info(         105 )%index =          105
+ obs_qty_info(         105 )%name = "QTY_INSOLUBLE_AER"
+ obs_qty_info(         105 )%nitems =            0
+                                                                              
+ obs_qty_info(         106 )%index =          106
+ obs_qty_info(         106 )%name = "QTY_H2O_SOLUBLE_AER"
+ obs_qty_info(         106 )%nitems =            0
+                                                                              
+ obs_qty_info(         107 )%index =          107
+ obs_qty_info(         107 )%name = "QTY_SOOT"
+ obs_qty_info(         107 )%nitems =            0
+                                                                              
+ obs_qty_info(         108 )%index =          108
+ obs_qty_info(         108 )%name = "QTY_SEASALT_ACCUM"
+ obs_qty_info(         108 )%nitems =            0
+                                                                              
+ obs_qty_info(         109 )%index =          109
+ obs_qty_info(         109 )%name = "QTY_SEASALT_COARSE"
+ obs_qty_info(         109 )%nitems =            0
+                                                                              
+ obs_qty_info(         110 )%index =          110
+ obs_qty_info(         110 )%name = "QTY_MINERAL_NUCLEUS"
+ obs_qty_info(         110 )%nitems =            0
+                                                                              
+ obs_qty_info(         111 )%index =          111
+ obs_qty_info(         111 )%name = "QTY_MINERAL_ACCUM"
+ obs_qty_info(         111 )%nitems =            0
+                                                                              
+ obs_qty_info(         112 )%index =          112
+ obs_qty_info(         112 )%name = "QTY_MINERAL_COARSE"
+ obs_qty_info(         112 )%nitems =            0
+                                                                              
+ obs_qty_info(         113 )%index =          113
+ obs_qty_info(         113 )%name = "QTY_MINERAL_TRANSPORTED"
+ obs_qty_info(         113 )%nitems =            0
+                                                                              
+ obs_qty_info(         114 )%index =          114
+ obs_qty_info(         114 )%name = "QTY_SULPHATED_DROPS"
+ obs_qty_info(         114 )%nitems =            0
+                                                                              
+ obs_qty_info(         115 )%index =          115
+ obs_qty_info(         115 )%name = "QTY_VOLCANIC_ASH"
+ obs_qty_info(         115 )%nitems =            0
+                                                                              
+ obs_qty_info(         116 )%index =          116
+ obs_qty_info(         116 )%name = "QTY_NEW_VOLCANIC_ASH"
+ obs_qty_info(         116 )%nitems =            0
+                                                                              
+ obs_qty_info(         117 )%index =          117
+ obs_qty_info(         117 )%name = "QTY_ASIAN_DUST"
+ obs_qty_info(         117 )%nitems =            0
+                                                                              
+ obs_qty_info(         118 )%index =          118
+ obs_qty_info(         118 )%name = "QTY_BLACK_CARBON"
+ obs_qty_info(         118 )%nitems =            0
+                                                                              
+ obs_qty_info(         119 )%index =          119
+ obs_qty_info(         119 )%name = "QTY_DUST_BIN1"
+ obs_qty_info(         119 )%nitems =            0
+                                                                              
+ obs_qty_info(         120 )%index =          120
+ obs_qty_info(         120 )%name = "QTY_DUST_BIN2"
+ obs_qty_info(         120 )%nitems =            0
+                                                                              
+ obs_qty_info(         121 )%index =          121
+ obs_qty_info(         121 )%name = "QTY_DUST_BIN3"
+ obs_qty_info(         121 )%nitems =            0
+                                                                              
+ obs_qty_info(         122 )%index =          122
+ obs_qty_info(         122 )%name = "QTY_AMMONIUM_SULPHATE"
+ obs_qty_info(         122 )%nitems =            0
+                                                                              
+ obs_qty_info(         123 )%index =          123
+ obs_qty_info(         123 )%name = "QTY_SEA_SALT_BIN1"
+ obs_qty_info(         123 )%nitems =            0
+                                                                              
+ obs_qty_info(         124 )%index =          124
+ obs_qty_info(         124 )%name = "QTY_SEA_SALT_BIN2"
+ obs_qty_info(         124 )%nitems =            0
+                                                                              
+ obs_qty_info(         125 )%index =          125
+ obs_qty_info(         125 )%name = "QTY_SEA_SALT_BIN3"
+ obs_qty_info(         125 )%nitems =            0
+                                                                              
+ obs_qty_info(         126 )%index =          126
+ obs_qty_info(         126 )%name = "QTY_HYDROPHILIC_ORGANIC_MATTER"
+ obs_qty_info(         126 )%nitems =            0
+                                                                              
+ obs_qty_info(         127 )%index =          127
+ obs_qty_info(         127 )%name = "QTY_CLOUDWATER_DE"
+ obs_qty_info(         127 )%nitems =            0
+                                                                              
+ obs_qty_info(         128 )%index =          128
+ obs_qty_info(         128 )%name = "QTY_CLOUD_ICE_DE"
+ obs_qty_info(         128 )%nitems =            0
+                                                                              
+ obs_qty_info(         129 )%index =          129
+ obs_qty_info(         129 )%name = "QTY_COLUMN_CLOUD_FRAC"
+ obs_qty_info(         129 )%nitems =            0
+                                                                              
+ obs_qty_info(         130 )%index =          130
+ obs_qty_info(         130 )%name = "QTY_CLOUD_TOP_PRESSURE"
+ obs_qty_info(         130 )%nitems =            0
+                                                                              
+ obs_qty_info(         131 )%index =          131
+ obs_qty_info(         131 )%name = "QTY_ABSOLUTE_HUMIDITY"
+ obs_qty_info(         131 )%nitems =            0
+                                                                              
+ obs_qty_info(         132 )%index =          132
+ obs_qty_info(         132 )%name = "QTY_O3"
+ obs_qty_info(         132 )%nitems =            0
+                                                                              
+ obs_qty_info(         133 )%index =          133
+ obs_qty_info(         133 )%name = "QTY_CO2"
+ obs_qty_info(         133 )%nitems =            0
+                                                                              
+ obs_qty_info(         134 )%index =          134
+ obs_qty_info(         134 )%name = "QTY_N2O"
+ obs_qty_info(         134 )%nitems =            0
+                                                                              
+ obs_qty_info(         135 )%index =          135
+ obs_qty_info(         135 )%name = "QTY_CH4"
+ obs_qty_info(         135 )%nitems =            0
+                                                                              
+ obs_qty_info(         136 )%index =          136
+ obs_qty_info(         136 )%name = "QTY_CO"
+ obs_qty_info(         136 )%nitems =            0
+                                                                              
+ obs_qty_info(         137 )%index =          137
+ obs_qty_info(         137 )%name = "QTY_SALINITY"
+ obs_qty_info(         137 )%nitems =            0
+                                                                              
+ obs_qty_info(         138 )%index =          138
+ obs_qty_info(         138 )%name = "QTY_SNOWCOVER_FRAC"
+ obs_qty_info(         138 )%nitems =            0
+                                                                              
+                                                                              
+obs_type_info(    1) = obs_type_type(RADIOSONDE_U_WIND_COMPONENT, &
+    'RADIOSONDE_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(    2) = obs_type_type(RADIOSONDE_V_WIND_COMPONENT, &
+    'RADIOSONDE_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(    3) = obs_type_type(RADIOSONDE_GEOPOTENTIAL_HGT, &
+    'RADIOSONDE_GEOPOTENTIAL_HGT', QTY_GEOPOTENTIAL_HEIGHT, .false., .false., .false.)
+obs_type_info(    4) = obs_type_type(RADIOSONDE_SURFACE_PRESSURE, &
+    'RADIOSONDE_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(    5) = obs_type_type(RADIOSONDE_TEMPERATURE, &
+    'RADIOSONDE_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(    6) = obs_type_type(RADIOSONDE_SPECIFIC_HUMIDITY, &
+    'RADIOSONDE_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(    7) = obs_type_type(DROPSONDE_U_WIND_COMPONENT, &
+    'DROPSONDE_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(    8) = obs_type_type(DROPSONDE_V_WIND_COMPONENT, &
+    'DROPSONDE_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(    9) = obs_type_type(DROPSONDE_SURFACE_PRESSURE, &
+    'DROPSONDE_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   10) = obs_type_type(DROPSONDE_TEMPERATURE, &
+    'DROPSONDE_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   11) = obs_type_type(DROPSONDE_SPECIFIC_HUMIDITY, &
+    'DROPSONDE_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(   12) = obs_type_type(AIRCRAFT_U_WIND_COMPONENT, &
+    'AIRCRAFT_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   13) = obs_type_type(AIRCRAFT_V_WIND_COMPONENT, &
+    'AIRCRAFT_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   14) = obs_type_type(AIRCRAFT_TEMPERATURE, &
+    'AIRCRAFT_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   15) = obs_type_type(AIRCRAFT_SPECIFIC_HUMIDITY, &
+    'AIRCRAFT_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(   16) = obs_type_type(ACARS_U_WIND_COMPONENT, &
+    'ACARS_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   17) = obs_type_type(ACARS_V_WIND_COMPONENT, &
+    'ACARS_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   18) = obs_type_type(ACARS_TEMPERATURE, &
+    'ACARS_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   19) = obs_type_type(ACARS_SPECIFIC_HUMIDITY, &
+    'ACARS_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(   20) = obs_type_type(MARINE_SFC_U_WIND_COMPONENT, &
+    'MARINE_SFC_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   21) = obs_type_type(MARINE_SFC_V_WIND_COMPONENT, &
+    'MARINE_SFC_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   22) = obs_type_type(MARINE_SFC_TEMPERATURE, &
+    'MARINE_SFC_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   23) = obs_type_type(MARINE_SFC_SPECIFIC_HUMIDITY, &
+    'MARINE_SFC_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(   24) = obs_type_type(MARINE_SFC_PRESSURE, &
+    'MARINE_SFC_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   25) = obs_type_type(LAND_SFC_U_WIND_COMPONENT, &
+    'LAND_SFC_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   26) = obs_type_type(LAND_SFC_V_WIND_COMPONENT, &
+    'LAND_SFC_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   27) = obs_type_type(LAND_SFC_TEMPERATURE, &
+    'LAND_SFC_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   28) = obs_type_type(LAND_SFC_SPECIFIC_HUMIDITY, &
+    'LAND_SFC_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(   29) = obs_type_type(LAND_SFC_PRESSURE, &
+    'LAND_SFC_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   30) = obs_type_type(SAT_U_WIND_COMPONENT, &
+    'SAT_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   31) = obs_type_type(SAT_V_WIND_COMPONENT, &
+    'SAT_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   32) = obs_type_type(ATOV_TEMPERATURE, &
+    'ATOV_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   33) = obs_type_type(AIRS_TEMPERATURE, &
+    'AIRS_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   34) = obs_type_type(AIRS_SPECIFIC_HUMIDITY, &
+    'AIRS_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(   35) = obs_type_type(GPS_PRECIPITABLE_WATER, &
+    'GPS_PRECIPITABLE_WATER', QTY_PRECIPITABLE_WATER, .false., .false., .false.)
+obs_type_info(   36) = obs_type_type(VADWND_U_WIND_COMPONENT, &
+    'VADWND_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   37) = obs_type_type(VADWND_V_WIND_COMPONENT, &
+    'VADWND_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   38) = obs_type_type(CIMMS_AMV_U_WIND_COMPONENT, &
+    'CIMMS_AMV_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   39) = obs_type_type(CIMMS_AMV_V_WIND_COMPONENT, &
+    'CIMMS_AMV_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   40) = obs_type_type(DOPPLER_RADIAL_VELOCITY, &
+    'DOPPLER_RADIAL_VELOCITY', QTY_VELOCITY, .false., .false., .false.)
+obs_type_info(   41) = obs_type_type(RADAR_REFLECTIVITY, &
+    'RADAR_REFLECTIVITY', QTY_RADAR_REFLECTIVITY, .false., .false., .false.)
+obs_type_info(   42) = obs_type_type(RADAR_CLEARAIR_REFLECTIVITY, &
+    'RADAR_CLEARAIR_REFLECTIVITY', QTY_RADAR_REFLECTIVITY, .false., .false., .false.)
+obs_type_info(   43) = obs_type_type(PRECIPITATION_FALL_SPEED, &
+    'PRECIPITATION_FALL_SPEED', QTY_POWER_WEIGHTED_FALL_SPEED, .false., .false., .false.)
+obs_type_info(   44) = obs_type_type(METAR_U_10_METER_WIND, &
+    'METAR_U_10_METER_WIND', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   45) = obs_type_type(METAR_V_10_METER_WIND, &
+    'METAR_V_10_METER_WIND', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   46) = obs_type_type(METAR_TEMPERATURE_2_METER, &
+    'METAR_TEMPERATURE_2_METER', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   47) = obs_type_type(METAR_SPECIFIC_HUMIDITY_2_METER, &
+    'METAR_SPECIFIC_HUMIDITY_2_METER', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(   48) = obs_type_type(METAR_SURFACE_PRESSURE, &
+    'METAR_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   49) = obs_type_type(METAR_POT_TEMP_2_METER, &
+    'METAR_POT_TEMP_2_METER', QTY_POTENTIAL_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   50) = obs_type_type(DEWPOINT, &
+    'DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   51) = obs_type_type(DEWPOINT_2_METER, &
+    'DEWPOINT_2_METER', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   52) = obs_type_type(BUOY_DEWPOINT, &
+    'BUOY_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   53) = obs_type_type(SHIP_DEWPOINT, &
+    'SHIP_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   54) = obs_type_type(SYNOP_DEWPOINT, &
+    'SYNOP_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   55) = obs_type_type(AIREP_DEWPOINT, &
+    'AIREP_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   56) = obs_type_type(AMDAR_DEWPOINT, &
+    'AMDAR_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   57) = obs_type_type(PILOT_DEWPOINT, &
+    'PILOT_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   58) = obs_type_type(BOGUS_DEWPOINT, &
+    'BOGUS_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   59) = obs_type_type(AIRS_DEWPOINT, &
+    'AIRS_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   60) = obs_type_type(METAR_DEWPOINT_2_METER, &
+    'METAR_DEWPOINT_2_METER', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   61) = obs_type_type(RADIOSONDE_DEWPOINT, &
+    'RADIOSONDE_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   62) = obs_type_type(DROPSONDE_DEWPOINT, &
+    'DROPSONDE_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   63) = obs_type_type(AIRCRAFT_DEWPOINT, &
+    'AIRCRAFT_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   64) = obs_type_type(ACARS_DEWPOINT, &
+    'ACARS_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   65) = obs_type_type(MARINE_SFC_DEWPOINT, &
+    'MARINE_SFC_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   66) = obs_type_type(LAND_SFC_DEWPOINT, &
+    'LAND_SFC_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
+obs_type_info(   67) = obs_type_type(RADIOSONDE_RELATIVE_HUMIDITY, &
+    'RADIOSONDE_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
+obs_type_info(   68) = obs_type_type(DROPSONDE_RELATIVE_HUMIDITY, &
+    'DROPSONDE_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
+obs_type_info(   69) = obs_type_type(AIRCRAFT_RELATIVE_HUMIDITY, &
+    'AIRCRAFT_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
+obs_type_info(   70) = obs_type_type(ACARS_RELATIVE_HUMIDITY, &
+    'ACARS_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
+obs_type_info(   71) = obs_type_type(MARINE_SFC_RELATIVE_HUMIDITY, &
+    'MARINE_SFC_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
+obs_type_info(   72) = obs_type_type(LAND_SFC_RELATIVE_HUMIDITY, &
+    'LAND_SFC_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
+obs_type_info(   73) = obs_type_type(METAR_RELATIVE_HUMIDITY_2_METER, &
+    'METAR_RELATIVE_HUMIDITY_2_METER', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
+obs_type_info(   74) = obs_type_type(AIRS_RELATIVE_HUMIDITY, &
+    'AIRS_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
+obs_type_info(   75) = obs_type_type(MESONET_RELATIVE_HUMIDITY, &
+    'MESONET_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
+obs_type_info(   76) = obs_type_type(RADIOSONDE_SURFACE_ALTIMETER, &
+    'RADIOSONDE_SURFACE_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   77) = obs_type_type(DROPSONDE_SURFACE_ALTIMETER, &
+    'DROPSONDE_SURFACE_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   78) = obs_type_type(MARINE_SFC_ALTIMETER, &
+    'MARINE_SFC_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   79) = obs_type_type(LAND_SFC_ALTIMETER, &
+    'LAND_SFC_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   80) = obs_type_type(METAR_ALTIMETER, &
+    'METAR_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   81) = obs_type_type(MESONET_SURFACE_ALTIMETER, &
+    'MESONET_SURFACE_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   82) = obs_type_type(TEMPERATURE, &
+    'TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   83) = obs_type_type(SPECIFIC_HUMIDITY, &
+    'SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(   84) = obs_type_type(PRESSURE, &
+    'PRESSURE', QTY_PRESSURE, .false., .false., .false.)
+obs_type_info(   85) = obs_type_type(GPSRO_REFRACTIVITY, &
+    'GPSRO_REFRACTIVITY', QTY_GPSRO, .false., .false., .false.)
+obs_type_info(   86) = obs_type_type(VORTEX_LAT, &
+    'VORTEX_LAT', QTY_VORTEX_LAT, .false., .false., .false.)
+obs_type_info(   87) = obs_type_type(VORTEX_LON, &
+    'VORTEX_LON', QTY_VORTEX_LON, .false., .false., .false.)
+obs_type_info(   88) = obs_type_type(VORTEX_PMIN, &
+    'VORTEX_PMIN', QTY_VORTEX_PMIN, .false., .false., .false.)
+obs_type_info(   89) = obs_type_type(VORTEX_WMAX, &
+    'VORTEX_WMAX', QTY_VORTEX_WMAX, .false., .false., .false.)
+obs_type_info(   90) = obs_type_type(BUOY_U_WIND_COMPONENT, &
+    'BUOY_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   91) = obs_type_type(BUOY_V_WIND_COMPONENT, &
+    'BUOY_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   92) = obs_type_type(BUOY_SURFACE_PRESSURE, &
+    'BUOY_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   93) = obs_type_type(BUOY_TEMPERATURE, &
+    'BUOY_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   94) = obs_type_type(SHIP_U_WIND_COMPONENT, &
+    'SHIP_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   95) = obs_type_type(SHIP_V_WIND_COMPONENT, &
+    'SHIP_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   96) = obs_type_type(SHIP_SURFACE_PRESSURE, &
+    'SHIP_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(   97) = obs_type_type(SHIP_TEMPERATURE, &
+    'SHIP_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(   98) = obs_type_type(SYNOP_U_WIND_COMPONENT, &
+    'SYNOP_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(   99) = obs_type_type(SYNOP_V_WIND_COMPONENT, &
+    'SYNOP_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  100) = obs_type_type(SYNOP_SURFACE_PRESSURE, &
+    'SYNOP_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
+obs_type_info(  101) = obs_type_type(SYNOP_SPECIFIC_HUMIDITY, &
+    'SYNOP_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
+obs_type_info(  102) = obs_type_type(SYNOP_TEMPERATURE, &
+    'SYNOP_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  103) = obs_type_type(AIREP_U_WIND_COMPONENT, &
+    'AIREP_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  104) = obs_type_type(AIREP_V_WIND_COMPONENT, &
+    'AIREP_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  105) = obs_type_type(AIREP_PRESSURE, &
+    'AIREP_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
+obs_type_info(  106) = obs_type_type(AIREP_TEMPERATURE, &
+    'AIREP_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  107) = obs_type_type(AMDAR_U_WIND_COMPONENT, &
+    'AMDAR_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  108) = obs_type_type(AMDAR_V_WIND_COMPONENT, &
+    'AMDAR_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  109) = obs_type_type(AMDAR_PRESSURE, &
+    'AMDAR_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
+obs_type_info(  110) = obs_type_type(AMDAR_TEMPERATURE, &
+    'AMDAR_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  111) = obs_type_type(PILOT_U_WIND_COMPONENT, &
+    'PILOT_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  112) = obs_type_type(PILOT_V_WIND_COMPONENT, &
+    'PILOT_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  113) = obs_type_type(PILOT_PRESSURE, &
+    'PILOT_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
+obs_type_info(  114) = obs_type_type(PILOT_TEMPERATURE, &
+    'PILOT_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  115) = obs_type_type(BOGUS_U_WIND_COMPONENT, &
+    'BOGUS_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  116) = obs_type_type(BOGUS_V_WIND_COMPONENT, &
+    'BOGUS_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  117) = obs_type_type(BOGUS_PRESSURE, &
+    'BOGUS_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
+obs_type_info(  118) = obs_type_type(BOGUS_TEMPERATURE, &
+    'BOGUS_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  119) = obs_type_type(PROFILER_U_WIND_COMPONENT, &
+    'PROFILER_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  120) = obs_type_type(PROFILER_V_WIND_COMPONENT, &
+    'PROFILER_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
+obs_type_info(  121) = obs_type_type(PROFILER_PRESSURE, &
+    'PROFILER_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
+obs_type_info(  122) = obs_type_type(SATEM_THICKNESS, &
+    'SATEM_THICKNESS', QTY_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  123) = obs_type_type(NOAA_1_VTPR1_RADIANCE, &
+    'NOAA_1_VTPR1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  124) = obs_type_type(NOAA_2_VTPR1_RADIANCE, &
+    'NOAA_2_VTPR1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  125) = obs_type_type(NOAA_3_VTPR1_RADIANCE, &
+    'NOAA_3_VTPR1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  126) = obs_type_type(NOAA_4_VTPR1_RADIANCE, &
+    'NOAA_4_VTPR1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  127) = obs_type_type(NOAA_5_HIRS_RADIANCE, &
+    'NOAA_5_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  128) = obs_type_type(NOAA_5_MSU_TB, &
+    'NOAA_5_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  129) = obs_type_type(NOAA_5_AVHRR_RADIANCE, &
+    'NOAA_5_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  130) = obs_type_type(NOAA_6_HIRS_RADIANCE, &
+    'NOAA_6_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  131) = obs_type_type(NOAA_6_MSU_TB, &
+    'NOAA_6_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  132) = obs_type_type(NOAA_6_AVHRR_RADIANCE, &
+    'NOAA_6_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  133) = obs_type_type(NOAA_7_HIRS_RADIANCE, &
+    'NOAA_7_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  134) = obs_type_type(NOAA_7_MSU_TB, &
+    'NOAA_7_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  135) = obs_type_type(NOAA_7_AVHRR_RADIANCE, &
+    'NOAA_7_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  136) = obs_type_type(NOAA_8_HIRS_RADIANCE, &
+    'NOAA_8_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  137) = obs_type_type(NOAA_8_MSU_TB, &
+    'NOAA_8_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  138) = obs_type_type(NOAA_8_AVHRR_RADIANCE, &
+    'NOAA_8_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  139) = obs_type_type(NOAA_9_HIRS_RADIANCE, &
+    'NOAA_9_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  140) = obs_type_type(NOAA_9_MSU_TB, &
+    'NOAA_9_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  141) = obs_type_type(NOAA_9_AVHRR_RADIANCE, &
+    'NOAA_9_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  142) = obs_type_type(NOAA_10_HIRS_RADIANCE, &
+    'NOAA_10_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  143) = obs_type_type(NOAA_10_MSU_TB, &
+    'NOAA_10_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  144) = obs_type_type(NOAA_10_AVHRR_RADIANCE, &
+    'NOAA_10_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  145) = obs_type_type(NOAA_11_HIRS_RADIANCE, &
+    'NOAA_11_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  146) = obs_type_type(NOAA_11_MSU_TB, &
+    'NOAA_11_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  147) = obs_type_type(NOAA_11_AVHRR_RADIANCE, &
+    'NOAA_11_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  148) = obs_type_type(NOAA_12_HIRS_RADIANCE, &
+    'NOAA_12_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  149) = obs_type_type(NOAA_12_MSU_TB, &
+    'NOAA_12_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  150) = obs_type_type(NOAA_12_AVHRR_RADIANCE, &
+    'NOAA_12_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  151) = obs_type_type(NOAA_13_AVHRR_RADIANCE, &
+    'NOAA_13_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  152) = obs_type_type(NOAA_14_HIRS_RADIANCE, &
+    'NOAA_14_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  153) = obs_type_type(NOAA_14_MSU_TB, &
+    'NOAA_14_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  154) = obs_type_type(NOAA_14_AVHRR_RADIANCE, &
+    'NOAA_14_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  155) = obs_type_type(NOAA_15_HIRS_RADIANCE, &
+    'NOAA_15_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  156) = obs_type_type(NOAA_15_AMSUA_TB, &
+    'NOAA_15_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  157) = obs_type_type(NOAA_15_AMSUB_TB, &
+    'NOAA_15_AMSUB_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  158) = obs_type_type(NOAA_15_AVHRR_RADIANCE, &
+    'NOAA_15_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  159) = obs_type_type(NOAA_16_HIRS_RADIANCE, &
+    'NOAA_16_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  160) = obs_type_type(NOAA_16_AMSUA_TB, &
+    'NOAA_16_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  161) = obs_type_type(NOAA_16_AMSUB_TB, &
+    'NOAA_16_AMSUB_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  162) = obs_type_type(NOAA_16_AVHRR_RADIANCE, &
+    'NOAA_16_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  163) = obs_type_type(NOAA_17_HIRS_RADIANCE, &
+    'NOAA_17_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  164) = obs_type_type(NOAA_17_AMSUA_TB, &
+    'NOAA_17_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  165) = obs_type_type(NOAA_17_AMSUB_TB, &
+    'NOAA_17_AMSUB_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  166) = obs_type_type(NOAA_17_AVHRR_RADIANCE, &
+    'NOAA_17_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  167) = obs_type_type(NOAA_18_HIRS_RADIANCE, &
+    'NOAA_18_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  168) = obs_type_type(NOAA_18_AMSUA_TB, &
+    'NOAA_18_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  169) = obs_type_type(NOAA_18_AVHRR_RADIANCE, &
+    'NOAA_18_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  170) = obs_type_type(NOAA_18_MHS_TB, &
+    'NOAA_18_MHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  171) = obs_type_type(NOAA_19_HIRS_RADIANCE, &
+    'NOAA_19_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  172) = obs_type_type(NOAA_19_AMSUA_TB, &
+    'NOAA_19_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  173) = obs_type_type(NOAA_19_AVHRR_RADIANCE, &
+    'NOAA_19_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  174) = obs_type_type(NOAA_19_MHS_TB, &
+    'NOAA_19_MHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  175) = obs_type_type(NOAA_20_ATMS_TB, &
+    'NOAA_20_ATMS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  176) = obs_type_type(NOAA_20_VIIRS_RADIANCE, &
+    'NOAA_20_VIIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  177) = obs_type_type(DMSP_8_SSMI_TB, &
+    'DMSP_8_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  178) = obs_type_type(DMSP_9_SSMI_TB, &
+    'DMSP_9_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  179) = obs_type_type(DMSP_10_SSMI_TB, &
+    'DMSP_10_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  180) = obs_type_type(DMSP_11_SSMI_TB, &
+    'DMSP_11_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  181) = obs_type_type(DMSP_11_SSMT2_TB, &
+    'DMSP_11_SSMT2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  182) = obs_type_type(DMSP_12_SSMI_TB, &
+    'DMSP_12_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  183) = obs_type_type(DMSP_12_SSMT2_TB, &
+    'DMSP_12_SSMT2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  184) = obs_type_type(DMSP_13_SSMI_TB, &
+    'DMSP_13_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  185) = obs_type_type(DMSP_14_SSMI_TB, &
+    'DMSP_14_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  186) = obs_type_type(DMSP_14_SSMT2_TB, &
+    'DMSP_14_SSMT2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  187) = obs_type_type(DMSP_15_SSMI_TB, &
+    'DMSP_15_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  188) = obs_type_type(DMSP_15_SSMT2_TB, &
+    'DMSP_15_SSMT2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  189) = obs_type_type(DMSP_16_SSMIS_TB, &
+    'DMSP_16_SSMIS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  190) = obs_type_type(DMSP_17_SSMIS_TB, &
+    'DMSP_17_SSMIS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  191) = obs_type_type(DMSP_18_SSMIS_TB, &
+    'DMSP_18_SSMIS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  192) = obs_type_type(DMSP_19_SSMIS_TB, &
+    'DMSP_19_SSMIS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  193) = obs_type_type(METEOSAT_1_MVIRI_RADIANCE, &
+    'METEOSAT_1_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  194) = obs_type_type(METEOSAT_2_MVIRI_RADIANCE, &
+    'METEOSAT_2_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  195) = obs_type_type(METEOSAT_3_MVIRI_RADIANCE, &
+    'METEOSAT_3_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  196) = obs_type_type(METEOSAT_4_MVIRI_RADIANCE, &
+    'METEOSAT_4_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  197) = obs_type_type(METEOSAT_5_MVIRI_RADIANCE, &
+    'METEOSAT_5_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  198) = obs_type_type(METEOSAT_6_MVIRI_RADIANCE, &
+    'METEOSAT_6_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  199) = obs_type_type(METEOSAT_7_MVIRI_RADIANCE, &
+    'METEOSAT_7_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  200) = obs_type_type(GOES_4_SOUNDER_RADIANCE, &
+    'GOES_4_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  201) = obs_type_type(GOES_5_SOUNDER_RADIANCE, &
+    'GOES_5_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  202) = obs_type_type(GOES_6_SOUNDER_RADIANCE, &
+    'GOES_6_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  203) = obs_type_type(GOES_7_SOUNDER_RADIANCE, &
+    'GOES_7_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  204) = obs_type_type(GOES_8_IMAGER_RADIANCE, &
+    'GOES_8_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  205) = obs_type_type(GOES_8_SOUNDER_RADIANCE, &
+    'GOES_8_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  206) = obs_type_type(GOES_9_IMAGER_RADIANCE, &
+    'GOES_9_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  207) = obs_type_type(GOES_9_SOUNDER_RADIANCE, &
+    'GOES_9_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  208) = obs_type_type(GOES_10_IMAGER_RADIANCE, &
+    'GOES_10_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  209) = obs_type_type(GOES_10_SOUNDER_RADIANCE, &
+    'GOES_10_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  210) = obs_type_type(GOES_11_IMAGER_RADIANCE, &
+    'GOES_11_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  211) = obs_type_type(GOES_11_SOUNDER_RADIANCE, &
+    'GOES_11_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  212) = obs_type_type(GOES_12_IMAGER_RADIANCE, &
+    'GOES_12_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  213) = obs_type_type(GOES_12_SOUNDER_RADIANCE, &
+    'GOES_12_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  214) = obs_type_type(GOES_13_IMAGER_RADIANCE, &
+    'GOES_13_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  215) = obs_type_type(GOES_13_SOUNDER_RADIANCE, &
+    'GOES_13_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  216) = obs_type_type(GOES_14_IMAGER_RADIANCE, &
+    'GOES_14_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  217) = obs_type_type(GOES_14_SOUNDER_RADIANCE, &
+    'GOES_14_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  218) = obs_type_type(GOES_15_IMAGER_RADIANCE, &
+    'GOES_15_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  219) = obs_type_type(GOES_15_SOUNDER_RADIANCE, &
+    'GOES_15_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  220) = obs_type_type(GOES_16_ABI_RADIANCE, &
+    'GOES_16_ABI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  221) = obs_type_type(GOES_17_ABI_RADIANCE, &
+    'GOES_17_ABI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  222) = obs_type_type(GOES_18_ABI_RADIANCE, &
+    'GOES_18_ABI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  223) = obs_type_type(GOES_19_ABI_RADIANCE, &
+    'GOES_19_ABI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  224) = obs_type_type(GMS_1_IMAGER_RADIANCE, &
+    'GMS_1_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  225) = obs_type_type(GMS_2_IMAGER_RADIANCE, &
+    'GMS_2_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  226) = obs_type_type(GMS_3_IMAGER_RADIANCE, &
+    'GMS_3_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  227) = obs_type_type(GMS_4_IMAGER_RADIANCE, &
+    'GMS_4_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  228) = obs_type_type(GMS_5_IMAGER_RADIANCE, &
+    'GMS_5_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  229) = obs_type_type(FY2_2_VISSR_RADIANCE, &
+    'FY2_2_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  230) = obs_type_type(FY2_3_VISSR_RADIANCE, &
+    'FY2_3_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  231) = obs_type_type(FY2_4_VISSR_RADIANCE, &
+    'FY2_4_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  232) = obs_type_type(FY2_5_VISSR_RADIANCE, &
+    'FY2_5_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  233) = obs_type_type(FY2_7_VISSR_RADIANCE, &
+    'FY2_7_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  234) = obs_type_type(TRMM_1_TMI_TB, &
+    'TRMM_1_TMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  235) = obs_type_type(ERS_1_ATSR_RADIANCE, &
+    'ERS_1_ATSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  236) = obs_type_type(ERS_1_MWR_TB, &
+    'ERS_1_MWR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  237) = obs_type_type(ERS_2_ATSR_RADIANCE, &
+    'ERS_2_ATSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  238) = obs_type_type(ERS_2_MWR_TB, &
+    'ERS_2_MWR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  239) = obs_type_type(EOS_1_MODIS_RADIANCE, &
+    'EOS_1_MODIS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  240) = obs_type_type(EOS_1_ASTER_RADIANCE, &
+    'EOS_1_ASTER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  241) = obs_type_type(EOS_2_AMSUA_TB, &
+    'EOS_2_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  242) = obs_type_type(EOS_2_AIRS_RADIANCE, &
+    'EOS_2_AIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  243) = obs_type_type(EOS_2_HSB_TB, &
+    'EOS_2_HSB_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  244) = obs_type_type(EOS_2_MODIS_RADIANCE, &
+    'EOS_2_MODIS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  245) = obs_type_type(EOS_2_AMSRE_TB, &
+    'EOS_2_AMSRE_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  246) = obs_type_type(METOP_1_HIRS_RADIANCE, &
+    'METOP_1_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  247) = obs_type_type(METOP_1_AMSUA_TB, &
+    'METOP_1_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  248) = obs_type_type(METOP_1_AVHRR_RADIANCE, &
+    'METOP_1_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  249) = obs_type_type(METOP_1_MHS_TB, &
+    'METOP_1_MHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  250) = obs_type_type(METOP_2_HIRS_RADIANCE, &
+    'METOP_2_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  251) = obs_type_type(METOP_2_AMSUA_TB, &
+    'METOP_2_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  252) = obs_type_type(METOP_2_AVHRR_RADIANCE, &
+    'METOP_2_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  253) = obs_type_type(METOP_2_MHS_TB, &
+    'METOP_2_MHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  254) = obs_type_type(METOP_3_AVHRR_RADIANCE, &
+    'METOP_3_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  255) = obs_type_type(ENVISAT_1_ATSR_RADIANCE, &
+    'ENVISAT_1_ATSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  256) = obs_type_type(ENVISAT_1_MWR_TB, &
+    'ENVISAT_1_MWR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  257) = obs_type_type(MSG_1_SEVIRI_RADIANCE, &
+    'MSG_1_SEVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  258) = obs_type_type(MSG_2_SEVIRI_RADIANCE, &
+    'MSG_2_SEVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  259) = obs_type_type(MSG_3_SEVIRI_RADIANCE, &
+    'MSG_3_SEVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  260) = obs_type_type(MSG_4_SEVIRI_RADIANCE, &
+    'MSG_4_SEVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  261) = obs_type_type(MSG_4_SEVIRI_TB, &
+    'MSG_4_SEVIRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  262) = obs_type_type(MSG_4_SEVIRI_BDRF, &
+    'MSG_4_SEVIRI_BDRF', QTY_BI_DIRECTIONAL_REFLECTANCE, .false., .false., .false.)
+obs_type_info(  263) = obs_type_type(FY1_3_MVISR_RADIANCE, &
+    'FY1_3_MVISR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  264) = obs_type_type(FY1_4_MVISR_RADIANCE, &
+    'FY1_4_MVISR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  265) = obs_type_type(MTSAT_1_IMAGER_RADIANCE, &
+    'MTSAT_1_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  266) = obs_type_type(MTSAT_2_IMAGER_RADIANCE, &
+    'MTSAT_2_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  267) = obs_type_type(CORIOLIS_1_WINDSAT_TB, &
+    'CORIOLIS_1_WINDSAT_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  268) = obs_type_type(JPSS_0_ATMS_TB, &
+    'JPSS_0_ATMS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  269) = obs_type_type(JPSS_0_VIIRS_RADIANCE, &
+    'JPSS_0_VIIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  270) = obs_type_type(SENTINEL3_1_SLSTR_RADIANCE, &
+    'SENTINEL3_1_SLSTR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  271) = obs_type_type(SENTINEL3_2_SLSTR_RADIANCE, &
+    'SENTINEL3_2_SLSTR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  272) = obs_type_type(MEGHATR_1_SAPHIR_TB, &
+    'MEGHATR_1_SAPHIR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  273) = obs_type_type(MEGHATR_1_MADRAS_TB, &
+    'MEGHATR_1_MADRAS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  274) = obs_type_type(FY3_1_MWTS_TB, &
+    'FY3_1_MWTS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  275) = obs_type_type(FY3_1_MWHS_TB, &
+    'FY3_1_MWHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  276) = obs_type_type(FY3_1_IRAS_RADIANCE, &
+    'FY3_1_IRAS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  277) = obs_type_type(FY3_1_MWRI_TB, &
+    'FY3_1_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  278) = obs_type_type(FY3_2_MWTS_TB, &
+    'FY3_2_MWTS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  279) = obs_type_type(FY3_2_MWHS_TB, &
+    'FY3_2_MWHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  280) = obs_type_type(FY3_2_MWRI_TB, &
+    'FY3_2_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  281) = obs_type_type(FY3_3_MWRI_TB, &
+    'FY3_3_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  282) = obs_type_type(FY3_3_MWTS2_TB, &
+    'FY3_3_MWTS2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  283) = obs_type_type(FY3_3_MWHS2_TB, &
+    'FY3_3_MWHS2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  284) = obs_type_type(FY3_3_MERSI1_RADIANCE, &
+    'FY3_3_MERSI1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  285) = obs_type_type(FY3_4_MWRI_TB, &
+    'FY3_4_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  286) = obs_type_type(FY3_4_MWTS2_TB, &
+    'FY3_4_MWTS2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  287) = obs_type_type(FY3_4_MWHS2_TB, &
+    'FY3_4_MWHS2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  288) = obs_type_type(FY3_4_MERSI2_RADIANCE, &
+    'FY3_4_MERSI2_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  289) = obs_type_type(COMS_1_MI_RADIANCE, &
+    'COMS_1_MI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  290) = obs_type_type(METEOR_M_1_MSUMR_RADIANCE, &
+    'METEOR_M_1_MSUMR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  291) = obs_type_type(METEOR_M_2_MSUMR_RADIANCE, &
+    'METEOR_M_2_MSUMR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  292) = obs_type_type(METEOR_M_2_MTVZAGY_TB, &
+    'METEOR_M_2_MTVZAGY_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  293) = obs_type_type(CALIPSO_1_IIR_RADIANCE, &
+    'CALIPSO_1_IIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  294) = obs_type_type(GCOM_W_1_AMSR2_TB, &
+    'GCOM_W_1_AMSR2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  295) = obs_type_type(NIMBUS_3_MRIR_RADIANCE, &
+    'NIMBUS_3_MRIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  296) = obs_type_type(NIMBUS_4_THIR_RADIANCE, &
+    'NIMBUS_4_THIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  297) = obs_type_type(NIMBUS_5_THIR_RADIANCE, &
+    'NIMBUS_5_THIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  298) = obs_type_type(NIMBUS_6_HIRS_RADIANCE, &
+    'NIMBUS_6_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  299) = obs_type_type(NIMBUS_6_SCAMS_TB, &
+    'NIMBUS_6_SCAMS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  300) = obs_type_type(NIMBUS_6_THIR_RADIANCE, &
+    'NIMBUS_6_THIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  301) = obs_type_type(NIMBUS_7_SMMR_TB, &
+    'NIMBUS_7_SMMR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  302) = obs_type_type(NIMBUS_7_THIR_RADIANCE, &
+    'NIMBUS_7_THIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  303) = obs_type_type(HIMAWARI_8_AHI_RADIANCE, &
+    'HIMAWARI_8_AHI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  304) = obs_type_type(HIMAWARI_9_AHI_RADIANCE, &
+    'HIMAWARI_9_AHI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  305) = obs_type_type(MTG_1_FCI_RADIANCE, &
+    'MTG_1_FCI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  306) = obs_type_type(SARAL_1_ALTIKA_TB, &
+    'SARAL_1_ALTIKA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  307) = obs_type_type(METOPSG_1_ICI_TB, &
+    'METOPSG_1_ICI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  308) = obs_type_type(METOPSG_1_METIMAGE_RADIANCE, &
+    'METOPSG_1_METIMAGE_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  309) = obs_type_type(METOPSG_1_MWS_TB, &
+    'METOPSG_1_MWS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  310) = obs_type_type(METOPSG_1_MWI_TB, &
+    'METOPSG_1_MWI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  311) = obs_type_type(LANDSAT_4_TM_RADIANCE, &
+    'LANDSAT_4_TM_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  312) = obs_type_type(LANDSAT_5_TM_RADIANCE, &
+    'LANDSAT_5_TM_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  313) = obs_type_type(LANDSAT_7_TM_RADIANCE, &
+    'LANDSAT_7_TM_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  314) = obs_type_type(LANDSAT_8_TIRS_RADIANCE, &
+    'LANDSAT_8_TIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  315) = obs_type_type(JASON_2_AMR_TB, &
+    'JASON_2_AMR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  316) = obs_type_type(GPM_1_GMI_TB, &
+    'GPM_1_GMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  317) = obs_type_type(GPM_1_DPR_TB, &
+    'GPM_1_DPR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  318) = obs_type_type(INSAT3_4_IMAGER_RADIANCE, &
+    'INSAT3_4_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  319) = obs_type_type(INSAT3_4_SOUNDER_RADIANCE, &
+    'INSAT3_4_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  320) = obs_type_type(INSAT3_5_IMAGER_RADIANCE, &
+    'INSAT3_5_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  321) = obs_type_type(INSAT3_5_SOUNDER_RADIANCE, &
+    'INSAT3_5_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  322) = obs_type_type(TICFIRE_1_MBFIRI_RADIANCE, &
+    'TICFIRE_1_MBFIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  323) = obs_type_type(ISS_1_ECOSTRES_RADIANCE, &
+    'ISS_1_ECOSTRES_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  324) = obs_type_type(HJ1_2_IRMSS_RADIANCE, &
+    'HJ1_2_IRMSS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  325) = obs_type_type(GKOMPSAT2_1_AMI_RADIANCE, &
+    'GKOMPSAT2_1_AMI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  326) = obs_type_type(GCOM_C_1_SGLI_RADIANCE, &
+    'GCOM_C_1_SGLI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  327) = obs_type_type(SMOS_1_MIRAS_TB, &
+    'SMOS_1_MIRAS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  328) = obs_type_type(ORS_6_COWVR_TB, &
+    'ORS_6_COWVR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  329) = obs_type_type(FY4_1_AGRI_RADIANCE, &
+    'FY4_1_AGRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  330) = obs_type_type(TROPICS_0_TROPICS_TB, &
+    'TROPICS_0_TROPICS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  331) = obs_type_type(GF5_1_VIMS_RADIANCE, &
+    'GF5_1_VIMS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
+obs_type_info(  332) = obs_type_type(HY2_1_MWRI_TB, &
+    'HY2_1_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+obs_type_info(  333) = obs_type_type(CLOUDSAT_1_CPR_TB, &
+    'CLOUDSAT_1_CPR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
+                                                                              
+
+! Default for all obs is to not assimilate or evaluate.
+! Count up number being assimilated and evaluated here.
+
+num_types_assimilate = 0
+do i = 1, max_defined_types_of_obs
+   if(assimilate_these_obs_types(i) == 'null' .or. len_trim(assimilate_these_obs_types(i)) == 0 ) exit
+   num_types_assimilate = i
+end do
+
+num_types_evaluate = 0
+do i = 1, max_defined_types_of_obs
+   if(evaluate_these_obs_types(i) == 'null' .or. len_trim(evaluate_these_obs_types(i)) == 0) exit
+   num_types_evaluate = i
+end do
+
+! Special case when all obs_types should use precomputed_FOs
+if( any(use_precomputed_FOs_these_obs_types .eq. 'all') ) then
+   num_types_use_precomputed_FOs = num_types_assimilate + num_types_evaluate
+   j = 1
+   if ( num_types_assimilate > 0 ) then
+      use_precomputed_FOs_these_obs_types(j:num_types_assimilate) = assimilate_these_obs_types(1:num_types_assimilate)
+      j = j + num_types_assimilate
+   endif
+   if ( num_types_evaluate > 0 ) use_precomputed_FOs_these_obs_types(j:num_types_use_precomputed_FOs) = evaluate_these_obs_types(1:num_types_evaluate)
+else
+   num_types_use_precomputed_FOs = 0
+   do i = 1, max_defined_types_of_obs
+      if(use_precomputed_FOs_these_obs_types(i) == 'null' .or.  len_trim(use_precomputed_FOs_these_obs_types(i)) == 0) exit
+      num_types_use_precomputed_FOs = i
+   end do
+endif
+
+if (do_output() .and. (num_types_assimilate > 0 .or. &
+                       num_types_evaluate > 0   .or. &
+                       num_types_use_precomputed_FOs > 0 )) then
+   call log_it('')
+   call log_it('Assimilate_these_obs_types:')
+   if (num_types_assimilate < 1) then
+         call log_it('   none')
+   else
+      do i = 1, num_types_assimilate
+         call log_it('   '//trim(assimilate_these_obs_types(i)))
+      enddo
+   endif
+
+   call log_it('Evaluate_these_obs_types:')
+   if (num_types_evaluate <1) then
+         call log_it('   none')
+   else
+      do i = 1, num_types_evaluate
+         call log_it('   '//trim(evaluate_these_obs_types(i)))
+      enddo
+   endif
+
+   call log_it('Use the precomputed Prior Forward Operators for these obs types:')
+   if (num_types_use_precomputed_FOs <1) then
+         call log_it('   none')
+   else
+      do i = 1, num_types_use_precomputed_FOs
+         call log_it('   '//trim(use_precomputed_FOs_these_obs_types(i)))
+      enddo
+   endif
+   call log_it('')
+endif
+
+
+! Figure out which types are being used, look for errors
+! Start by loading up types to assimilate
+if (num_types_assimilate > 0) then
+   do i = 1, num_types_assimilate
+      ! Search for the matching string
+      do j = 1, max_defined_types_of_obs
+         if(assimilate_these_obs_types(i) == obs_type_info(j)%name) then
+            obs_type_info(j)%assimilate = .true.
+            goto 44
+         endif
+      end do
+      ! Falling off the end is an error
+      write(err_string, *) '"',trim(assimilate_these_obs_types(i)), &
+         '" from obs_kind_nml::assimilate_these_obs_types is not a legal observation type'
+      call error_handler(E_ERR, routine, err_string, source)
+      44 continue
+   end do
+endif
+
+! Now look for types to evaluate
+if (num_types_evaluate > 0) then
+   do i = 1, num_types_evaluate
+      ! Search for the matching string
+      do j = 1, max_defined_types_of_obs
+         if(evaluate_these_obs_types(i) == obs_type_info(j)%name) then
+            obs_type_info(j)%evaluate = .true.
+            goto 55
+         endif
+      end do
+      ! Falling off the end is an error
+      write(err_string, *) '"',trim(evaluate_these_obs_types(i)), &
+         '" from obs_kind_nml::evaluate_these_obs_types is not a legal observation type'
+      call error_handler(E_ERR, routine, err_string, source)
+      55 continue
+   end do
+endif
+
+if (num_types_use_precomputed_FOs > 0) then
+   do i = 1, num_types_use_precomputed_FOs
+      ! Search for the matching string
+      do j = 1, max_defined_types_of_obs
+         if(use_precomputed_FOs_these_obs_types(i) == obs_type_info(j)%name) then
+            obs_type_info(j)%use_precomputed_FO = .true.
+            goto 66
+         endif
+      end do
+      ! Falling off the end is an error
+      write(err_string, *) '"',trim(use_precomputed_FOs_these_obs_types(i)), &
+         '" from obs_kind_nml::use_precomputed_FOs_these_obs_types is not a legal observation type'
+      call error_handler(E_ERR, routine, err_string, source)
+      66 continue
+   end do
+endif
+
+! Make it an error to ask to assimilate AND evaluate the same obs kind
+do i = 1, max_defined_types_of_obs
+   if(obs_type_info(i)%evaluate .and. obs_type_info(i)%assimilate) then
+      write(err_string, *) 'Illegal to both evaluate and assimilate same type ', &
+         trim(obs_type_info(i)%name)
+      call error_handler(E_ERR, routine, err_string, source)
+   endif
+end do
+
+end subroutine initialize_module
+
+!---------------------------------------------------------------------------
+
+function map_type_of_obs_table(obs_def_index)
+
+! Argument is the index from the obs_def; needs to be mapped to the appropriate
+! Integer storage index
+integer, intent(in) :: obs_def_index
+integer             :: map_type_of_obs_table
+
+character(len = 169) :: err_string
+integer :: i
+character(len=*), parameter :: routine = "map_type_of_obs_table"
+
+if ( .not. module_initialized ) call initialize_module
+
+! Need to search through the first map column to find this obs_def_index value
+! Then return the index into table in this module from corresponding row in
+! second column.
+do i = 1, max_defined_types_of_obs
+   if(toc_mod_type_map%toc_type_index(i) == obs_def_index) then
+      map_type_of_obs_table = toc_mod_type_map%mod_type_index(i)
+      return
+   endif
+end do
+
+! Error, didn't find this obs_def_index in the map
+write(err_string, *) 'Could not find obs type index ', obs_def_index, &
+   ' in current type list compiled in this program'
+call error_handler(E_ERR, routine, err_string, source)
+
+end function map_type_of_obs_table
+
+!----------------------------------------------------------------------------
+
+function get_name_for_type_of_obs(obs_type_ind)
+
+! Returns observation type name
+
+integer, intent(in) :: obs_type_ind
+character(len=obstypelength) :: get_name_for_type_of_obs
+character(len=*), parameter :: routine = 'get_name_for_type_of_obs'
+
+if ( .not. module_initialized ) call initialize_module
+
+call validate_obs_type_index(obs_type_ind, routine)
+
+get_name_for_type_of_obs = obs_type_info(obs_type_ind)%name
+
+end function get_name_for_type_of_obs
+
+!----------------------------------------------------------------------------
+! Added by TRW to handle matching RAW variable types to their strings
+! as well as the derived types - this will make the restart file
+! handling more readable.
+
+function get_name_for_quantity(obs_qty_ind)
+
+! Returns observation quantity name
+
+integer, intent(in) :: obs_qty_ind
+character(len=obstypelength) :: get_name_for_quantity
+
+character(len=*), parameter :: routine = 'get_name_for_quantity'
+
+if (.not. module_initialized) call initialize_module
+
+call validate_obs_qty_index(obs_qty_ind, routine)
+
+get_name_for_quantity = obs_qty_info(obs_qty_ind)%name
+
+end function get_name_for_quantity
+!----------------------------------------------------------------------------
+
+function get_index_for_type_of_obs(obs_type_name)
+
+! Returns the integer index corresponding to an observation type string name
+! Returns a -1 if this string is not in list
+
+character(len = *), intent(in)  :: obs_type_name
+integer                         :: get_index_for_type_of_obs
+
+integer :: i
+character(len=*), parameter :: routine = 'get_index_for_type_of_obs'
+
+if ( .not. module_initialized ) call initialize_module
+
+!>@todo FIXME binary search on a sorted list?
+
+do i = 1, max_defined_types_of_obs
+   if(obs_type_name == obs_type_info(i)%name) then
+      get_index_for_type_of_obs = i
+      return
+   endif
+end do
+
+get_index_for_type_of_obs = -1
+
+end function get_index_for_type_of_obs
+
+!----------------------------------------------------------------------------
+! Added by TRW to handle matching RAW variable types to their strings
+! as well as the derived types - this will make the restart file
+! handling more readable.
+
+function get_index_for_quantity(obs_qty_name)
+
+! Returns the integer index corresponding to an observation quantity string name
+! Returns a -1 if this string is not in list
+
+character(len=*), intent(in)  :: obs_qty_name
+integer                       :: get_index_for_quantity
+
+integer :: i
+character(len=*), parameter :: routine = 'get_index_for_quantity'
+
+if (.not. module_initialized) call initialize_module
+
+do i = 0, max_defined_quantities
+   if(obs_qty_name == obs_qty_info(i)%name) then
+      get_index_for_quantity = i
+      return
+   end if
+end do
+
+get_index_for_quantity = -1
+
+end function get_index_for_quantity
+
+!----------------------------------------------------------------------------
+! Add a name/value pair to this quantity.
+! Error if index out of range
+!
+! FIXME: find a better identifier than 'item' here? meta something?
+
+subroutine set_namevalue_for_quantity(obs_qty_ind, itemname, itemvalue)
+
+integer, intent(in) :: obs_qty_ind
+character(len=*), intent(in) :: itemname
+character(len=*), intent(in) :: itemvalue
+
+integer :: i
+character(len=*), parameter :: routine = 'set_namevalue_for_quantity'
+
+if (.not. module_initialized) call initialize_module
+
+call validate_obs_qty_index(obs_qty_ind, routine)
+
+call validate_metadata_strings(obs_qty_ind, itemname, itemvalue)
+
+! FIXME: are replicated names an error?
+! they could replace existing value for that name; or error out.
+
+do i=1, obs_qty_info(obs_qty_ind)%nitems
+   if (obs_qty_info(obs_qty_ind)%itemname(i) == itemname) then
+      ! item already found - do what? replace
+      obs_qty_info(obs_qty_ind)%itemvalue(i) = itemvalue
+      ! or error out?
+      ! call error_handler()
+      return
+   endif
+enddo
+
+! add new entry
+i = obs_qty_info(obs_qty_ind)%nitems + 1
+obs_qty_info(obs_qty_ind)%nitems = i
+obs_qty_info(obs_qty_ind)%itemname(i) = itemname
+obs_qty_info(obs_qty_ind)%itemvalue(i) = itemvalue
+
+end subroutine set_namevalue_for_quantity
+
+!----------------------------------------------------------------------------
+! Get number of name/value items for quantity
+! Error if qty index out of range
+
+! (FIXME: terminology: metadata vs item vs ??)
+
+function get_num_items_for_quantity(obs_qty_ind)
+
+integer, intent(in) :: obs_qty_ind
+integer :: get_num_items_for_quantity
+
+integer :: i
+character(len=*), parameter :: routine = 'get_num_items_for_quantity'
+
+if (.not. module_initialized) call initialize_module
+
+call validate_obs_qty_index(obs_qty_ind, routine)
+
+get_num_items_for_quantity = obs_qty_info(obs_qty_ind)%nitems
+
+end function get_num_items_for_quantity
+
+!----------------------------------------------------------------------------
+! Get string value for item name by index for quantity of name/value pair
+! Error if qty index out of range
+! Error if item index out of range
+
+! (FIXME: terminology: metadata vs item vs ??)
+
+function get_itemname_for_quantity(obs_qty_ind, item_index)
+
+integer, intent(in) :: obs_qty_ind
+integer, intent(in) :: item_index
+character(len=namelen) :: get_itemname_for_quantity
+
+integer :: i
+character(len=*), parameter :: routine = 'get_itemname_for_quantity'
+
+if (.not. module_initialized) call initialize_module
+
+! this validates the quantity index first, then the item index.
+! if it returns w/o error, both indices are safe to use.
+call validate_qty_item_index(obs_qty_ind, item_index, routine)
+
+get_itemname_for_quantity = obs_qty_info(obs_qty_ind)%itemname(item_index)
+
+end function get_itemname_for_quantity
+
+!----------------------------------------------------------------------------
+! Get string value for quantity by (qty index, item name) of name/value pair
+! Error if qty index out of range
+! Returns '' if no item name match  (or 'null'?)
+
+! (FIXME: terminology: metadata vs item vs ??)
+
+function get_itemvalue_for_quantity(obs_qty_ind, itemname)
+
+integer, intent(in) :: obs_qty_ind
+character(len=*), intent(in) :: itemname
+character(len=valuelen) :: get_itemvalue_for_quantity
+
+integer :: i
+character(len=*), parameter :: routine = 'get_itemvalue_for_quantity'
+
+if (.not. module_initialized) call initialize_module
+
+call validate_obs_qty_index(obs_qty_ind, routine)
+
+do i=1, obs_qty_info(obs_qty_ind)%nitems
+   if (obs_qty_info(obs_qty_ind)%itemname(i) == itemname) then
+      get_itemvalue_for_quantity = obs_qty_info(obs_qty_ind)%itemvalue(i)
+      return
+   endif
+enddo
+
+get_itemvalue_for_quantity = ''
+
+end function get_itemvalue_for_quantity
+
+!----------------------------------------------------------------------------
+! convenience routine, could also be queried using the generic name=value interface
+! Get bounds values for quantity by index
+! Returns .false. if both min and max are missing_r8
+! A potential code shortcut for calling code if no bounds are present
+
+function has_bounds_for_quantity(obs_qty_ind, minbound, maxbound)
+
+integer,  intent(in)  :: obs_qty_ind
+real(r8), intent(out) :: minbound
+real(r8), intent(out) :: maxbound
+logical :: has_bounds_for_quantity
+
+integer :: i
+character(len=valuelen) :: boundstring
+character(len=*), parameter :: routine = 'get_bounds_for_quantity'
+
+if (.not. module_initialized) call initialize_module
+
+call validate_obs_qty_index(obs_qty_ind, routine)
+
+minbound = MISSING_R8
+maxbound = MISSING_R8
+
+do i=1, obs_qty_info(obs_qty_ind)%nitems
+   if (obs_qty_info(obs_qty_ind)%itemname(i) == "minbound") then
+      boundstring = obs_qty_info(obs_qty_ind)%itemvalue(i)
+      minbound = string_to_real(boundstring)
+   endif
+   if (obs_qty_info(obs_qty_ind)%itemname(i) == "maxbound") then
+      boundstring = obs_qty_info(obs_qty_ind)%itemvalue(i)
+      maxbound = string_to_real(boundstring)
+   endif
+enddo
+
+has_bounds_for_quantity = .not. (minbound == MISSING_R8 .and. maxbound == MISSING_R8)
+
+end function has_bounds_for_quantity
+
+!----------------------------------------------------------------------------
+!> Accessor function to return observation type count
+
+function get_num_types_of_obs()
+
+integer :: get_num_types_of_obs
+
+if ( .not. module_initialized ) call initialize_module
+
+get_num_types_of_obs = max_defined_types_of_obs
+
+end function get_num_types_of_obs
+
+!----------------------------------------------------------------------------
+!> Accessor function to return observation quantity count
+
+function get_num_quantities()
+
+integer :: get_num_quantities
+
+if (.not. module_initialized) call initialize_module
+
+get_num_quantities = max_defined_quantities
+
+end function get_num_quantities
+
+!----------------------------------------------------------------------------
+!> Returns true if this obs_type is being assimilated
+
+function assimilate_this_type_of_obs(obs_type_ind)
+
+logical             :: assimilate_this_type_of_obs
+integer, intent(in) :: obs_type_ind
+
+character(len=*), parameter :: routine = 'assimilate_this_type_of_obs'
+
+if ( .not. module_initialized ) call initialize_module
+
+call validate_obs_type_index(obs_type_ind, routine)
+
+assimilate_this_type_of_obs = obs_type_info(obs_type_ind)%assimilate
+
+end function assimilate_this_type_of_obs
+
+!----------------------------------------------------------------------------
+!> Returns true if this obs_type is being evaluated
+
+function evaluate_this_type_of_obs(obs_type_ind)
+
+logical             :: evaluate_this_type_of_obs
+integer, intent(in) :: obs_type_ind
+
+character(len=*), parameter :: routine = 'evaluate_this_type_of_obs'
+
+if ( .not. module_initialized ) call initialize_module
+
+call validate_obs_type_index(obs_type_ind, routine)
+
+evaluate_this_type_of_obs = obs_type_info(obs_type_ind)%evaluate
+
+end function evaluate_this_type_of_obs
+
+!----------------------------------------------------------------------------
+!> Returns true if this obs_type should use externally computed priors
+
+function use_ext_prior_this_type_of_obs(obs_type_ind)
+
+logical             :: use_ext_prior_this_type_of_obs
+integer, intent(in) :: obs_type_ind
+
+character(len=*), parameter :: routine = 'use_ext_prior_this_type_of_obs'
+
+if ( .not. module_initialized ) call initialize_module
+
+call validate_obs_type_index(obs_type_ind, routine)
+
+use_ext_prior_this_type_of_obs = obs_type_info(obs_type_ind)%use_precomputed_FO
+
+end function use_ext_prior_this_type_of_obs
+
+!----------------------------------------------------------------------------
+!> Returns the associated generic quantity associated with the
+!> specific type of this observation
+
+function get_quantity_for_type_of_obs(obs_type_ind)
+
+integer, intent(in) :: obs_type_ind
+integer             :: get_quantity_for_type_of_obs
+
+character(len=*), parameter :: routine = 'get_quantity_for_type_of_obs'
+
+if ( .not. module_initialized ) call initialize_module
+
+call validate_obs_type_index(obs_type_ind, routine)
+
+get_quantity_for_type_of_obs = obs_type_info(obs_type_ind)%quantity
+
+end function get_quantity_for_type_of_obs
+
+!----------------------------------------------------------------------------
+!> Writes out the observation type strings and corresponding integer
+!> indices as a header for an obs_sequence file.
+
+subroutine write_type_of_obs_table(ifile, fform, use_list)
+
+integer, intent(in)                    :: ifile
+character(len=*), intent(in), optional :: fform
+integer,          intent(in), optional :: use_list(:)
+
+integer :: i, ntypes
+logical :: is_ascii, restrict
+character(len=*), parameter :: routine = 'write_type_of_obs_table'
+
+if ( .not. module_initialized ) call initialize_module
+
+is_ascii = ascii_file_format(fform)
+
+! Write the 20 character identifier to indicate the start of a type table.
+! To maintain complete backwards compatibility with the original read
+! code this string must start in column 1.
+! you cannot use: write(ifile, *) 'string'  because the output string
+! will start in col 2.  the string either has to be part of the format
+! argument to write(), or you have to use a separate format statement.
+! FIXME: this needs to be obs_type_definitions for write.  read has to
+! accept either kind (now quantity and was incorrect for this table in
+! any case) or type.
+if (is_ascii) then
+   write(ifile,  "('obs_type_definitions')")   ! see note above!
+else
+   write(ifile)    'obs_type_definitions'
+endif
+
+! If this routine is called with a list of which types are actually
+! being used, restrict the table of contents to only those.
+! Otherwise, write all known types.
+if (present(use_list)) then
+   ! make sure the list is the right length
+   if (size(use_list) /= max_defined_types_of_obs) then
+      call error_handler(E_ERR, routine, &
+              'use_list(:) must be the same length as number of types', source)
+   endif
+
+   ntypes = count(use_list(:) > 0)
+   restrict = .true.
+else
+   ntypes = max_defined_types_of_obs
+   restrict = .false.
+endif
+
+if (is_ascii) then
+   write(ifile, *) ntypes
+else
+   write(ifile)    ntypes
+endif
+
+do i = 1, max_defined_types_of_obs
+   if (restrict) then
+       if (use_list(i) == 0) cycle
+   endif
+
+   if (is_ascii) then
+      write(ifile, *) obs_type_info(i)%index, obs_type_info(i)%name
+   else
+      write(ifile)    obs_type_info(i)%index, obs_type_info(i)%name
+   endif
+end do
+
+end subroutine write_type_of_obs_table
+
+!----------------------------------------------------------------------------
+!> Reads the observation type strings and corresponding integer
+!> indices as a header for an obs_sequence file.
+
+subroutine read_type_of_obs_table(ifile, pre_I_format, fform)
+
+integer,                    intent(in) :: ifile
+logical,                    intent(in) :: pre_I_format
+character(len=*), intent(in), optional :: fform
+
+character(len=20)  :: header
+character(len=obstypelength) :: o_name
+integer            :: i, num_def_types, o_index, list_index, rc
+logical            :: is_ascii
+character(len=*), parameter :: routine = 'read_type_of_obs_table'
+
+if ( .not. module_initialized ) call initialize_module
+
+! pre_I_format has been deprecated.
+if(pre_I_format) then
+   call error_handler(E_ERR, routine, 'pre_I_format no longer supported', source)
+endif
+
+is_ascii = ascii_file_format(fform)
+
+! Read the 20 character identifier which identifies the start
+! of the obstype number/name table for this sequence file.
+if (is_ascii) then
+   read(ifile, *, iostat=rc) header
+else
+   read(ifile,    iostat=rc) header
+endif
+
+if(rc /= 0 .or. (header /= 'obs_type_definitions' .and. header /= 'obs_kind_definitions')) then
+   write(msg_string,  *) 'Did not find expected "obs_type_definitions" or "obs_kind_definitions" string at start of obs_seq file '
+   write(msg_string1, *) 'Possible causes include: not an obs_seq file format, corrupted file, or wrong-endian binary file'
+   call error_handler(E_ERR, routine, msg_string, source, text2=msg_string1)
+endif
+
+! Loop through the list to read the integer indices and strings
+! For all the defined observation types
+! Set up the map from types in the obs_sequence file to those
+! in the data structure in this module.
+if (is_ascii) then
+   read(ifile, *) num_def_types
+else
+   read(ifile)    num_def_types
+endif
+
+do i = 1, num_def_types
+   if (is_ascii) then
+      read(ifile, *) o_index, o_name
+   else
+      read(ifile)    o_index, o_name
+   endif
+
+   ! What is the integer associated with this o_name in this module?
+   list_index = get_index_for_type_of_obs(o_name)
+
+   ! Check for error
+   if(list_index == -1) then
+      write(msg_string, *) 'Did not find observation type "', o_name, &
+         '" in current type list compiled in this program'
+      call error_handler(E_ERR, routine, msg_string, source)
+   endif
+
+   toc_mod_type_map%toc_type_index(i) = o_index
+   toc_mod_type_map%mod_type_index(i) = list_index
+end do
+
+end subroutine read_type_of_obs_table
+
+!----------------------------------------------------------------------------
+!> Print a menu and read an obs type number
+!> (Used for example in an interactive program)
+
+function get_type_of_obs_from_menu()
+
+integer :: get_type_of_obs_from_menu
+
+integer :: i, ierr
+character(len=obstypelength) :: in
+character(len=*), parameter :: routine = 'get_type_of_obs_from_menu'
+
+if ( .not. module_initialized ) call initialize_module
+
+! Should only do types that have been selected by preprocessor
+! since those are being evaluated or assimilated.
+21 continue
+write(*, *) '     ', 'Input the name of the observation types from table below'
+write(*, *) '     ', 'OR input (-1 * state variable index) for identity observations:'
+do i = 1, max_defined_types_of_obs
+   if(assimilate_this_type_of_obs(i) .or. evaluate_this_type_of_obs(i)) &
+      write(*, *) '     ',  obs_type_info(i)%index, trim(obs_type_info(i)%name)
+end do
+
+! Read the input as a string, convert to integers as appropriate
+read(*, '(A)') in
+
+! If string is a positive or negative number, convert it to integer
+read(in, *, IOSTAT = ierr) get_type_of_obs_from_menu
+if(ierr /= 0) then
+   get_type_of_obs_from_menu = get_index_for_type_of_obs(in)
+   ! If string isn't found, need to reprompt
+   if(get_type_of_obs_from_menu == -1) then
+      write(*, *) trim(in) // ' is not a supported type: Please try again.'
+      goto 21
+   endif
+else
+   ! Make sure that number entered isn't 0 or too larg
+   if(get_type_of_obs_from_menu == 0 .or. get_type_of_obs_from_menu > max_defined_types_of_obs) then
+      write(*, *) get_type_of_obs_from_menu, 'is not a legal entry: Please try again.'
+      goto 21
+   endif
+endif
+
+! Make sure
+
+end function get_type_of_obs_from_menu
+
+!----------------------------------------------------------------------------
+!> call this routine only where if an index is expected to be valid.
+!> (it is a fatal error if not.)  don't call this routine from code where
+!> an out-of-range value is handled (e.g. it returns -1 instead).
+
+subroutine validate_obs_type_index(test_me, calling_routine)
+
+integer,          intent(in) :: test_me
+character(len=*), intent(in) :: calling_routine
+
+if (test_me < 1 .or. test_me > max_defined_types_of_obs) then
+   write(msg_string,'(A,I6,A,I6)') 'obs type number ', test_me, &
+                                   ' must be between 1 and ', max_defined_types_of_obs
+   call error_handler(E_ERR, calling_routine, msg_string, source)
+endif
+
+end subroutine validate_obs_type_index
+
+!----------------------------------------------------------------------------
+!> call this routine only where if an index is expected to be valid.
+!> (it is a fatal error if not.)  don't call this routine from code where
+!> an out-of-range value is handled (e.g. it returns -1 instead).
+
+subroutine validate_obs_qty_index(test_me, calling_routine)
+
+integer,          intent(in) :: test_me
+character(len=*), intent(in) :: calling_routine
+
+if (test_me < 0 .or. test_me > max_defined_quantities) then
+   write(msg_string,'(A,I6,A,I6)') 'obs quantity number ', test_me, &
+                                   ' must be between 0 and ', max_defined_quantities
+   call error_handler(E_ERR, calling_routine, msg_string, source)
+endif
+
+end subroutine validate_obs_qty_index
+
+!----------------------------------------------------------------------------
+!> call this routine only where if an index is expected to be valid.
+!> (it is a fatal error if not.)  don't call this routine from code where
+!> an out-of-range value is handled (e.g. it returns -1 instead).
+
+subroutine validate_qty_item_index(qty_index, test_me, calling_routine)
+integer,          intent(in) :: qty_index
+integer,          intent(in) :: test_me
+character(len=*), intent(in) :: calling_routine
+
+integer :: nitems
+
+! test before using index
+call validate_obs_qty_index(qty_index, calling_routine)
+
+nitems = obs_qty_info(qty_index)%nitems
+
+if (test_me < 1 .or. test_me > nitems) then
+   write(msg_string,'(3(A,I6))') 'item number ', test_me, ' for obs quantity number ', qty_index, &
+                                   ' ('//trim(obs_type_info(qty_index)%name)//') must be between 1 and ', nitems
+   call error_handler(E_ERR, calling_routine, msg_string, source)
+endif
+
+end subroutine validate_qty_item_index
+
+!----------------------------------------------------------------------------
+
+subroutine validate_metadata_strings(obs_qty_ind, itemname, itemvalue)
+
+integer, intent(in) :: obs_qty_ind
+character(len=*), intent(in) :: itemname
+character(len=*), intent(in) :: itemvalue
+
+character(len=*), parameter :: routine = 'validate_metadata_strings'
+
+if (len_trim(itemname) > namelen) then
+  write(msg_string, *) 'quantity ', obs_qty_ind, ' metadata name "'//trim(itemname)//'" must be shorter than', namelen
+  write(msg_string1, *) 'quantity ', obs_qty_ind, ' is ', get_name_for_quantity(obs_qty_ind)
+  call error_handler(E_ERR, routine, msg_string, source, text2=msg_string1)
+endif
+
+if (len_trim(itemvalue) > valuelen) then
+  write(msg_string, *) 'quantity ', obs_qty_ind, ' metadata value "'//trim(itemvalue)//'" must be shorter than', valuelen
+  write(msg_string1, *) 'quantity ', obs_qty_ind, ' is ', get_name_for_quantity(obs_qty_ind)
+  call error_handler(E_ERR, routine, msg_string, source, text2=msg_string1)
+endif
+
+end subroutine validate_metadata_strings
+
+!----------------------------------------------------------------------------
+
+end module obs_kind_mod
+!end module obs_qty_mod