diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index 80463b15e853a44ca9c31fc0498d1e628980113e..904898810bf8d5521d21c3769d90c19cf545d252 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -570,7 +570,6 @@ END DO
         tpreclist(ji)%TFIELD%NTYPE    = tpreclist(idx_var)%TFIELD%NTYPE
         tpreclist(ji)%TFIELD%NDIMS    = tpreclist(idx_var)%TFIELD%NDIMS
 #if 0
-!PW: TODO?
         tpreclist(ji)%TFIELD%NFILLVALUE
         tpreclist(ji)%TFIELD%XFILLVALUE
         tpreclist(ji)%TFIELD%NVALIDMIN
@@ -1427,7 +1426,6 @@ END DO
         ISTATUS = NF90_GET_ATT(IFILE_ID, KVAR_ID, 'split_nblocks', iblocks)
         IF (istatus /= NF90_NOERR) CALL IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_GET_ATT', 'split_nblocks' )
 
-!PW: todo:check tfiles_ioz exist
         IFILE_ID = TPFILE%TFILES_IOZ(1)%TFILE%NNCID
 
         istatus = NF90_INQ_VARID(IFILE_ID,trim(TPREC%NAME)//'0001',ivar_id)
diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index 5ed1db232c6ecdba5f40fdf3c74fed0c6d303d30..c024a4390e288c382dda7fe0d2d32f42ad5b711e 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -789,8 +789,6 @@ call Add_field2list( TFIELDDATA( &
   CSTDNAME   = 'projection_x_coordinate', &
   CLONGNAME  = 'XHAT_ll',        &
   CUNITS     = 'm',              &
-!PW:BUG?: CDIR=XX => correct? variable is NOT distributed (same value on all processes) (see alse YHAT_ll...)
-!PW:BUG?: NGRID=2 => correct? variable is NOT distributed (same value on all processes)
 !PW:TODO?: create a new field to say if the variable is distributed? and how (X,Y,XY...)?
   CDIR       = 'XX',             &
   CCOMMENT   = 'Position x in the conformal or cartesian plane (all domain)', &
@@ -3162,7 +3160,6 @@ call Add_field2list( TFIELDDATA( &
   CMNHNAME   = 'RTHS_EDDY_FLUX', &
   CSTDNAME   = '',               &
   CLONGNAME  = 'RTHS_EDDY_FLUX', &
-!TODO PW: units?
   CUNITS     = '',               &
   CDIR       = 'XY',             &
   CCOMMENT   = '',               &
@@ -3187,7 +3184,6 @@ call Add_field2list( TFIELDDATA( &
   CMNHNAME   = 'RVS_EDDY_FLUX',  &
   CSTDNAME   = '',               &
   CLONGNAME  = 'RVS_EDDY_FLUX',  &
-!TODO PW: units?
   CUNITS     = '',               &
   CDIR       = 'XY',             &
   CCOMMENT   = '',               &
@@ -3211,7 +3207,6 @@ call Add_field2list( TFIELDDATA( &
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !
 IF (TRIM(CPROGRAM)=='REAL' .OR. TRIM(CPROGRAM) == 'LFICDF') THEN
-!PW: not yet known: IF (LFILTERING) THEN
 !
 call Add_field2list( TFIELDDATA( &
   CMNHNAME   = 'UT15',           &
@@ -3467,9 +3462,6 @@ INTEGER,SAVE :: IFIRSTGUESS=1 !Store first field to test
 CHARACTER(LEN=64) :: YMSG
 LOGICAL :: GNOWARNING
 !
-!PW: TODO: possible optimizations:
-! * Classement alphanumerique + index vers 1er champ commencant par caractere
-! * Classement dans l'ordre des ecritures + stockage dernier hit + reboucler depuis le debut => DONE
 !
 IF (.NOT.LFIELDLIST_ISINIT) THEN
   CALL PRINT_MSG(NVERB_FATAL,'GEN','FIND_FIELD_ID_FROM_MNHNAME','TFIELDLIST not yet initialized')
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
index 5a387ac24a205b5977d6801463847c8e880b7ca1..6eed332ee4b291acf9485c31723b3f889631e74e 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
@@ -3050,7 +3050,6 @@ end subroutine IO_Ndimlist_reduce
     !
     CALL IO_Format_write_select(TPFILE,GLFI,GNC4)
     !
-!PW: transferer ce traitement LFI dans les subroutines LFI (en creer 1 pour les HFIELD)
     IF(GLFI) THEN
       ILE=LEN(HFIELD)
       IP=SIZE(HFIELD)
@@ -4087,7 +4086,6 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
           ELSE
             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
                             ': CLBTYPE/=NONE not (yet) allowed for 3D real fields' )
-            !PW: TODO?: add missing field in TFIELDLIST?
             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_X3D(IMI)%DATA)
           END IF
         !
@@ -4107,7 +4105,6 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
           ELSE
             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
                             ': CLBTYPE/=NONE not (yet) allowed for 3D integer fields' )
-            !PW: TODO?: add missing field in TFIELDLIST?
             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_N3D(IMI)%DATA)
           END IF
         !
@@ -4139,7 +4136,6 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
           ELSE
             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
                             ': CLBTYPE/=NONE not (yet) allowed for 4D real fields' )
-            !PW: TODO?: add missing field in TFIELDLIST?
             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_X4D(IMI)%DATA)
           END IF
         !
@@ -4171,7 +4167,6 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
           ELSE
             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
                             ': CLBTYPE/=NONE not (yet) allowed for 5D real fields' )
-            !PW: TODO?: add missing field in TFIELDLIST?
             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_X5D(IMI)%DATA)
           END IF
         !
@@ -4203,7 +4198,6 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
           ELSE
             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
                             ': CLBTYPE/=NONE not (yet) allowed for 6D real fields' )
-            !PW: TODO?: add missing field in TFIELDLIST?
             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_X6D(IMI)%DATA)
           END IF
         !
diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
index 3174a29479d4e91b6db75697d80a5e850237eeb2..c3bd1d774d73533d6f45f1fbb2fc1a58dfac9f24 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
@@ -396,7 +396,6 @@ SUBROUTINE IO_SYNC_MODELS_FLOAT(KNUMB,PTIMES)
       !Value is rounded to nearest timestep
       PTIMES(IMI,JOUT) = NINT(PTIMES(IMI,JOUT)/DYN_MODEL(IMI)%XTSTEP) * DYN_MODEL(IMI)%XTSTEP
       !Output/backup time is propagated to nested models (with higher numbers)
-      !PW: TODO: BUG?: what happens if 2 dissociated models? Use NSON(:) array?
       DO JKLOOP = IMI+1,NMODEL
         IDX = 1
         CALL FIND_NEXT_AVAIL_SLOT_FLOAT(PTIMES(JKLOOP,:),IDX)
@@ -419,7 +418,6 @@ SUBROUTINE IO_SYNC_MODELS_INT(KNUMB,KSTEPS)
     IF (KSTEPS(IMI,JOUT) > 0) THEN
       KNUMB = KNUMB + 1
       !Output/backup time is propagated to nested models (with higher numbers)
-      !PW: TODO: BUG?: what happens if 2 dissociated models? Use NSON(:) array?
       DO JKLOOP = IMI+1,NMODEL
         IDX = 1
         CALL FIND_NEXT_AVAIL_SLOT_INT(KSTEPS(JKLOOP,:),IDX)
@@ -587,7 +585,6 @@ SUBROUTINE POPULATE_STRUCT(TPFILE_FIRST,TPFILE_LAST,KSTEPS,HFILETYPE,TPBAKOUTN,K
           CALL PRINT_MSG(NVERB_FATAL,'IO','POPULATE_STRUCT','unknown filetype ('//TRIM(HFILETYPE)//')')
         ENDIF
         TPBAKOUTN(IPOS)%TFILE%NLFITYPE=1 !1: to be transferred
-!PW: TODO: set NLFIVERB only when useful (only if LFI file...)
         TPBAKOUTN(IPOS)%TFILE%NLFIVERB=NVERB
         IF (LIOCDF4) THEN
           IF (.NOT.LLFIOUT) THEN
@@ -635,7 +632,6 @@ SUBROUTINE POPULATE_STRUCT(TPFILE_FIRST,TPFILE_LAST,KSTEPS,HFILETYPE,TPBAKOUTN,K
               TPBAKOUTN(IPOS)%TFILE%TFILES_IOZ(JI)%TFILE%NNCCOMPRESS_LEVEL = NOUT_COMPRESS_LEVEL(IMI)
             END IF
             TPBAKOUTN(IPOS)%TFILE%TFILES_IOZ(JI)%TFILE%NLFITYPE=1 !1: to be transferred
-!PW: TODO: set NLFIVERB only when useful (only if LFI file...)
             TPBAKOUTN(IPOS)%TFILE%TFILES_IOZ(JI)%TFILE%NLFIVERB=NVERB
             IF (LIOCDF4) THEN
               IF (.NOT.LLFIOUT) THEN
diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
index f10893a969d7a3605b41de653997fe236e509c47..9c6c0fc38898e8923fdc56160a9fedc0cfbf6021 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90
@@ -1939,7 +1939,6 @@ subroutine Gather_hor_coord1d( haxis, pcoords_loc, pcoords_glob )
   endif
 
   !If the file has Z-split subfiles, broadcast the coordinates to all processes
-  !PW: TODO: broadcast only to subfile writers
   if ( tpfile%nsubfiles_ioz > 0 ) &
     call MPI_BCAST( pcoords_glob, size( pcoords_glob ), MNHREAL_MPI, tpfile%nmaster_rank - 1,  tpfile%nmpicomm, ierr )
 
@@ -1989,7 +1988,6 @@ subroutine Gather_hor_coord2d( px, py, plat_glob, plon_glob )
   endif
 
   !If the file has Z-split subfiles, broadcast the coordinates to all processes
-  !PW: TODO: broadcast only to subfile writers
   if ( tpfile%nsubfiles_ioz > 0 ) then
     call MPI_BCAST( plat_glob, size( plat_glob ), MNHREAL_MPI, tpfile%nmaster_rank - 1,  tpfile%nmpicomm, ierr )
     call MPI_BCAST( plon_glob, size( plon_glob ), MNHREAL_MPI, tpfile%nmaster_rank - 1,  tpfile%nmpicomm, ierr )
diff --git a/src/LIB/SURCOUCHE/src/mode_msg.f90 b/src/LIB/SURCOUCHE/src/mode_msg.f90
index ac78920fae6da2b112c7c296f9a9d30829c4b6e6..5dfbdc2ef71b07d9d8c8c501566c1ddace78c0fc 100644
--- a/src/LIB/SURCOUCHE/src/mode_msg.f90
+++ b/src/LIB/SURCOUCHE/src/mode_msg.f90
@@ -129,7 +129,6 @@ IF (ASSOCIATED(TFILE_OUTPUTLISTING)) THEN
     IF (GWRITE_STDOUT) WRITE(UNIT=OUTPUT_UNIT,FMT=*) 'TFILE_OUTPUTLISTING not opened'
   END IF
 ELSE
-!PW: TODO?: temporary to detect non-initialisation
 ! should disappear except at the beginning of a run
   GWRITE_OUTLST = .FALSE.
   IF (GWRITE_STDOUT .AND. CPROGRAM/='LFICDF') WRITE(UNIT=OUTPUT_UNIT,FMT=*) 'TFILE_OUTPUTLISTING not associated'
diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90
index 81a9ac30430d36fa33a3530325d82a924c75cc87..fb6aba612e8967dd2daf11d5ecdff81004720d73 100644
--- a/src/MNH/ini_aircraft_balloon.f90
+++ b/src/MNH/ini_aircraft_balloon.f90
@@ -463,7 +463,6 @@ IF ( IMI == 1 ) THEN
   END IF
 
   CALL FLYER_TIMESTEP_CORRECT( DYN_MODEL(IMODEL)%XTSTEP, TPFLYER )
-print *,'PW: ',tpflyer%CNAME,': IMI,XTSTEPaircaft=',IMI,TPFLYER%TFLYER_TIME%XTSTEP
 END IF
 
 ALLOCATE(TPFLYER%XPOSX(TPFLYER%NPOS))
diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90
index 0270f474a0e5b53d71ccc86620c9c9bcafefd866..3b413d569b327ee0666fef3544ba3ac37891174b 100644
--- a/src/MNH/modd_budget.f90
+++ b/src/MNH/modd_budget.f90
@@ -124,7 +124,6 @@ type, extends( tfieldmetadata_base ) :: tburhodata
   real, dimension(:,:,:), allocatable :: xdata ! Array to store the budget data
 end type tburhodata
 
-!PW: a commenter + renommer???
 type :: tbudiachrometadata
   character(len=NBUNAMELGTMAX),  dimension(NMAXLEVELS) :: clevels  = '' !Name of the different groups/levels in the netCDF file
   character(len=NCOMMENTLGTMAX), dimension(NMAXLEVELS) :: ccomments ='' !Comments for the different groups/levels in the netCDF file
diff --git a/src/MNH/mode_les_diachro.f90 b/src/MNH/mode_les_diachro.f90
index 8f848f4e91734d56a56461c4660af25ef0cc73ba..9b20b01f48f24cb6baa1b4382ba81691cc54b1fe 100644
--- a/src/MNH/mode_les_diachro.f90
+++ b/src/MNH/mode_les_diachro.f90
@@ -1183,7 +1183,6 @@ if ( iresp == 0 .and. any( zfield /= XUNDEF ) ) then
         tzfields(jp)%ndims     = tzfields(jp)%ndims - 1
 
         tzbudiachro%clevels(NLVL_MASK) = hmasks(jp)
-!PW:TODO? necessite le transfert d'info depuis les routines appelantes ou via des structures dans les modd
         tzbudiachro%ccomments(NLVL_MASK) = ''
 
         call Write_diachro( tzfile, tzbudiachro, [ tzfields(jp) ], tzdates, zwork6(:,:,:,:,:,jp:jp) )
diff --git a/src/MNH/profilern.f90 b/src/MNH/profilern.f90
index d176c79916a96167a8d367c1f3a9c5ee4d253bfa..f36998381ae2833a9ae0d0969b8245b96dcb324f 100644
--- a/src/MNH/profilern.f90
+++ b/src/MNH/profilern.f90
@@ -212,7 +212,6 @@ IF ( .NOT. TPROFILERS_TIME%STORESTEP_CHECK_AND_SET( IN ) ) RETURN !No profiler s
 !*      8.   DATA RECORDING
 !            --------------
 !
-!PW: TODO: ne faire le calcul que si necessaire (presence de profileurs locaux,...)
 ZTEMP(:,:,:)=PTH(:,:,:)*(PP(:,:,:)/ XP00) **(XRD/XCPD)
 ! Theta_v
 ZTHV(:,:,:) = PTH(:,:,:) / (1.+WATER_SUM(PR(:,:,:,:)))*(1.+PR(:,:,:,1)/ZRDSRV)
diff --git a/src/MNH/read_grid_time_mesonh_case.f90 b/src/MNH/read_grid_time_mesonh_case.f90
index fba1ea9e956b21a5e3ff451c4a86b8d9b2bce6aa..c6446d4eee6e6e45218af571350e429e4d80d5d2 100644
--- a/src/MNH/read_grid_time_mesonh_case.f90
+++ b/src/MNH/read_grid_time_mesonh_case.f90
@@ -150,8 +150,6 @@ TYPE(TFILEDATA),POINTER :: TZFMFILE => NULL()
 ILUOUT0 = TLUOUT0%NLU
 ZEPS=1.E-10
 !
-!PW: TODO: temporary: look for file from its name
-!     TPFMFILE should be passed in arguments
 CALL IO_File_find_byname(HFMFILE,TZFMFILE,IRESP)
 !
 !*       1.1   Original FMfile name
diff --git a/src/MNH/write_les_rt_budgetn.f90 b/src/MNH/write_les_rt_budgetn.f90
index 66df13adebabdf556d771123572774257abae163..94d5c9902cc8ee16a8ce57e1a087f18bd1aa0393 100644
--- a/src/MNH/write_les_rt_budgetn.f90
+++ b/src/MNH/write_les_rt_budgetn.f90
@@ -467,7 +467,6 @@ ZLES_BUDGET(:,:,ILES) =  XG * XLES_SUBGRID_RtThv(:,:,1)   &
 !* 3.6 dissipation
 !      -----------
 !
-!PW: not in the documentation, but set to 0 anyway
 ILES=ILES+1
 YFIELDNAMES(ILES)    = 'SBG_DISS'
 YFIELDCOMMENTS(ILES) = 'subgrid dissipation'
diff --git a/src/MNH/write_les_sv_budgetn.f90 b/src/MNH/write_les_sv_budgetn.f90
index 8a412845f16ad91b5122ef961529ff316a551f09..538e1a3f3108c56ddc0769d62e66e145131d606d 100644
--- a/src/MNH/write_les_sv_budgetn.f90
+++ b/src/MNH/write_les_sv_budgetn.f90
@@ -520,7 +520,6 @@ END IF
 !      -----------
 !
 ILES=ILES+1
-!PW: not in documentation. Always set to 0
 YFIELDNAMES(ILES)    = 'SBG_DISS'
 YFIELDCOMMENTS(ILES) = 'subgrid dissipation'
 !
diff --git a/src/MNH/write_lesn.f90 b/src/MNH/write_lesn.f90
index 2e18f72adf934925770b2fd3bd323df5a37274c7..43a186a4f4c2338313762aa19475020ab5d5b1ac 100644
--- a/src/MNH/write_lesn.f90
+++ b/src/MNH/write_lesn.f90
@@ -1150,14 +1150,12 @@ if ( nspectra_k > 0 ) then
     call Les_diachro_2pt_write( tpdiafile, XCORRi_WRi,   XCORRj_WRi,   'WRI',  'W*ri    2 points correlations', 'm kg s-1 kg-1' )
   end if
 
-!PW: TODO: ameliorer le ygroup (tenir compte de ce qu'est la variable scalaire et pas juste son jsv!)
   do jsv = 1, nsv
     Write( ygroup, fmt = "( a2, i3.3 )" ) "SS", jsv
     call Les_diachro_2pt_write( tpdiafile, XCORRi_SvSv(:,:,:,JSV), XCORRj_SvSv(:,:,:,JSV), ygroup, &
                                 'Sv*Sv   2 points correlations','kg2 kg-2' )
   end do
 
-!PW: TODO: ameliorer le ygroup (tenir compte de ce qu'est la variable scalaire et pas juste son jsv!)
   do jsv = 1, nsv
     Write( ygroup, fmt = "( a2, i3.3 )" ) "WS", jsv
     call Les_diachro_2pt_write( tpdiafile, XCORRi_WSv(:,:,:,JSV), XCORRj_WSv(:,:,:,JSV), ygroup, &
diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90
index a6099e6a0f4eb779347699adbcf1e6f85fc896ca..0fa23ed0e6f95c5c9d8b13ba8e76e54404edc35d 100644
--- a/src/MNH/write_lfifm1_for_diag.f90
+++ b/src/MNH/write_lfifm1_for_diag.f90
@@ -1087,7 +1087,6 @@ IF (LLIMA_DIAG) THEN
   END IF
   !
   DO JSV = NSV_LIMA_BEG,NSV_LIMA_END
-!PW: bases sur CLIMA_*_CONC et pas CLIMA_*_NAMES !!!
     !
     TZFIELD%CUNITS     = 'cm-3'
     WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
@@ -1194,7 +1193,6 @@ IF (LLIMA_DIAG) THEN
   END IF
 !
 END IF
-!PW: TODO: a documenter
 IF (LELECDIAG .AND. CELEC .NE. "NONE") THEN
   DO JSV = NSV_ELECBEG,NSV_ELECEND
     TZFIELD = TSVLIST(JSV)
@@ -1279,7 +1277,6 @@ IF (LPASPOL) THEN
 END IF
 ! Conditional sampling variables
 IF (LCONDSAMP) THEN
-!PW: TODO: a documenter!!!
   DO JSV = NSV_CSBEG, NSV_CSEND
     TZFIELD = TSVLIST(JSV)
     CALL IO_Field_write(TPFILE,TZFIELD,XSVT(:,:,:,JSV))
@@ -1319,7 +1316,6 @@ IF (LCHAQDIAG) THEN    !aqueous concentration in M
 
 
 
-!PW: TODO: LCHICDIAG n'existe pas => les variables correspondantes ne sont pas ecrites...
 
 !  ZWORK31(:,:,:)=0.
 !  DO JSV = NSV_CHICBEG,NSV_CHICEND   ! ice phase
@@ -1868,7 +1864,6 @@ END IF
 !  Blowing snow variables
 !
 IF(LBLOWSNOW) THEN
-!PW:TODO?:variables scalaires XSVT pas ecrites ici. Voulu?
   TZFIELD = TFIELDMETADATA(                                             &
     CMNHNAME   = 'SNWSUBL3D',                                           &
     CSTDNAME   = '',                                                    &
diff --git a/src/MNH/zoom_pgd.f90 b/src/MNH/zoom_pgd.f90
index 0763fd28301b809b9496f68736e0846dc36fdd8c..5f8630d8d006664932db1826caa9eb52030eb4c6 100644
--- a/src/MNH/zoom_pgd.f90
+++ b/src/MNH/zoom_pgd.f90
@@ -198,7 +198,6 @@ IF ( (LEN_TRIM(YZOOMFILE) == 0) .OR. (ADJUSTL(YZOOMFILE) == ADJUSTL(CPGDFILE)) )
 END IF
 !
 CALL IO_File_add2list(TZZOOMFILE,TRIM(YZOOMFILE),'PGD','WRITE',KLFINPRAR=INT(1,KIND=LFIINT),KLFITYPE=1,KLFIVERB=5)
-!PW: TODO: points to dad file (if existing) ! TZZOOMFILE%TDADFILE =>
 !
 CALL IO_File_open(TZZOOMFILE)
 CALL WRITE_HGRID(1,TZZOOMFILE)
diff --git a/src/MNH/zsmt_pgd.f90 b/src/MNH/zsmt_pgd.f90
index 3aea708e68726cdae989f5b7320123247ef02daa..37b88613be600919f800befce88282d1e07800ed 100644
--- a/src/MNH/zsmt_pgd.f90
+++ b/src/MNH/zsmt_pgd.f90
@@ -155,8 +155,6 @@ ALLOCATE(ZYHAT(IJU))
 CALL IO_Field_read(TPFILE,'XHAT',ZXHAT)
 CALL IO_Field_read(TPFILE,'YHAT',ZYHAT)
 
-!PW: bug/TODO: read a field in a file opened in WRITE mode
-!There is a test in IO_Field_read_BYFIELD_X2 to allow this if TPFILE%CMODE='LFICDF4'
 CALL IO_Field_read(TPFILE,'ZS',ZZS)
 !
 DO JI=1,JPHEXT
diff --git a/src/PHYEX/micro/rain_ice_warm.f90 b/src/PHYEX/micro/rain_ice_warm.f90
index 133dc888b8a8c74c6ca2708e58baf37b7587fc1a..0a781900c768fdd2cf37a3d36ecc27c238709efe 100644
--- a/src/PHYEX/micro/rain_ice_warm.f90
+++ b/src/PHYEX/micro/rain_ice_warm.f90
@@ -72,7 +72,6 @@ REAL,     DIMENSION(:),     INTENT(INOUT) :: PRVS     ! Water vapor m.r. source
 REAL,     DIMENSION(:),     INTENT(INOUT) :: PRCS     ! Cloud water m.r. source
 REAL,     DIMENSION(:),     INTENT(INOUT) :: PRRS     ! Rain water m.r. source
 REAL,     DIMENSION(:),     INTENT(INOUT) :: PTHS     ! Theta source
-!PW: PUSW could be a purely local variable?
 REAL,     DIMENSION(:),     INTENT(INOUT) :: PUSW     ! Undersaturation over water
 REAL,     DIMENSION(:,:,:), INTENT(INOUT) :: PEVAP3D  ! Rain evap profile
 !
diff --git a/src/PHYEX/turb/mode_turb_ver_sv_flux.f90 b/src/PHYEX/turb/mode_turb_ver_sv_flux.f90
index 27b189c1b92a38a516c2d13d3b5f74faf1544fdd..21443271df8bc1968d471c2e683e20003032c6b9 100644
--- a/src/PHYEX/turb/mode_turb_ver_sv_flux.f90
+++ b/src/PHYEX/turb/mode_turb_ver_sv_flux.f90
@@ -454,7 +454,6 @@ DO JSV=1,KSV
       CMNHNAME   = TRIM( YMNHNAME ),             &
       CSTDNAME   = '',                           &
       CLONGNAME  = TRIM( YMNHNAME ),             &
-    !PW: TODO: use the correct units of the JSV variable (and multiply it by m s-1)
       CUNITS     = 'SVUNIT m s-1',               &
       CDIR       = 'XY',                         &
       CCOMMENT   = 'X_Y_Z_' // TRIM( YMNHNAME ), &