diff --git a/crpptbx/AUG/CEZ_CMZ_fit.m b/crpptbx/AUG/CEZ_CMZ_fit.m
index 847b64e47749fb4825bc1bc5a2e70f43c73fbe8a..43b7814fb6b1c204bfbe3aeeca76e8962427b99b 100644
--- a/crpptbx/AUG/CEZ_CMZ_fit.m
+++ b/crpptbx/AUG/CEZ_CMZ_fit.m
@@ -10,7 +10,7 @@ if exist(filename_data,'file')
 else
   cxrs=gdat(shot,'cxrs_rho','doplot',1);
   cmz=gdat(shot,'cxrs_rho','doplot',1,'source','cmz');
-  eval(['save ' filename_data])
+  eval(['save ' filename_data ' cxrs cmz'])
 end
 cez_cmz_data = [];
 cez_cmz_fit = [];
diff --git a/crpptbx/AUG/CEZ_CMZ_guiplot.m b/crpptbx/AUG/CEZ_CMZ_guiplot.m
index 3066c2d4b3612c1a0d045385fb7578c6b261f54e..e43c85903df00584237f14447f0f93a1adac0b91 100644
--- a/crpptbx/AUG/CEZ_CMZ_guiplot.m
+++ b/crpptbx/AUG/CEZ_CMZ_guiplot.m
@@ -55,6 +55,11 @@ function CEZ_CMZ_guiplot_OpeningFcn(hObject, eventdata, handles, varargin)
 % Choose default command line output for CEZ_CMZ_guiplot
 handles.output = hObject;
 
+% change defaults here to avoid changing .fig too much:
+tension_ti_def = str2double(get(handles.set_tension_ti,'string'));
+tension_ti_def_eff = -1;
+set(handles.set_tension_ti,'string',num2str(tension_ti_def_eff));
+
 handles = init_CEZ_gui(handles);
 
 % Update handles structure
@@ -253,7 +258,8 @@ try
   else
     time = str2num(time_prev);
     handles.it_index = iround_os(handles.data.time,time);
-    time_slide = (time-handles.data.time(1))./(handles.data.time(end)-handles.data.time(1)).*diff(handles.slider_range) + handles.slider_range(1);
+    time_slide = abs((time-handles.data.time(1))./(handles.data.time(end)-handles.data.time(1)).*diff(handles.slider_range) + handles.slider_range(1));
+    if time_slide>1; time_slide=1; end
     set(handles.time_set_slider,'Value',time_slide);
   end
   
@@ -280,6 +286,7 @@ function set_tension_ti_Callback(hObject, eventdata, handles)
 % Hints: get(hObject,'String') returns contents of set_tension_ti as text
 %        str2double(get(hObject,'String')) returns contents of set_tension_ti as a double
 
+set_shot_Callback(hObject, eventdata, handles);
 
 % --- Executes during object creation, after setting all properties.
 function set_tension_ti_CreateFcn(hObject, eventdata, handles)
@@ -303,6 +310,7 @@ function set_tension_vrot_Callback(hObject, eventdata, handles)
 % Hints: get(hObject,'String') returns contents of set_tension_vrot as text
 %        str2double(get(hObject,'String')) returns contents of set_tension_vrot as a double
 
+set_shot_Callback(hObject, eventdata, handles);
 
 % --- Executes during object creation, after setting all properties.
 function set_tension_vrot_CreateFcn(hObject, eventdata, handles)
diff --git a/crpptbx/AUG/aug_requests_mapping.m b/crpptbx/AUG/aug_requests_mapping.m
index 796d29265d733fcc455f0e98d9a27875f3daf709..6a7237085c82279790e799b9587e7143a575d723 100644
--- a/crpptbx/AUG/aug_requests_mapping.m
+++ b/crpptbx/AUG/aug_requests_mapping.m
@@ -238,11 +238,15 @@ switch lower(data_request)
  case 'rhotor'
   mapping.timedim = 2;
   mapping.method = 'switchcase';
-  mapping.label = 'rhotor\_norm';
+  mapping.label = 'rhotor';
  case 'rhotor_edge'
   mapping.timedim = 1;
   mapping.method = 'switchcase';
   mapping.label = 'rhotor\_edge';
+ case 'rhotor_norm'
+  mapping.timedim = 1;
+  mapping.method = 'switchcase';
+  mapping.label = 'rhotor\_norm';
  case 'rhovol'
   mapping.timedim = 2;
   mapping.label = 'rhovol\_norm';
diff --git a/crpptbx/AUG/gdat_aug.m b/crpptbx/AUG/gdat_aug.m
index 3b77c8a06e70f3f859672e13d6cb9757cd0e6529..86f2809208906202254de6c28e15a2e6692b6171 100644
--- a/crpptbx/AUG/gdat_aug.m
+++ b/crpptbx/AUG/gdat_aug.m
@@ -73,7 +73,8 @@ gdat_params.nverbose = 1;
 
 % construct list of keywords from global set of keywords and specific AUG set
 % get data_request names from centralized table
-data_request_names = get_data_request_names;
+%%% data_request_names = get_data_request_names; % do not use xlsx anymore but scan respective machine_requests_mapping.m files
+data_request_names = get_data_request_names_from_gdat_xxx(default_machine);
 % add AUG specific to all:
 if ~isempty(data_request_names.aug)
   aug_names = fieldnames(data_request_names.aug);
@@ -1619,44 +1620,93 @@ elseif strcmp(mapping_for_aug.method,'switchcase')
     end
 
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-   case {'rho_tor', 'rhotor_edge', 'rhovol', 'volume_rho'}
+   case {'rhotor', 'rhotor_edge', 'rhotor_norm', 'rhovol', 'volume_rho'}
     if strcmp(upper(gdat_data.gdat_params.equil),'FPG')
       gdat_params_prev = gdat_data.gdat_params; gdat_params_eff = gdat_params_prev;
-      gdat_params_eff.data_request = [{'FPG'},{'fax-bnd'},{'AUGD'}];
+      gdat_params_eff.data_request = [{'FPG'},{'Vol'},{'AUGD'}];
       gdat_data = gdat_aug(gdat_data.shot,gdat_params_eff);
       gdat_data.gdat_params = gdat_params_prev;
-      gdat_data.label = 'psi\_axis-psi\_edge';
-      gdat_data.data_fullpath = [gdat_data.data_fullpath ' yields only psi\_axis-psi\_edge from FPG/fax-bnd'];
+      gdat_data.label = 'Vol';
+      gdat_data.data_fullpath = [gdat_data.data_fullpath ' yields only edge Volume from FPG/Vol'];
+      return
+    end
+    [gdat_data,exp_name_eff,DIAG,NTIME_Lpf,NTIME,Lpf1_t,Lpf_SOL] = get_EQ_params(gdat_data);
+    % since Lpf depends on time, need to load all first and then loop over time for easier mapping
+    [phi_tree,e]=rdaAUG_eff(shot,DIAG,'TFLx',exp_name_eff);
+    ndimrho = size(phi_tree.data,2);
+    if ndimrho==NTIME_Lpf
+      % data seems to be transposed
+      ndimrho = size(phi_tree.data,1);
+      itotransposeback = 1; % seems x,time inverted so transpose and exchange .x and .t
     else
-      [gdat_data,exp_name_eff,DIAG,NTIME_Lpf,NTIME,Lpf1_t,Lpf_SOL] = get_EQ_params(gdat_data);
-      % since Lpf depends on time, need to load all first and then loop over time for easier mapping
-      [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff);
-      ndimrho = size(psi_tree.data,2);
-      if ndimrho==NTIME_Lpf
-	% data seems to be transposed
-	ndimrho = size(psi_tree.data,1);
-	itotransposeback = 1; % seems x,time inverted so transpose and exchange .x and .t
-      else
-	itotransposeback = 0;
+      itotransposeback = 0;
+    end
+    phi_tree=adapt_rda(phi_tree,NTIME,ndimrho,itotransposeback);
+    ijnan=find(isnan(phi_tree.value));
+    phi_tree.value(ijnan)=0;
+    [Vol,e]=rdaAUG_eff(shot,DIAG,'Vol',exp_name_eff);
+    Vol=adapt_rda(Vol,NTIME,2*ndimrho,itotransposeback);
+    [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff);
+    psi_tree=adapt_rda(psi_tree,NTIME,ndimrho,itotransposeback);
+    %
+    switch data_request_eff
+     case {'volume_rho', 'rhovol'}
+      for it=1:NTIME
+	Lpf1 = Lpf1_t(it);
+	psi_it=psi_tree.value(it,Lpf1:-1:1)';
+	psi_axis(it)= psi_it(1);
+	psi_lcfs(it)= psi_it(end);
+	gdat_data.x(:,it) = sqrt(abs((psi_it-psi_axis(it)) ./(psi_lcfs(it)-psi_axis(it))));
+	gdat_data.vol(:,it)=Vol.value(it,2*Lpf1-1:-2:1)'; 
+	% gdat_data.dvoldpsi(:,it)=Vol.value(it,2*Lpf1:-2:2)'; % 2nd index are dV/dpsi
+	gdat_data.rhovolnorm(:,it) = sqrt(abs(gdat_data.vol(:,it) ./ gdat_data.vol(end,it)));
       end
-      psi_tree=adapt_rda(psi_tree,NTIME,ndimrho,itotransposeback);
-      ijnan=find(isnan(psi_tree.value));
-      psi_tree.value(ijnan)=0;
-      gdat_data.dim{1} = gdat_data.t;
-      gdat_data.dimunits{1} = 'time [s]';
+      gdat_data.dim{1} = gdat_data.x;
+      gdat_data.dim{2} = gdat_data.t;
+      gdat_data.dimunits{1} = 'rhopolnorm';
+      gdat_data.dimunits{2} = 'time [s]';
+      if strcmp(data_request_eff,'volume_rho')
+	gdat_data.data = gdat_data.vol;
+	gdat_data.units = Vol.units;
+      else strcmp(data_request_eff,'rhovol')
+	gdat_data.data = gdat_data.rhovolnorm;
+	gdat_data.units = ' ';
+      end
+     case {'rhotor', 'rhotor_edge', 'rhotor_norm'}
+      b0=gdat(shot,'b0');
+      gdat_data.b0 = interpos(b0.t,b0.data,gdat_data.t,-1);
       for it=1:NTIME
 	Lpf1 = Lpf1_t(it);
+	gdat_data.phi(:,it) = phi_tree.value(it,Lpf1:-1:1)';
+	gdat_data.rhotornorm(:,it) = sqrt(abs(gdat_data.phi(:,it) ./ gdat_data.phi(end,it)));
+	gdat_data.rhotor(:,it) = sqrt(abs(gdat_data.phi(:,it) ./ gdat_data.b0(it) ./ pi));
 	psi_it=psi_tree.value(it,Lpf1:-1:1)';
-	if strcmp(data_request_eff,'psi_axis')
-	  gdat_data.data(it)= psi_it(1);
-	elseif strcmp(data_request_eff,'psi_edge')
-	  gdat_data.data(it)= psi_it(end);
-	else
-	end
+	psi_axis(it)= psi_it(1);
+	psi_lcfs(it)= psi_it(end);
+	gdat_data.x(:,it) = sqrt(abs((psi_it-psi_axis(it)) ./(psi_lcfs(it)-psi_axis(it))));
+      end
+      if strcmp(data_request_eff,'rhotor')
+	gdat_data.data = gdat_data.rhotor;
+	gdat_data.units = 'm';
+	gdat_data.dim{1} = gdat_data.x;
+	gdat_data.dim{2} = gdat_data.t;
+	gdat_data.dimunits{1} = 'rhopolnorm';
+	gdat_data.dimunits{2} = 'time [s]';
+      elseif strcmp(data_request_eff,'rhotor_edge')
+	gdat_data.data = gdat_data.rhotor(end,:);
+	gdat_data.units = 'm';
+	gdat_data.dim{1} = gdat_data.t;
+	gdat_data.dimunits{1} = 'time [s]';
+      elseif strcmp(data_request_eff,'rhotor_norm')
+	gdat_data.data = gdat_data.rhotornorm;
+	gdat_data.units = ' ';
+	gdat_data.dim{1} = gdat_data.x;
+	gdat_data.dim{2} = gdat_data.t;
+	gdat_data.dimunits{1} = 'rhopolnorm';
+	gdat_data.dimunits{2} = 'time [s]';
       end
-      gdat_data.units = psi_tree.units;
-      gdat_data.data_fullpath = [DIAG '/PFL extract ' data_request_eff];
     end
+    gdat_data.data_fullpath = [DIAG '/PFL extract in .data: ' data_request_eff];
 
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    case {'sxr'}
diff --git a/crpptbx/JET/gdat_jet.m b/crpptbx/JET/gdat_jet.m
index 5c3bcc7c25ff0467a3e9fcb1ec83272bb990843d..f289ddce0a9665767556e28f241350b8901c9255 100644
--- a/crpptbx/JET/gdat_jet.m
+++ b/crpptbx/JET/gdat_jet.m
@@ -73,7 +73,8 @@ gdat_params.nverbose = 1;
 
 % construct list of keywords from global set of keywords and specific JET set
 % get data_request names from centralized table
-data_request_names = get_data_request_names;
+%%% data_request_names = get_data_request_names; % do not use xlsx anymore but scan respective machine_requests_mapping.m files
+data_request_names = get_data_request_names_from_gdat_xxx(default_machine);
 % add JET specific to all:
 if ~isempty(data_request_names.jet)
   jet_names = fieldnames(data_request_names.jet);
diff --git a/crpptbx/TCV/gdat_tcv.m b/crpptbx/TCV/gdat_tcv.m
index f37c0abb999937155e563c9bdbbabc2b0b5a032b..5eb934dddea25e51228ca2568a523b6f1ceae50b 100644
--- a/crpptbx/TCV/gdat_tcv.m
+++ b/crpptbx/TCV/gdat_tcv.m
@@ -72,7 +72,8 @@ gdat_params.nverbose = 1;
 
 % construct list of keywords from global set of keywords and specific TCV set
 % get data_request names from centralized table
-data_request_names = get_data_request_names;
+%%% data_request_names = get_data_request_names; % do not use xlsx anymore but scan respective machine_requests_mapping.m files
+data_request_names = get_data_request_names_from_gdat_xxx(default_machine);
 % add TCV specific to all:
 if ~isempty(data_request_names.tcv)
   tcv_names = fieldnames(data_request_names.tcv);
diff --git a/crpptbx/get_data_request_names_from_gdat_xxx.m b/crpptbx/get_data_request_names_from_gdat_xxx.m
new file mode 100644
index 0000000000000000000000000000000000000000..427ac9bc4e2c1aad594e4a5410c798e01b67400d
--- /dev/null
+++ b/crpptbx/get_data_request_names_from_gdat_xxx.m
@@ -0,0 +1,42 @@
+function [data_request_names] = get_data_request_names_from_gdat_xxx(machine_in);
+%
+% get list of presently available data_request names grouped and with description
+%
+% at this stage using first 3 columns of file gdat_data_request_names.xlsx
+%
+
+data_request_names = [];
+
+expected_machines = [{'aug'}, {'jet'}, {'tcv'}]; % substrutures created for these at this stage (all means all of these)
+for j=1:length(expected_machines)
+  data_request_names.(expected_machines{j}) = [];
+end
+ij=strmatch(lower(machine_in),expected_machines);
+if isempty(ij)
+  disp(['machine ' machine_in ' not expected in get_data_request_names_from_gdat_xxx'])
+  return
+end
+machine_in = lower(machine_in);
+fid=fopen([machine_in '_requests_mapping.m'],'r');
+nextline=fgetl(fid);
+keywds = [];
+while isempty(nextline) || ~isnumeric(nextline) || nextline~=-1 %length(nextline)>2 || ~strcmp(nextline,'-1')
+  if length(nextline)>7 && strcmp(nextline(1:6),' case ')
+    ij=find(nextline==['''']);
+    if ~isempty(ij)
+      for i=1:2:length(ij)-1
+	keywds_next = nextline(ij(i)+1:ij(i+1)-1);
+	i_backslash = find(keywds_next=='\');
+	i_column = find(keywds_next==':');
+	if isempty(i_backslash) && isempty(i_column)
+	  keywds{end+1} = keywds_next;
+	  data_request_names.(machine_in).(keywds{end}) = keywds{end};
+	end
+      end
+    end
+  end
+  nextline=fgetl(fid);
+end
+fclose(fid);
+data_request_names.all = [];
+