diff --git a/.github/workflows/extbuild.yml b/.github/workflows/extbuild.yml
index fafc46f4..6e26b40a 100644
--- a/.github/workflows/extbuild.yml
+++ b/.github/workflows/extbuild.yml
@@ -18,11 +18,13 @@ jobs:
       FC: mpifort
       CXX: mpicxx
       CPPFLAGS: "-I/usr/include -I/usr/local/include"
+
       # Versions of all dependencies can be updated here
-      ESMF_VERSION: v8.4.0
+      ESMF_VERSION: v8.4.2
       PNETCDF_VERSION: checkpoint.1.12.3
       NETCDF_FORTRAN_VERSION: v4.6.0
-      PIO_VERSION: pio2_5_10
+      PIO_VERSION: pio2_6_0
+      CDEPS_VERSION: cdeps1.0.15
     steps:
       - uses: actions/checkout@v3
         # Build the ESMF library, if the cache contains a previous build
@@ -50,14 +52,14 @@ jobs:
           key: ${{ runner.os }}-${{ env.PIO_VERSION }}.pio
       - name: Build ParallelIO
         if: steps.cache-ParallelIO.outputs.cache-hit != 'true'
-        uses: NCAR/ParallelIO/.github/actions/parallelio_cmake@9390e30e29d4ebbfbef0fc72162cacd9e8f25e4e
+        uses: NCAR/ParallelIO/.github/actions/parallelio_cmake@pio2_6_0
         with:
           parallelio_version: ${{ env.ParallelIO_VERSION }}
           enable_fortran: True
           install_prefix: $HOME/pio
       - name: Build ESMF
         if: steps.cache-esmf.outputs.cache-hit != 'true'
-        uses: ESCOMP/CDEPS/.github/actions/buildesmf@e06246b560d3132170bb1a5443fa3d65dfbd2040
+        uses: ESCOMP/CDEPS/.github/actions/buildesmf@cdeps1.0.15
         with:
           esmf_version: ${{ env.ESMF_VERSION }}
           esmf_bopt: g
@@ -67,12 +69,39 @@ jobs:
           netcdf_fortran_path: /usr
           pnetcdf_path: /usr
           parallelio_path: $HOME/pio
+      - name: Cache CDEPS
+        id: cache-cdeps
+        uses: actions/cache@v3
+        with:
+          path: $HOME/cdeps
+          key: ${{ runner.os }}-${{ env.CDEPS_VERSION }}.cdeps
+          
+      - name: checkout CDEPS
+        uses: actions/checkout@v3
+        with:
+          repository: ESCOMP/CDEPS
+          path: cdeps-src
+          ref: ${{ env.CDEPS_VERSION }}
+      - name: Build CDEPS
+        if: steps.cache-cdeps.outputs.cache-hit != 'true'
+        uses: ESCOMP/CDEPS/.github/actions/buildcdeps@cdeps1.0.15
+        with:
+          esmfmkfile: $HOME/ESMF/lib/libg/Linux.gfortran.64.openmpi.default/esmf.mk
+          pio_path: $HOME/pio
+          src_root: ${GITHUB_WORKSPACE}/cdeps-src
+          cmake_flags: " -Wno-dev -DCMAKE_BUILD_TYPE=DEBUG -DWERROR=ON  -DCMAKE_Fortran_FLAGS=\"-DCPRGNU -g -Wall \
+          -ffree-form -ffree-line-length-none -fallow-argument-mismatch \""
+      
       - name: Build CMEPS
         run: |
           export ESMFMKFILE=$HOME/ESMF/lib/libg/Linux.gfortran.64.openmpi.default/esmf.mk
           export PIO=$HOME/pio
           mkdir build-cmeps
           pushd build-cmeps
-          cmake -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_Fortran_FLAGS="-g -Wall -Werror -ffree-form -ffree-line-length-none  -Wno-unused-dummy-argument" ../
+          cmake -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_Fortran_FLAGS="-g -Wall -Werror -ffree-form -ffree-line-length-none  -Wno-unused-dummy-argument -I /home/runner/work/CMEPS/CMEPS/build-cdeps/share" ../
           make VERBOSE=1
           popd
+
+      - name: Setup tmate session
+        if: ${{ failure() }}
+        uses: mxschmitt/action-tmate@v3
diff --git a/cime_config/namelist_definition_drv.xml b/cime_config/namelist_definition_drv.xml
index 5812542d..d9001cfb 100644
--- a/cime_config/namelist_definition_drv.xml
+++ b/cime_config/namelist_definition_drv.xml
@@ -716,6 +716,17 @@
       <value>$ESMF_VERBOSITY_LEVEL</value>
     </values>
   </entry>
+  <entry id="check_for_nans">
+    <type>logical</type>
+    <category>performance</category>
+    <group>MED_attributes</group>
+    <desc>
+      Check for NaN values in fields returned from mediator to components.  This has a small performance impact.
+    </desc>
+    <values>
+      <value>.true.</value>
+    </values>
+  </entry>
   <entry id="atm_nx" modify_via_xml="ATM_NX">
     <type>integer</type>
     <category>control</category>
diff --git a/mediator/med.F90 b/mediator/med.F90
index e7c6da9d..56fcb762 100644
--- a/mediator/med.F90
+++ b/mediator/med.F90
@@ -661,6 +661,7 @@ subroutine AdvertiseFields(gcomp, importState, exportState, clock, rc)
     use NUOPC , only : NUOPC_CompAttributeGet, NUOPC_CompAttributeSet, NUOPC_CompAttributeAdd
     use esmFlds, only : med_fldlist_init1, med_fld_GetFldInfo, med_fldList_entry_type
     use med_phases_history_mod, only : med_phases_history_init
+    use med_methods_mod       , only : mediator_checkfornans  
 
     ! input/output variables
     type(ESMF_GridComp)  :: gcomp
@@ -916,6 +917,24 @@ subroutine AdvertiseFields(gcomp, importState, exportState, clock, rc)
        end if
     end do ! end of ncomps loop
 
+    ! Should mediator check for NaNs?
+    call NUOPC_CompAttributeGet(gcomp, name="check_for_nans", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc)
+    if (ChkErr(rc,__LINE__,u_FILE_u)) return
+    if(isPresent .and. isSet) then
+       read(cvalue, *) mediator_checkfornans       
+    else
+       mediator_checkfornans = .false.
+    endif
+    if(maintask) then
+       write(logunit,*) ' check_for_nans is ',mediator_checkfornans
+       if(mediator_checkfornans) then
+          write(logunit,*) ' Fields will be checked for NaN values when passed from mediator to component'
+       else
+          write(logunit,*) ' Fields will NOT be checked for NaN values when passed from mediator to component'
+       endif
+    endif
+
+
     if (profile_memory) call ESMF_VMLogMemInfo("Leaving "//trim(subname))
     call ESMF_LogWrite(trim(subname)//": done", ESMF_LOGMSG_INFO)
 
diff --git a/mediator/med_methods_mod.F90 b/mediator/med_methods_mod.F90
index faecf47a..54fe20ec 100644
--- a/mediator/med_methods_mod.F90
+++ b/mediator/med_methods_mod.F90
@@ -30,7 +30,7 @@ module med_methods_mod
   end interface med_methods_check_for_nans
 
   ! used/reused in module
-
+  logical, public               :: mediator_checkfornans  ! set in med.F90 AdvertiseFields
   logical                       :: isPresent
   character(len=1024)           :: msgString
   type(ESMF_FieldStatus_Flag)   :: status
@@ -2506,12 +2506,12 @@ subroutine med_methods_FB_getmesh(FB, mesh, rc)
   end subroutine med_methods_FB_getmesh
 
   !-----------------------------------------------------------------------------
-  subroutine med_methods_FB_check_for_nans(FB, rc)
-
-    use ESMF, only : ESMF_FieldBundle, ESMF_Field, ESMF_FieldBundleGet, ESMF_FieldGet
-
+  subroutine med_methods_FB_check_for_nans(FB, maintask, logunit, rc)
+    use ESMF, only  : ESMF_FieldBundle, ESMF_Field, ESMF_FieldBundleGet, ESMF_FieldGet
     ! input/output variables
     type(ESMF_FieldBundle) , intent(in)    :: FB
+    logical                , intent(in)    :: maintask
+    integer                , intent(in)    :: logunit
     integer                , intent(inout) :: rc
 
     ! local variables
@@ -2530,11 +2530,8 @@ subroutine med_methods_FB_check_for_nans(FB, rc)
     ! ----------------------------------------------
     rc = ESMF_SUCCESS
 
-#ifndef CESMCOUPLED
-    ! For now only CESM uses shr_infnan_isnan - so until other models provide this
-    RETURN
-#endif
-
+    if(.not. mediator_checkfornans) return
+    
     call ESMF_FieldBundleGet(FB, fieldCount=fieldCount, rc=rc)
     if (ChkErr(rc,__LINE__,u_FILE_u)) return
 
@@ -2571,8 +2568,6 @@ subroutine med_methods_FB_check_for_nans(FB, rc)
   end subroutine med_methods_FB_check_for_nans
 
   !-----------------------------------------------------------------------------
-#ifdef CESMCOUPLED
-
   subroutine med_methods_check_for_nans_1d(dataptr, nancount)
     use shr_infnan_mod, only: shr_infnan_isnan
     ! input/output variables
@@ -2607,26 +2602,4 @@ subroutine med_methods_check_for_nans_2d(dataptr, nancount)
     end do
   end subroutine med_methods_check_for_nans_2d
 
-#else
-
-  ! For now only CESM uses shr_infnan_isnan - so until other models provide this
-  ! nancount will just be set to zero
-
-  subroutine med_methods_check_for_nans_1d(dataptr, nancount)
-    ! input/output variables
-    real(r8) , intent(in)  :: dataptr(:)
-    integer  , intent(out) :: nancount
-
-    nancount = 0
-  end subroutine med_methods_check_for_nans_1d
-
-  subroutine med_methods_check_for_nans_2d(dataptr, nancount)
-    ! input/output variables
-    real(r8) , intent(in)  :: dataptr(:,:)
-    integer  , intent(out) :: nancount
-
-    nancount = 0
-  end subroutine med_methods_check_for_nans_2d
-#endif
-
 end module med_methods_mod
diff --git a/mediator/med_phases_prep_atm_mod.F90 b/mediator/med_phases_prep_atm_mod.F90
index bccf8e07..98728a8a 100644
--- a/mediator/med_phases_prep_atm_mod.F90
+++ b/mediator/med_phases_prep_atm_mod.F90
@@ -17,7 +17,7 @@ module med_phases_prep_atm_mod
   use med_methods_mod       , only : FB_check_for_nans => med_methods_FB_check_for_nans
   use med_merge_mod         , only : med_merge_auto
   use med_map_mod           , only : med_map_field_packed
-  use med_internalstate_mod , only : InternalState, maintask
+  use med_internalstate_mod , only : InternalState, maintask, logunit
   use med_internalstate_mod , only : compatm, compocn, compice, compname, coupling_mode
   use esmFlds               , only : med_fldlist_GetfldListTo, med_fldlist_type
   use perf_mod              , only : t_startf, t_stopf
@@ -245,7 +245,7 @@ subroutine med_phases_prep_atm(gcomp, rc)
     end if
 
     ! Check for nans in fields export to atm
-    call FB_check_for_nans(is_local%wrap%FBExp(compatm), rc=rc)
+    call FB_check_for_nans(is_local%wrap%FBExp(compatm), maintask, logunit, rc=rc)
     if (ChkErr(rc,__LINE__,u_FILE_u)) return
 
     if (dbug_flag > 5) then
diff --git a/mediator/med_phases_prep_glc_mod.F90 b/mediator/med_phases_prep_glc_mod.F90
index 97049d5b..920fb415 100644
--- a/mediator/med_phases_prep_glc_mod.F90
+++ b/mediator/med_phases_prep_glc_mod.F90
@@ -707,9 +707,9 @@ subroutine med_phases_prep_glc_avg(gcomp, rc)
        endif
     end if
 
-    ! Check for nans in fields export to atm
+    ! Check for nans in fields export to glc
     do ns = 1,is_local%wrap%num_icesheets
-       call FB_check_for_nans(is_local%wrap%FBExp(compglc(ns)), rc=rc)
+       call FB_check_for_nans(is_local%wrap%FBExp(compglc(ns)), maintask, logunit, rc=rc)
        if (ChkErr(rc,__LINE__,u_FILE_u)) return
     end do
 
diff --git a/mediator/med_phases_prep_ice_mod.F90 b/mediator/med_phases_prep_ice_mod.F90
index 1e0496b3..52431362 100644
--- a/mediator/med_phases_prep_ice_mod.F90
+++ b/mediator/med_phases_prep_ice_mod.F90
@@ -150,8 +150,8 @@ subroutine med_phases_prep_ice(gcomp, rc)
        if (chkerr(rc,__LINE__,u_FILE_u)) return
     end if
 
-    ! Check for nans in fields export to atm
-    call FB_check_for_nans(is_local%wrap%FBExp(compice), rc=rc)
+    ! Check for nans in fields export to ice
+    call FB_check_for_nans(is_local%wrap%FBExp(compice), maintask, logunit, rc=rc)
     if (ChkErr(rc,__LINE__,u_FILE_u)) return
 
     if (dbug_flag > 5) then
diff --git a/mediator/med_phases_prep_lnd_mod.F90 b/mediator/med_phases_prep_lnd_mod.F90
index b7341293..4be8bb40 100644
--- a/mediator/med_phases_prep_lnd_mod.F90
+++ b/mediator/med_phases_prep_lnd_mod.F90
@@ -33,7 +33,7 @@ subroutine med_phases_prep_lnd(gcomp, rc)
     use med_utils_mod         , only : chkerr           => med_utils_ChkErr
     use med_constants_mod     , only : dbug_flag        => med_constants_dbug_flag
     use med_internalstate_mod , only : complnd, compatm
-    use med_internalstate_mod , only : InternalState, maintask
+    use med_internalstate_mod , only : InternalState, maintask, logunit
     use med_merge_mod         , only : med_merge_auto
     use perf_mod              , only : t_startf, t_stopf
 
@@ -128,8 +128,8 @@ subroutine med_phases_prep_lnd(gcomp, rc)
     ! Set first call logical to false
     first_call = .false.
 
-    ! Check for nans in fields export to atm
-    call FB_check_for_nans(is_local%wrap%FBExp(complnd), rc=rc)
+    ! Check for nans in fields export to lnd
+    call FB_check_for_nans(is_local%wrap%FBExp(complnd), maintask, logunit, rc=rc)
     if (ChkErr(rc,__LINE__,u_FILE_u)) return
 
     if (dbug_flag > 5) then
diff --git a/mediator/med_phases_prep_ocn_mod.F90 b/mediator/med_phases_prep_ocn_mod.F90
index 7995deaa..373d9246 100644
--- a/mediator/med_phases_prep_ocn_mod.F90
+++ b/mediator/med_phases_prep_ocn_mod.F90
@@ -296,8 +296,8 @@ subroutine med_phases_prep_ocn_avg(gcomp, rc)
        call FB_copy(is_local%wrap%FBExp(compocn), is_local%wrap%FBExpAccumOcn, rc=rc)
        if (ChkErr(rc,__LINE__,u_FILE_u)) return
 
-       ! Check for nans in fields export to atm
-       call FB_check_for_nans(is_local%wrap%FBExp(compocn), rc=rc)
+       ! Check for nans in fields export to ocn
+       call FB_check_for_nans(is_local%wrap%FBExp(compocn), maintask, logunit, rc=rc)
        if (ChkErr(rc,__LINE__,u_FILE_u)) return
 
        ! zero accumulator
diff --git a/mediator/med_phases_prep_rof_mod.F90 b/mediator/med_phases_prep_rof_mod.F90
index cf0ad0f4..55b2dae8 100644
--- a/mediator/med_phases_prep_rof_mod.F90
+++ b/mediator/med_phases_prep_rof_mod.F90
@@ -377,8 +377,8 @@ subroutine med_phases_prep_rof(gcomp, rc)
          FBfrac=is_local%wrap%FBFrac(comprof), FBin=FBlndAccum2rof_r, fldListTo=fldList, rc=rc)
     if (chkerr(rc,__LINE__,u_FILE_u)) return
 
-    ! Check for nans in fields export to atm
-    call FB_check_for_nans(is_local%wrap%FBExp(comprof), rc=rc)
+    ! Check for nans in fields export to rof
+    call FB_check_for_nans(is_local%wrap%FBExp(comprof), maintask, logunit, rc=rc)
     if (ChkErr(rc,__LINE__,u_FILE_u)) return
 
     if (dbug_flag > 1) then
diff --git a/mediator/med_phases_prep_wav_mod.F90 b/mediator/med_phases_prep_wav_mod.F90
index 3028303b..c690aa52 100644
--- a/mediator/med_phases_prep_wav_mod.F90
+++ b/mediator/med_phases_prep_wav_mod.F90
@@ -177,8 +177,8 @@ subroutine med_phases_prep_wav_avg(gcomp, rc)
        call FB_copy(is_local%wrap%FBExp(compwav), is_local%wrap%FBExpAccumWav, rc=rc)
        if (ChkErr(rc,__LINE__,u_FILE_u)) return
 
-       ! Check for nans in fields export to atm
-       call FB_check_for_nans(is_local%wrap%FBExp(compwav), rc=rc)
+       ! Check for nans in fields export to wav
+       call FB_check_for_nans(is_local%wrap%FBExp(compwav), maintask, logunit, rc=rc)
        if (ChkErr(rc,__LINE__,u_FILE_u)) return
 
        ! zero accumulator