diff --git a/aw_view2d.pro b/aw_view2d.pro
index e8c1af1c23a9ca7bbeda5b180faecbfa1405a29f..a9570ccb1a229e53ea6f1df2b3961c0f718cea78 100644
--- a/aw_view2d.pro
+++ b/aw_view2d.pro
@@ -1,5 +1,6 @@
 pro aw_view2d, data_in ,_extra = _extra $
   , no_data_idx = no_data_idx $
+  , space_idx = space_idx $
   , jpg = jpg $
   , bartitle = bartitle $
   , xrange = xrange $
@@ -8,19 +9,25 @@ pro aw_view2d, data_in ,_extra = _extra $
   , coast_vec = coast_vec  $
   , buffer = buffer $
   , layout = layout $
-  , no_new = no_new $
-  , no_save = no_save $
-  , nr_images = nr_images ;  msg coaast point
+  , color_bar = color_bar $
+  , cmb = cmb $
+  , noax = noax $
+  , w =w  ;  msg coast point
 
   default,nr_images,1
   default,bartitle,''
-  default, no_new, 'false'
-  default, no_save,'false'
-  default,position, [0.25,0.1,0.95,0.9]
+  
+  default,position, [0.2,0.1,0.95,0.9]
   data = data_in 
   if n_elements(no_data_idx) gt 0 then begin
     data[no_data_idx] = !VALUES.F_NAN
-  endif
+  endif  
+  
+  if n_elements(color_bar) eq 1 then begin
+    
+  endif else begin
+    position = [0.05,0.05,0.95,0.9]
+  endelse
   
   n_dim = size(data_in,/dim)
   xra = findgen(n_dim[0])
@@ -40,15 +47,11 @@ pro aw_view2d, data_in ,_extra = _extra $
     a_Y = yrange[0]
     b_Y = (yrange[1]-yrange[0])/double(n_dim[1])
   endif
-  
-  
+    
   aspect_ratio = n_dim[0]/float(n_dim[1])
-  
-
 
   ct = COLORTABLE(74, /REVERSE)
   
-  
   ; - get color table. I will later add a call to a bw_to_color function
   					ct = [	[	000,	000,	125,	000	], $		;peter cool von blau nach rot
 							[	000,	000,	255,	025	], $
@@ -69,27 +72,32 @@ pro aw_view2d, data_in ,_extra = _extra $
   
   int_x	= reform(ct[3, *])
   n_col	= 255l	
-		col_v	= 255. * findgen(n_col) / (float(n_col) - 1.)
-		int_r	= (round(interpol(int_r, int_x, col_v)))
-		int_g	= (round(interpol(int_g, int_x, col_v)))
-		int_b	= (round(interpol(int_b, int_x, col_v)))
-      ctt = [[int_r],[int_g],[int_b]]
-
+  col_v	= 255. * findgen(n_col) / (float(n_col) - 1.)
+  int_r	= (round(interpol(int_r, int_x, col_v)))
+  int_g	= (round(interpol(int_g, int_x, col_v)))
+  int_b	= (round(interpol(int_b, int_x, col_v)))
+  ctt = [[int_r],[int_g],[int_b]]
+  
+  w = window(dimensions=[600,400],buffer=buffer)
+   
+  if keyword_set(cmb) then begin
+    ctt = ['white','green','blue','ivory']
+    data = bytscl(data,top=3,min=0,max=3)
+  endif 
+    
   ;ct[0,*] = cgcolor('gray',/triple)
- if ~no_new then  w = window(dimensions=[600,400],buffer=buffer)
- undefine,position
- print,'fff',layout,no_new
-  p = image(data,rgb_table=ctt,_extra = _extra, position = position $
-    , font_size = 13.,background_color='gray',aspect_ratio=aspect_ratio,/current,layout = layout )
-  p.axis_style = 3 
-  xax = AXIS('X', LOCATION='bottom', TICKDIR=0, MINOR=0,coord_TRANS=[a_x,b_x],target = p)
 
-  yax = AXIS('Y', LOCATION='left', TICKDIR=0, MINOR=1,coord_TRANS=[a_y,b_y],target = p)
-  print,'ggg'
-  
+  p = image(data,rgb_table=ctt,_extra = _extra, position = position $
+    , font_size = 13.,background_color='gray',aspect_ratio=aspect_ratio,/current,layout = layout,min_value=0 )
+ 
+  if ~keyword_set(noax) then begin
+    p.axis_style = 3 
+    xax = AXIS('X', LOCATION='bottom', TICKDIR=0, MINOR=0,coord_TRANS=[a_x,b_x],target = p)
+    yax = AXIS('Y', LOCATION='left', TICKDIR=0, MINOR=1,coord_TRANS=[a_y,b_y],target = p)
+  endif
   
   ; make coast
-  IF keyword_set(coast_vec) THEN BEGIN
+  if keyword_set(coast_vec) then begin
     coast_col =  'black'
     FOR i = 0l, n_elements(coast_vec) -1l do begin
       print,i
@@ -99,32 +107,22 @@ pro aw_view2d, data_in ,_extra = _extra $
     
   endif
   
-
-  ; compute colorbar position
-  ;  
-  bar_size_x = (position[2] -position[0])/10.
-  bar_size_y = (position[3] -position[1])
-  bar_pos_x = (position[0] - bar_size_x - 0.1) > 0.01
-  bar_pos_y = position[1]  > 0.01
-  pos_bar = [bar_pos_x,bar_pos_y,bar_pos_x+bar_size_x, bar_pos_y+bar_size_y ]
-  
-  print,pos_bar
+  if n_elements(color_bar) eq 1 then begin
+    ; compute colorbar position
+    bar_size_x = (position[2] -position[0])/10.
+    bar_size_y = (position[3] -position[1])
+    bar_pos_x = (position[0] - bar_size_x - 0.1) > 0.1
+    bar_pos_y = position[1]  > 0.01
+    pos_bar = [bar_pos_x,bar_pos_y,bar_pos_x+bar_size_x, bar_pos_y+bar_size_y ]
   
-;
-c = colorbar ( target = p , ORIENTATION=1, $
-   POSITION=pos_bar, $
-   TITLE= bartitle)
-;p.xrange = [0,30]  
-
-if n_elements(jpg) eq 1 then   p.save,jpg,/JPG   
-;p.title='KKK'
-;p.colorbar
-print,'===> ', no_save
-if no_save eq 'false' then begin
-  w.save,'test.png',resolution = 200
-  print,'save'
-endif
+    c = colorbar ( target = p , ORIENTATION=1, $
+    POSITION=pos_bar, $
+    TITLE= bartitle)
+   
+  endif
 
+  w.save,'test.png',resolution = 200
+   
 end
 
 
@@ -149,10 +147,22 @@ o=msg_data_cl(xrange=[1600,2400],yrange=[2900,3500])
 coast=o->coast_line(/vec)
 lon = o.lon()
 ;view2d_max,lon,coast_v = coast,no_data_idx = where(lon lt -200),/cool,/colo
-;aw_view2d,lon,coast_v = coast;,no_data_idx = where(lon lt -200)
-aw_view2d,lon,layout=[3,3,1],/no_save
-aw_view2d,lon,layout=[3,3,2],no_data_idx = where(lon lt -0),/no_new,/no_save
-aw_view2d,lon,layout=[3,3,3],no_data_idx = where(lon lt -10),/no_new,/no_save
-aw_view2d,lon,layout=[3,3,4],no_data_idx = where(lon lt 10),/no_new
+;aw_view2d,lon,coast_v = coast,no_data_idx = where(lon lt -200)
+
+
+; make multiplot 3x3
+
+ww =window(dimens=[500,500])
+for ii =1,9 do begin
+  
+  aw_view2d,lon,no_data_idx = where(lon lt (ii*2)), w = w,/buffer
+  rr = w.CopyWindow(BORDER=0)
+  ww.setCurrent
+  pp = image(rr,layout = [3,3,ii], /current )
+endfor
+
+
+stop
+
 
 end
diff --git a/cws_stats__constants.pro b/cws_stats__constants.pro
index 28d6febce22783996c53230716fcfb739e6c74f2..f45244acb5e528e5f3e4c29bfa261695de71cd5e 100644
--- a/cws_stats__constants.pro
+++ b/cws_stats__constants.pro
@@ -111,7 +111,7 @@ pro cws_stats::constants
     prd['ctp','groups',grplist[ii]] = has_ctp[ii]
     prd['cth','groups',grplist[ii]] = has_ctp[ii]
     prd['ctt','groups',grplist[ii]] = has_ctt[ii]
-    print,ii,grpList[ii]
+   ; print,ii,grpList[ii]
   endfor
 
   for ii = 0,n_elements(has_cmb) -1 do begin
@@ -119,7 +119,7 @@ pro cws_stats::constants
     print,ii,grpList[ii],  has_cmb[ii]
   endfor
 
-  print,(prd['cmb','groups',grplist]).where(1)
+ ; print,(prd['cmb','groups',grplist]).where(1)
 
   n_ctp = total(has_ctp)
   n_cmb = total(has_cmb)
diff --git a/cws_stats__hist1d.pro b/cws_stats__hist1d.pro
index 8a78e375b6baf4955cb89fcb0fedc115f9a1b301..4f554e3e18c4078c9cb67f063654ad91c4f68148 100644
--- a/cws_stats__hist1d.pro
+++ b/cws_stats__hist1d.pro
@@ -167,16 +167,19 @@ pro cws_stats::hist1d, hour=hour, product=product, mask=mask, surf=surf, phase=p
         
         case self.product of
         'ctp': begin
-           histo = (    histogram(img, binsize=binsHist[cut], min=minhist[cut], max=maxhist[cut], LOCATIONS=locations)) / float(n_elements(img))
+           histo = (    histogram(img, binsize=binsHist[cut], min=minhist[cut] $
+            , max=maxhist[cut], LOCATIONS=locations)) / float(n_elements(img))
         end
         
         'cod': begin
-             histo = (log_histogram(img, binsize=binsHist[cut], min=minhist[cut], max=maxhist[cut], LOCATIONS=locations)) / float(n_elements(img))
+             histo = (log_histogram(img, binsize=binsHist[cut], min=minhist[cut] $
+              , max=maxhist[cut], LOCATIONS=locations)) / float(n_elements(img))
         end
         
         
         else: begin
-          histo = (histogram(img, binsize=binsHist[cut], min=minhist[cut], max=maxhist[cut], LOCATIONS=locations)) / float(n_elements(img))
+          histo = (histogram(img, binsize=binsHist[cut], min=minhist[cut] $
+            , max=maxhist[cut], LOCATIONS=locations)) / float(n_elements(img))
         end
         endcase
         
diff --git a/cws_stats__make_corthumb.pro b/cws_stats__make_corthumb.pro
index 6147f36a108be03094b7736aebd9e7ddd5f56d18..c834665fe8182b415ceaa2a0fc97a6aca60b6df1 100644
--- a/cws_stats__make_corthumb.pro
+++ b/cws_stats__make_corthumb.pro
@@ -11,9 +11,10 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
   if n_elements(phase) eq 0 then phase = 'all'
   if n_elements(surf)  eq 0 then surf  = 'all'
 
-  cd, !PROJECTS.cws_path+'tools/', current =current
+  
   @./cws_stats_params
-  cd,current
+ print,minCorr[self.cut]
+ print,maxCorr[self.cut]
   cut = self.cut
   self.kind = 'cor'
 
@@ -23,7 +24,7 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
     minCorr[cut] = 10.^minCorr[cut]
     binCorr[cut] = 10.^binCorr[cut]
   endif 
-  print, "BULLSHIT COD: ", minCorr[cut], maxCorr[cut], binCorr[cut]
+  print, "B COD: ", minCorr[cut], maxCorr[cut], binCorr[cut]
 	
   valueRange = (maxCorr[cut]-minCorr[cut])
 
@@ -91,7 +92,7 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
   
   !p.multi=[0,n_elements(group_list),n_elements(group_list)]
 	
-  Window,3,xsize=1400,ysize=1400	
+  ;Window,3,xsize=1400,ysize=1400	
   
 	
   p_preserve=!p
@@ -100,8 +101,9 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
   flag_axes = 0
   dumFlag = 0
   group_list = self.create_group_list(product = product )
+  n_groups = n_elements(group_list)
+  w00 = window(DIMENSION=[900,900],/buffer)
   
- ; w = window(xsize=800,ysize= 900)
   foreach group1,group_list, gg do begin
   
     ; read the data
@@ -117,8 +119,8 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
     
     
     foreach group2,group_list, tt do begin
-      print, '  reference group: ', group1, gg, n_elements(group_list) -1
-      print, '  comparison group: ', group2, tt, n_elements(group_list) -1
+      print, '  reference / comparison group: ', group1, group2, gg, tt
+     
       ; read data of the 2nd group
       img2 = self->get_data(group=group2, phase=phase, surf=surf)
       if self.product eq 'cod' then begin 
@@ -146,24 +148,30 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
         dum = make_array((dum=(maxCorr[self.cut]-minCorr[self.cut])/binCorr[self.cut]),dum,value=0.)
         dum = dum*0
         dum[0]=1
-        view2d,100.*dum,/cool,no_data_idx=where(dum eq 0) $
-                , range=[minCorr[cut],maxCorr[cut],minCorr[cut],maxCorr[cut]] $
-                , /no_axes ,aspect=1,charthick=2.3,charsize=thumb_charsize[cut] $
-                , min=0,max=maxCorrProc[cut],no_data_col = fsc_color('khaki')
-  
-        xyouts, minCorr[cut] + 0.5*valueRange, minCorr[cut] +0.85 *valueRange $
-                , ' '+  group2 +'   ' $
-                +  group1 +'!X' $
-                ,charsize=1.2*thumb_charsize[cut] ,color=fsc_color('black') $
-                ,align = 0.5
-    
-        dum =minCorr[self.cut] + ((maxCorr[self.cut]-minCorr[self.cut])/binCorr[self.cut])/2 
-        xyouts,dum ,dum,'NO DATA',charsize=1.0,orientation=45,align=0.5 $
-            , color =fsc_color('gold')
+        
+        
+        imgFormat='(f5.1)'
+        
+        aw_view2d,100.*dum,no_data_idx=where(dum eq 0), w = w_dum,/noax
+        t11 = text( 0.26,0.8 ,  ' '+ group2 +' '+group1+' !X',font_size=25)
+        t12 = text( 0.26,0.5 ,  ' NO DATA ',font_size=35)
+        rr =  w_dum.CopyWindow(BORDER=0)
+        w00.setCurrent
+        pp =  image(rr,layout = [n_elements(group_list),n_elements(group_list),gg+1], /current )
+        w_dum.close 
+       
         continue  
       ENDIF
 
       ; calculate statistics for existing data 
+      
+     ; if self.product eq 'ctp' then begin
+     ;     temp_max = maxCorr[cut]
+     ;     temp_min = minCorr[cut]
+     ;     maxCorr[cut] = temp_min
+     ;     minCorr[cut] = temp_max
+     ; endif
+      
       dum = hist2d(img2[ind],img1[ind],min=minCorr[self.cut],max=maxCorr[self.cut],bin=binCorr[self.cut])
       corrFct = correlate(img2[ind],img1[ind])
       biasFct = bias(img2[ind],img1[ind])
@@ -180,40 +188,21 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
         dum[0]=1
         ; plot the scatter plot
         
-        ; work later on obect based view2d
+       
+        imgFormat='(f5.1)'
         
-        view2d, 100.*dum,/cool,no_data_idx=where(dum eq 0) $    
-          , range=[minCorr[cut],maxCorr[cut],minCorr[cut],maxCorr[cut]] $
-          , /no_axes ,aspect=1,charthick=2.3,charsize=thumb_charsize[cut] $
-          , min=0,max=maxCorrProc[cut],no_data_col = fsc_color('khaki')
-          
-        ;
-        xyouts, minCorr[cut] + 0.5*valueRange, minCorr[cut] +0.85 *valueRange $
-          , ' '+  group2+' ' $
-            + group1 +'!X' $
-          ,charsize=1.2*thumb_charsize[cut] ,color=fsc_color('black')  $
-          ,align = 0.5
-          
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.64 *valueRange $  
-              , 'bias:   ' + string(biasFct, format = '(f6.1)') ,charsize=thumb_charsize[cut]  $
-              , color = abs(biasFct) gt 0.2 * valueRange  ? cgcolor('red') : cgcolor('black')
-
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.64 *valueRange $ 
-              , 'bias:   '  ,charsize=thumb_charsize[cut] ,color = cgcolor('black')
-             
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.46 *valueRange $  
-              , 'rmse:  ' + string(rmseFct, format = '(f6.1)') ,charsize=thumb_charsize[cut]  ,color = cgcolor('black')      
-
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.28 *valueRange $ 
-              , 'corr:    ' + string(corrFct, format = '(f6.2)') ,charsize=thumb_charsize[cut]  $
-              , color = corrFct gt 0.6 ? fsc_color('black') : fsc_color('red')  
-
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.28 *valueRange $ 
-              , 'corr:     '  ,charsize=thumb_charsize[cut]   ,color='black'  
-               
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.10 *valueRange $ 
-              , '#:  ' + string(smplFct,format='(i7)') ,charsize=thumb_charsize[cut]   ,color = cgcolor('black')     
-              
+        aw_view2d,100.*dum,no_data_idx=where(dum eq 0), w = w_dum,/noax,/buffer
+         t11 = text( 0.26,0.9 ,  ' '+ group2 +' '+group1+' !X',font_size=38,/buffer)
+        t12 = text( 0.26,0.7,'bias: ' + string(biasFct, format = imgFormat), font_size=38)
+        t13 = text( 0.26,0.5,'rmse: ' + string(rmseFct, format = imgFormat), font_size=38)
+        t14 = text( 0.26,0.3,'corr: ' + string(corrFct, format = '(f6.2)'), font_size=38)
+        t15 = text( 0.26,0.1,'#: ' + string(smplFct, format = '(i7)'), font_size=38)
+           
+        rr =  w_dum.CopyWindow(BORDER=0)
+        w00.setCurrent
+        pp =  image(rr,layout = [n_elements(group_list),n_elements(group_list),n_groups * gg + tt+ 1], /current )
+        w_dum.close 
+ 
 
       ENDIF 
       
@@ -221,35 +210,22 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
       if tt eq gg then begin
         dum = dum*0
         dum[0]=1
-      
-        view2d,100.*dum,/cool,no_data_idx=where(dum eq 0) $
-              , range=[minCorr[cut],maxCorr[cut],minCorr[cut],maxCorr[cut]] $
-              , /no_axes ,aspect=1,charthick=2.3,charsize=thumb_charsize[cut] $
-              , min=0,max=maxCorrProc[cut],no_data_col = fsc_color('orange')
-       
-        plots, [minCorr[cut],minCorr[cut],maxCorr[cut],maxCorr[cut],minCorr[cut]] $
-             , [minCorr[cut],maxCorr[cut],maxCorr[cut],minCorr[cut],minCorr[cut]] ,color=fsc_color('blue')$
-             , psym=-3,thick=2.5
         
-;           
-        xyouts, minCorr[cut] + 0.5*valueRange, minCorr[cut] +0.85 *valueRange $
-          ,  ' '+ group2 +'!X' $
-          ,charsize=1.2* thumb_charsize[cut] ,color=fsc_color('black') ,align=0.5
-
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.64 *valueRange $  
-              , 'mean: ' + string(meanFct, format = imgFormat) $
-              ,charsize= thumb_charsize[cut]  ,color=cgcolor('black')
-
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.46 *valueRange $  
-              , 'median: ' + string(mediFct, format = imgFormat) $
-              ,charsize= thumb_charsize[cut],color=cgcolor('black')
-          
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.28 *valueRange $  
-              , 'stdev: ' + string(stdevFct, format = imgFormat) $
-              ,charsize= thumb_charsize[cut],color=cgcolor('black')
-               
-        xyouts, minCorr[cut] + 0.06*valueRange, minCorr[cut] +0.10 *valueRange $ 
-              , '#: ' + string(smplFct,format='(i7)') ,charsize=thumb_charsize[cut]   ,color=cgcolor('black')
+        
+        
+        aw_view2d,100.*dum,no_data_idx=where(dum eq 0), w = w_dum,/noax,/buffer
+        t11 = text( 0.22,0.9 ,  ' '+ group2 +'!X',font_size=38)
+        imgFormat='(f5.1)'
+        t12 = text( 0.22,0.7,'mean: ' + string(meanFct, format = imgFormat), font_size=38)
+        t13 = text( 0.22,0.5,'median: ' + string(mediFct, format = imgFormat), font_size=38)
+        t14 = text( 0.22,0.3,'stdev: ' + string(stdevFct, format = imgFormat), font_size=38)
+        t15 = text( 0.22,0.1,'#: ' + string(smplFct, format = '(i7)'), font_size=38)
+        
+        rr =  w_dum.CopyWindow(BORDER=0)
+        w00.setCurrent
+        pp =  image(rr,layout = [n_elements(group_list),n_elements(group_list),n_groups * gg + tt+ 1], /current )
+        w_dum.close 
+        
       endif
       
             
@@ -262,34 +238,47 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
           minCorr[cut] = temp_max
         endif
         if tt ne 0 and gg ne 0 and dumFlag eq 0 then flag_axes = 0 else flag_axes = 1
-
-        view2d,alog(100.*dum/float(total(dum))),/cool,no_data_idx=where(dum eq 0) $
-            ; ,title= string(corrFct,format='(f5.2)') $
-            ;   +  ' '+string(rmseFct,format='(f6.1)') $
-            , range=[minCorr[cut],maxCorr[cut],minCorr[cut],maxCorr[cut]] $
-            , no_axes = flag_axes  $
-            , aspect=1,charsize = 1.5*thumb_charsize[cut] $
-            , min=alog(100./float(total(dum))),max=alog(maxCorrProc[cut])
-
-        plots,[0,0],[1000,1000],color=fsc_color('white')
-            
-        if dumFlag eq 0 and flag_axes eq 0 then dumFlag = 1
-          
-        if self.product eq 'ctp' then begin
-          xyouts, minCorr[cut] - 0.01*valueRange $ 
-              , maxCorr[cut] + 0.25*valueRange , $
-              ' '+group2+' ' $
-              + group1 +'!X' $
-              ,charsize=1.2*thumb_charsize[cut],color=fsc_color('white')  ,/data
-        endif else begin 
-          xyouts, minCorr[cut] + 0.01*valueRange,minCorr[cut] +0.85 *valueRange,  $
-            ' '+group2+' ' $
-             + group1 +'!X' $
-            ,charsize=1.2*thumb_charsize[cut],color=fsc_color('white')  
-            ; IF self.comStyle eq 'IND' then   xyouts,  minCorr[cut] + 0.55*valueRange,minCorr[cut] +0.05 *valueRange $
-            ;    ,'# '+string(total(dum),format='(i7)'),charsize=0.5
+       
+        aw_view2d,alog(100.*dum/float(total(dum))),no_data_idx=where(dum eq 0), w = w_dum,noax = (tt ne 2) or (gg ne 2) , /buffer $
+          , xrange=[minCorr[cut],maxCorr[cut]], yrange = [minCorr[cut],maxCorr[cut]] $
+          , min_value = alog(100./float(total(dum))) , max_value = alog(maxCorrProc[cut])
+        t11 = text ( 0.26, 0.7 , ' '+group2+' '+ group1 +' ',color= 'white', font_size = 38)
+        rr =  w_dum.CopyWindow(BORDER=0)
+        w00.setCurrent
+        pp =  image(rr,layout = [n_elements(group_list),n_elements(group_list),n_groups * gg + tt+ 1], /current )
+        
+        w_dum.close 
+        
         
-        endelse
+        
+        
+       ;  view2d,alog(100.*dum/float(total(dum))),/cool,no_data_idx=where(dum eq 0) $
+;             ; ,title= string(corrFct,format='(f5.2)') $
+;             ;   +  ' '+string(rmseFct,format='(f6.1)') $
+;             , range=[minCorr[cut],maxCorr[cut],minCorr[cut],maxCorr[cut]] $
+;             , no_axes = flag_axes  $
+;             , aspect=1,charsize = 1.5*thumb_charsize[cut] $
+;             , min=alog(100./float(total(dum))),max=alog(maxCorrProc[cut])
+; 
+;         plots,[0,0],[1000,1000],color=fsc_color('white')
+;             
+;         if dumFlag eq 0 and flag_axes eq 0 then dumFlag = 1
+;           
+;         if self.product eq 'ctp' then begin
+;           xyouts, minCorr[cut] - 0.01*valueRange $ 
+;               , maxCorr[cut] + 0.25*valueRange , $
+;               ' '+group2+' ' $
+;               + group1 +'!X' $
+;               ,charsize=1.2*thumb_charsize[cut],color=fsc_color('white')  ,/data
+;         endif else begin 
+;           xyouts, minCorr[cut] + 0.01*valueRange,minCorr[cut] +0.85 *valueRange,  $
+;             ' '+group2+' ' $
+;              + group1 +'!X' $
+;             ,charsize=1.2*thumb_charsize[cut],color=fsc_color('white')  
+;             ; IF self.comStyle eq 'IND' then   xyouts,  minCorr[cut] + 0.55*valueRange,minCorr[cut] +0.05 *valueRange $
+;             ;    ,'# '+string(total(dum),format='(i7)'),charsize=0.5
+;         
+;         endelse
         
         if self.product eq 'ctp' then begin
           maxCorr[cut] = temp_max
@@ -301,16 +290,19 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
   
   
   idx_prd = where(product eq *self.prdList)
-  
-
-  ; write title to graph
-  xyouts,0.5,0.98,' '+self.coef['prd',product,'longname']+', '+self->get_date(/nice)+ $
-      addtitle+'!X',align=0.5,/Normal $
-      , charsize =1.5*thumb_charsize[cut]
+  w00.setCurrent
+  t33 = text(0.5,0.98,' '+self.coef['prd',product,'longname']+', '+self->get_date(/nice)+ $
+      addtitle+'!X' , align = 0.5 )
+      outname = self->build_result_filename(_extra=_extra, single=single, n_disks=n_disks)+addname
+      
+  t12 = text(0.02,0.01,'created on '+systime()+' AW',font_size=7)  
+     
+  w00.save,outname+'.png'
+  print,'saved in',outname+'.png'
 
   ;xyouts,0.99,0.97,self->get_date(/nice),/Normal,charsize=1.5*thumb_charsize[cut],align=1
 
-  if self.cut ne 0 then xyouts,0.05,0.97,'Cut:'+strtrim(cut,1),/Normal,charsize=1.5*thumb_charsize[cut]
+  ;if self.cut ne 0 then xyouts,0.05,0.97,'Cut:'+strtrim(cut,1),/Normal,charsize=1.5*thumb_charsize[cut]
   
 ;  fobj=obj_new('msg_data_cl')
 ;  fobj->set_date,self.year, self.month, self.day, self.hour, self.minute
@@ -318,15 +310,7 @@ pro cws_stats::make_corThumb, product=product, hour=hour, phase=phase, surf=surf
 ;  obj_destroy,fObj
 ;  stop
 
-  !p=p_preserve
   
-  !x =x_def
-  !y = y_def
-  !p.multi=0
-
-
-  write_png,self->build_result_filename(_extra=_extra,single=single,n_disks=n_disks)+addname+'.png', tvrd(/true)
-
 
 ;  cphFlag ++
 ;  if phseFlag and (cphFlag lt 3) then begin
diff --git a/cws_stats__make_image_cmb.pro b/cws_stats__make_image_cmb.pro
index 20ba35662990f4f94b6a9a5cdfa24643796e54d0..03ef2044d9078d241e98de7a712e49733271b146 100644
--- a/cws_stats__make_image_cmb.pro
+++ b/cws_stats__make_image_cmb.pro
@@ -5,244 +5,159 @@ pro cws_stats::make_image_cmb $
   , group = group $
   , phase = phase
   
-  
-  
-COMMON FEEDBACK, quiet, verbose, debug
-
-
-
+ 
   x_def = !x
   y_def = !y
   group_list = self->create_group_list(product=product, group=group, guteInd=guteInd, single=single, no_FUB=no_FUB)
-  
+ 
+  n_groups = n_elements(group_list)   
 
   ; adjust the size of the diagram / and open device 
-       if keyword_set(single) then begin 
-         ; single plot
-         !p.multi=0
-         !x.margin = 2.0
-         !y.margin = [0.0,0.2]
-         !y.omargin = [0.2,0.2]
-         charsize = 1.4
-       endif else begin 
-         !p.multi=self.coef['prd','cmb','pmulti']
-         ;self->startDevice, xscale=0.2+(2./3.*float(pmultimg[1])), yscale=2./3.* float(pmultimg[1]), addn=addName
-         window,1,xsize=200 * !p.multi[1] ,ysize=200 * !p.multi[2]
-         !x.omargin=1.
-         !y.omargin=[2.,6.]
-         !x.margin=0.9
-         !y.margin=[0.2,2.2]
-         charsize=2.2
-         
-         
-         ;self->startDevice, xscale=2.1, yscale=1.8
-       endelse 
+  if keyword_set(single) then begin 
+    ; single plot
+    !P.multi=0
+    !X.margin = 2.0
+    !Y.margin = [0.0,0.2]
+    !Y.omargin = [0.2,0.2]
+    charsize = 1.4
+  endif else begin 
+    !P.multi=self.coef['prd','cmb','pmulti']
+    w1 = window ( dimensions = [200 * ceil((n_groups)/3.),206*3] , location =[0.1,0.1],/buffer )   
+    
+    
+  endelse 
  
-       ; read land sea mask
-       ls = self->land_sea()
+  ; read land sea mask
+  ls = self->land_sea()
  
-       ; get longitude
-       lon = self->lon()
+  ; get longitude
+  lon = self->lon()
+  coast=self->coast_line(/vec)
 
        ; initialize counter for disagreements
-       cld = ls * 0
-       obs = cld
-       n_data = 0
+  cld = ls * 0
+  obs = cld
+  n_data = 0
   
-       ; loop over groups, take only the groups with data (guteInd)
-       ;FOR gg = 0, n_elements(guteInd) -1 DO BEGIN
-       FOR gg = 0, n_elements(group_list)-1 DO BEGIN
 
-         ; skip the COX group, if phase is not ice
-         if group_list[gg] eq 'COX' and phase ne 'ice' then continue
+  for gg = 0, n_groups -1 do begin     
+    ; set the group
+    
+    group_str = group_list[gg]
+    if group_str ne 'AVG' then begin  
+	    self->set_group, group_str
+	    img = self->get_data(phase=phase, surf=surf )
+	  endif
+    ; skip plot if single plot is wanted and there is no data 
+	  if keyword_set(single) and n_elements(img) eq 1 then return
 
-         ; set the group
-         ;group_str = (*(self.grpList))[guteInd[gg]]
-         group_str = group_list[gg]
-	 
-   
-           self->set_group, group_str
-	   img = self->get_data(phase=phase, surf=surf )
-	 ;endelse
-
-         ; skip plot if single plot is wanted and there is no data 
-	 if keyword_set(single) and n_elements(img) eq 1 then return
-
-         ; for single plot open device for each group
-         if keyword_set(single) then self->startDevice, xscale=1.2, yscale=1.2, /single, n1 = group_str, addn=addName
+    ; for single plot open device for each group
+    ;if keyword_set(single) then self->startDevice, xscale=1.2, yscale=1.2, /single, n1 = group_str, addn=addName
 
          ; first normal data, then no data
-	 if n_elements(img) ne 1 then begin		
-	
-           if group ne 'AVG' then begin 
-             ; modify cloud data, cloud -> 3, land -> 1, sea -> 0          
-             dum = (0 * img) $
-                   + 3*(img gt 1.5) $
-                   + 1*(between(img,0.5,1.5) And (ls eq 255) ) $
-                   + 2*(between(img,0.5,1.5) And (ls eq 127) )
-             ; specify color table
-             color_table = 14
-             mini=1
-             maxi=3
-             ; calculate fraction of cloudy pixels for this scene		
-             frc = round(100.* total(img gt 1.5)/float(total(img gt 0.0)) )
-             print, '   ', group_str + '  (', frc, '%)', min(img), max(img)
-             color_bar = 0
-
-             ; plot image
-             view2d, dum $ 
-               , color_bar = color_bar $
-               , no_data_idx=where(img le 0) $
-               , coast_vec=size(coast,/type) eq 10 ? coast : 0 $
-               , title = group_str + '  ('+makes(frc,frc,1,di=2) + '%)' $
-               , aspect=1 $
-               , coast_col=0 $
-               , mini=mini, maxi=maxi $
-               , ticklength =0. $
-               , /cool $
-               , /no_axes $
-               , charsize=charsize $
-               , space_idx = where(lon lt -200) $
-               , space_col= !p.background $
-               , col_table = color_table, position=[0.05,0.0,1.00,1.00] ;, pos2= [1200, 300, 7500, 7500]
-             delvarx, crop
-           endif else begin 
-             ; do not modify the multi algorithm average
-             dum = img
-             ; specify color table
-             color_table = 13
-             mini=0
-             maxi=1
-             ; calculate fraction of cloudy pixels for this scene		
-             frc = round(100.* total(img gt 0.5)/float(total(img gt 0.0)) )
-             print, '   ', group_str + '  (', frc, '%)', min(img), max(img)
-             bartitle = 'cloud cover'
-
-             ; !!! cheating !!!
-             img[where(img eq max(img))] = 1.0
-
-             ;; plot image
-             view2d, img $
-               ,/cool, color_bar = 1 $
-               ,no_data_idx = where(img eq -1.) $
-               ,mini=mini, maxi=maxi $
-               ;,mini=0, maxi=2.3 $
-               ,title = 'algorithm average' + '  ('+makes(frc,frc,1,di=2) + '%)' $
-               ,coast_vec=size(coast,/type) eq 10 ? coast : 0 $
-               ,coast_thick = 1.1 $
-               ,coast_color = fsc_color('black') $
-               ,/no_axes $
-               ,barformat=Imgformat $
-               ,aspect=1 $
-               ,barcharsize=1. $
-               ,bartitle = bartitle $
-               ,Col_Table = 17 $
-               ,brewer = 1 $
-               ,space_idx = Where(self->lon() Lt -200.) $
-               ,space_color = !P.background $
-               ,barsize=0.18 $
-               ,bardist = -0.14 $
-               ,charsize = charsize, position=[0.05,0.18,0.97,0.97]
-             crop = '725x610+30+0'
-           endelse 
- 
-
-           ; do statistics for disagreement plot
-           ; add 1 to each pixel with cloud       (for gg=0 initialize)         
-           cld = gg eq 0 ? img gt 1.5 : temporary(cld) + (img gt 1.5) 
-           ; add 1 to each pixel with obersavtion (for gg=0 initialize)
-           obs = gg eq 0 ? img ne 0   : temporary(obs) + (img ne 0)
-           ; add 1 to number of good data sets
-           n_data++
-
-         endif else begin 
-
-            dum = fltarr( 742, 742) 
-            dum = + 1*(ls eq 255) + 2*(ls eq 127) 
-
-            ; if no data is available, plot empty disc
-            view2d,dum $
-              ,no_data_idx=where(img le 0) $
-              ,coast_vec=size(coast,/type) eq 10 ? coast : 0 $
-              ,title = group_str  $
-              ,aspect=1 $
-              ,coast_col=0 $
-              ,mini=1 $
-              ,maxi=3 $
-              ,ticklength =0. $
-              ,/cool $
-              ,/no_axes $
-              ,charsize=charsize $
-              ,space_idx = where(lon lt -200) $
-              ,space_col= !p.background $
-              ,col_table = 14, position=[0.05,0.0,1.00,1.00]
-              ;,/nodata
+	  if n_elements(img) ne 1 then begin		
+	    
+      ; modify cloud data, cloud -> 3, land -> 1, sea -> 0          
+      dum = (0 * img) $
+           + 3*(img gt 1.5) $
+           + 1*(between(img,0.5,1.5) And (ls eq 255) ) $
+           + 2*(between(img,0.5,1.5) And (ls eq 127) )
+       
+       
+      mini=0
+      maxi=3
+      ; calculate fraction of cloudy pixels for this scene		
+      frc = round(100.* total(img gt 1.5)/float(total(img gt 0.0)) )
+      print, '   ', group_str + '  (', frc, '%)', min(img), max(img)
+      color_bar = 0
+         
+      aw_view2d,dum, w = w    ,/buffer $
+          , title = group_str + '  ('+makes(frc,frc,1,di=2) + '%)' $
+          , min_value = mini, font_size = 18,/cmb,/noax
+      rr =  w.CopyWindow(BORDER=0)
+      w1.setCurrent
+      pp =  image(rr,layout = [ceil((n_groups)/3.),3,gg+1], /current )
+      w.close
+
+      ; do statistics for disagreement plot
+      ; add 1 to each pixel with cloud       (for gg=0 initialize)         
+      cld = gg eq 0 ? img gt 1.5 : temporary(cld) + (img gt 1.5) 
+      ; add 1 to each pixel with obersavtion (for gg=0 initialize)
+      obs = gg eq 0 ? img ne 0   : temporary(obs) + (img ne 0)
+      ; add 1 to number of good data sets
+      n_data++
+
+    endif else begin 
+
+      dum = fltarr( 742, 742) 
+      dum = + 1*(ls eq 255) + 2*(ls eq 127) 
         
-            ; write 'NO DATA' over the plot 
-            xyouts,((size(dum,/dim))[0])/2.,((size(dum,/dim))[0])/2. $
-              ,'NO DATA',orientation = 45,align = 0.5 ,charsize=2. $
-              , color =fsc_color('gold')
-
-         endelse
-	
-				
-	
-
-         ; single plot for each group ...
-         if keyword_set(single) then begin 
-           ; write date and region above the title
-           xyouts, 0.5, 0.95, 'Cloud mask ' + ' ' + self->get_date(/nice) $
-              +'  Cut ' + makes(self.cut,self.cut,1,di=2), $
-              color=fsc_color('black'), /normal, $
-              alignment=0.5, charsize=1.0
+      aw_view2d,dum,w=w,/buffer $
+          , title = group_str+' ( NO DATA)' $
+          , min_value = mini, font_size = 18,/cmb,/noax
+          
+      t1 = text(300, 300, 'NO DATA' $
+              , orientation = 45. , alignment = 0.5 $
+              , font_size = 40. ,color='red',/data)    
+      rr =  w.CopyWindow(BORDER=0)
+      w1.setCurrent
+      pp =  image(rr,layout = [ceil((n_groups)/3.),3,gg+1], /current )
+               
+    endelse
+
+    ; single plot for each group ...
+    if keyword_set(single) then begin 
+        ; write date and region above the title
+      xyouts, 0.5, 0.95, 'Cloud mask ' + ' ' + self->get_date(/nice) $
+          +'  Cut ' + makes(self.cut,self.cut,1,di=2), $
+          color=fsc_color('black'), /normal, $
+          alignment=0.5, charsize=1.0
 
            ; write to png
-         endif 
+    endif 
 	 
-       ENDFOR
-
-       ; multiplot for all groups
-       if not keyword_set(single) then begin  $
-         ; write write date and region
-         xyouts, 0.5, 0.95, 'Cloud mask ' + ' ' + self->get_date(/nice) $
-            +'  Cut ' + makes(self.cut,self.cut,1,di=2) + addtitle, $
-            color=fsc_color('black'), /normal, $
-            alignment=0.5 ,charsize=1.5
-
-         outname = self->build_result_filename(_extra=_extra, single=single, n_disks=n_disks)
-          png_transparent_bg,name=outname+'.png',tvrd(/true)
-       endif 
-
-       ; -----------
-       ; create plot for disagreement 
-       if group eq 'all' or group eq 'ALL' then begin 
-         if not quiet then print,'... create agreement plot'
-         !p.multi=0
-         !x.margin = 0.5
-         !y.margin = [0.05,0.1]
-         !y.omargin = [0.2,0.2]
-         charsize = 0.97
-         window ,2,xsize=600,ysize=600
-         ;self->startDevice, xscale=1.3, yscale=1.3, n1 = 'AGR', addn=addName  ;, addname='_MATCH_PERC'
-  
-         ; maximal number of disagreements
-         n_max = float(floor(0.5*obs))
-  
-         ; plot image
-         view2d, float((obs-cld) < cld) / n_max, /cool, /colo, no_data_idx=where(cld eq 0),$
-                  title='Cloud mask disagreement', $
-                  coast_vec=size(coast,/type) eq 10 ? coast : 0, coast_col=0, aspect=1, $
-                  /no_axes, min=0., max=1., bar_nlev=5,$
-                  bardist=-0.15, /discrete, barformat='(F3.1)',charsize=charsize, bartitle='disagreement', $
-                  space_idx = where(self->lon() lt -200), space_col = !p.background, $
-                  col_table = 15, position=[0.1, 0.0, 1.0, 1.0]   ; col_table = 16,
+  ENDFOR
+
+  ; multiplot for all groups
+  if not keyword_set(single) then begin  
+         
+         
+    t11 = text ( 0.5,0.96,'Cloud Mask '+ self->get_date(/nice) $
+            +'  Subregion ' + makes(self.cut,self.cut,1,di=2) + addtitle $
+            , color='black',/normal,alignment=0.5, font_size=16 )
+            
+    t12 = text(0.02,0.01,'created on '+systime(),font_size=7)     
+    
+
+    outname = self->build_result_filename(_extra=_extra, single=single, n_disks=n_disks)
+    w1.save, outname+'.png',/transparency
+    print,'file saved: ',outname+'.png'
+    w1.close
+  endif 
+
+  ; -----------
+  ; create plot for disagreement 
+  if group eq 'all' or group eq 'ALL' then begin 
+    if not self.quiet then print,'... create agreement plot'
+    n_max = float(floor(0.5*obs))
   
-        outname = self->build_result_filename(_extra=_extra, single=single, n_disks=n_disks,addn='_MATCH_PERC')
-        png_transparent_bg,name=outname+'.png',tvrd(/true)
-        ; self->endDevice
-       ;  if ~keyword_set(ps) then self->makeJPG, addn='_MATCH_DISAGR', crop='780x660+130+160'
-       endif 
-       ; -----------
+          
+    aw_view2d,float((obs-cld) < cld) / n_max, no_data_idx=where(cld eq 0),bartitle = 'disagreement' $
+    , w = w_dis, /color_bar,/buffer
+          
+    t11 = text ( 0.5,0.96,'Cloud Mask '+ self->get_date(/nice) $
+      + '  Subregion ' + makes(self.cut,self.cut,1,di=2) + addtitle $
+      , color='black',/normal,alignment=0.5, font_size=12 )
+            
+    t12 = text(0.02,0.01,'created on '+systime(),font_size=7)  
+          
+    outname = self->build_result_filename(_extra=_extra, single=single, n_disks=n_disks,addn='_MATCH_PERC')
+    w_dis.save,outname+'.png'
+    print,'file saved: ',outname+'.png'
+    w_dis.close
+
+  endif 
+     
 			 
 
 
diff --git a/icwg2_wrap_images.pro b/icwg2_wrap_images.pro
index 828318fb8d0194a25758083262b3751d92687dc5..99571580f6154ac46a1fa8e4a28b3228d0f9f864 100644
--- a/icwg2_wrap_images.pro
+++ b/icwg2_wrap_images.pro
@@ -1,12 +1,16 @@
 pro icwg2_wrap_images
- o = cws_stats()
- group_list = self->create_group_list(product='cmb', group=group,     guteInd=guteInd, single=single, no_FUB=no_FUB)
+for cc=0,6 do begin
+if cc eq 1 then continue
+ for hh =0,23 do begin
  
- 
- 
- o.make_image,product='cmb',/single
- stop
- o.make_corthumb,product='cmb'
+  for mi =00,45,15 do begin
+    hour = string(hh,mi,format='(2(i2.2))')
+    
+      
+      CWS_STATS_DO_IT,product='cmb',kind=3,cut=cc,hour = hour
+    endfor
+  endfor
+endfor    
 stop
 
 end