diff --git a/matlab/IMAS/gdat_imas.m b/matlab/IMAS/gdat_imas.m
index d2b06fefcbdf8d2fcc5fc3b3289cc933cdc28ddd..a65df0e9aed2d8627dd98e6732a7cb5388019e11 100644
--- a/matlab/IMAS/gdat_imas.m
+++ b/matlab/IMAS/gdat_imas.m
@@ -7,7 +7,7 @@ function [gdat_data,gdat_params,error_status,varargout] = gdat_imas(shot,data_re
 %
 % If no inputs are provided, return the list of available pre-defined data_request in gdat_data and default parameters gdat_params
 %
-% IMAS means assume access data from IDS database ala IMAS with run_number, database_user, tokamak_name, data_major_version and  using imas_open_env and ids_get calls
+% IMAS means assume access data from IDS database ala IMAS with run_number, database_user, tokamak_name, data_major_version and  using imas_open_env and ids_get calls (added backend choice as well, default hdf5 (13), otherwise 12 for mdsplus)
 % Should be the same on ITER hpc and gateway, to be checked
 %
 % At first only "ids" request implemented, but keywords like ip etc should relate to specific IDS as for any machine
@@ -270,6 +270,10 @@ if ~isfield(gdat_data.gdat_params,'data_major_version')
   gdat_data.gdat_params.data_major_version = '3';
   if gdat_data.gdat_params.nverbose >= 3; disp('set data_major_version to ''3'' as default since not provided'); end
 end
+if ~isfield(gdat_data.gdat_params,'backend')
+  gdat_data.gdat_params.backend = 13;
+  if gdat_data.gdat_params.nverbose >= 3; disp('set backend to 13 as default since not provided'); end
+end
 error_status = 6; % at least reached this level
 gdat_params = gdat_data.gdat_params;
 
@@ -285,8 +289,13 @@ if do_mdsopen_mdsclose
     return
   end
   try
-    gdat_data.gdat_params.idx_imas_open_env = imas_open_env('ids', shot, gdat_data.gdat_params.run,gdat_data.gdat_params.database_user, ...
+    if exist('imas_open_env_backend') > 0
+      gdat_data.gdat_params.idx_imas_open_env = imas_open_env_backend(shot, gdat_data.gdat_params.run,gdat_data.gdat_params.database_user, ...
+          gdat_data.gdat_params.tokamak_name,gdat_data.gdat_params.data_major_version,gdat_data.gdat_params.backend);
+    else
+      gdat_data.gdat_params.idx_imas_open_env = imas_open_env('ids', shot, gdat_data.gdat_params.run,gdat_data.gdat_params.database_user, ...
           gdat_data.gdat_params.tokamak_name,gdat_data.gdat_params.data_major_version);
+    end
     disp('')
   catch ME
     warning('could not imas_open_env with following gdat_data.gdat_params:');
diff --git a/matlab/TCV_IMAS/ids2database.m b/matlab/IMAS/ids2database.m
similarity index 79%
rename from matlab/TCV_IMAS/ids2database.m
rename to matlab/IMAS/ids2database.m
index eb2c2ed7f0275d6700c482f8c6f3a1a4727d2fae..75ccc26f098d00923fabe7a59069004995b20ebd 100644
--- a/matlab/TCV_IMAS/ids2database.m
+++ b/matlab/IMAS/ids2database.m
@@ -1,13 +1,13 @@
 function [ids_put_status] = ids2database(shot,run,occurence,ids2put,tree_user,tree_tokamak,tree_majorversion,imas_backend,varargin);
 %
-%   [ids_put_status] = ids2database(shot,run,occurence,ids2put,varargin);
+%   [ids_put_status] = ids2database(shot,run,occurence,ids2put,tree_user,tree_tokamak,tree_majorversion,imas_backend,varargin);
 %
 % open/create shot,run and put the ids from ids2put.idsnames (names from fieldnames(ids2put) && within IDS_list)
-% from new ..._env routines, now user/publi database name, tokamak name and major UAL version (3 or 4 at  this stage) need to be specified
+% from new ..._env routines, now user/public database name, tokamak name and major UAL version (3 or 4 at  this stage) need to be specified
 % tree_name: getenv('USER') by default, can be 'public'
-% tree_tokamak: 'tcv' by default
+% tree_tokamak: '' no default, typically tcv, TCV, ITER, etc (case will appear in folder name)
 % tree_majorversion: '3' by default
-% imas_backend: "MDSplus" or "HDF5"
+% imas_backend: "MDSplus" or "HDF5" or 12 or 13
 %
 % varargin{1}: tbd
 %
@@ -15,9 +15,9 @@ function [ids_put_status] = ids2database(shot,run,occurence,ids2put,tree_user,tr
 ids_put_status = 0;
 
 tree_user_default = getenv('USER');
-tree_tokamak_default = 'tcv';
+tree_tokamak_default = '';
 tree_majorversion_default = '3';
-imas_backend_default = 'MDSplus';
+imas_backend_default = 'HDF5';
 
 % initialize input parser
 p = inputParser;
@@ -28,9 +28,9 @@ p.addOptional('run', [], @(x) (isnumeric(x) && isscalar(x) && (x == round(x))));
 p.addOptional('occurence', 0, @(x) isempty(x) || (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer
 p.addOptional('ids2put', struct([]), @(x) (isstruct(x)));
 p.addOptional('tree_user', tree_user_default, @(x) (isempty(x) || ischar(x)));
-p.addOptional('tree_tokamak', tree_tokamak_default, @(x) (isempty(x) || ischar(x)));
+p.addOptional('tree_tokamak', tree_tokamak_default, @(x) (~isempty(x) && ischar(x)));
 p.addOptional('tree_majorversion', tree_majorversion_default, @(x) (ischar(x)));
-p.addOptional('imas_backend', imas_backend_default, @(x) (isempty(x) || ischar(x)));
+p.addOptional('imas_backend', imas_backend_default, @(x) (isempty(x) || ischar(x) || (isnumeric(x) && any(x==[12,13]))));
 
 p.parse;
 defaults_ids2database = p.Results; % to keep track of defaults
@@ -86,9 +86,9 @@ end
 params_ids2database = params;
 % check ids_names
 ids_names=fieldnames(ids2put);
-[dummy1]=which('ids_list');
+[dummy1]=which('IDS_list');
 if isempty(dummy1)
-  ids_full_list = tcv_available_ids;
+  ids_full_list = eval([lower(tree_tokamak) '_available_ids']);
   warning(['IDS_list not available, quick fix introducing list of ids available for TCV: ' fprintf('%s ',ids_full_list{:}) char(10)]);
 else
   % get effective function between ids_list and IDS_list (which or exist not sufficient)
@@ -106,17 +106,19 @@ if isempty(ids_names_ok)
   return
 end
 
-if ~ismember(params_ids2database.imas_backend, {'MDSplus', 'HDF5'})
-    warning(['Unknown imas_backend: ', imas_backend, ', selecting default: ',imas_backend_default]);
-    params_ids2database.imas_backend = imas_backend_default;
+if ischar(params_ids2database.imas_backend) && ~ismember(params_ids2database.imas_backend, {'MDSplus', 'HDF5'})
+  warning(['Unknown imas_backend: ', imas_backend, ', selecting default: ',imas_backend_default]);
+  params_ids2database.imas_backend = imas_backend_default;
 end
 
 % Get IMAS backend ID
 switch params_ids2database.imas_backend
-  case "HDF5"
+  case 'HDF5'
     backendid=13;
-  case "MDSplus"
+  case 'MDSplus'
     backendid=12;
+  otherwise
+    backendid = params_ids2database.imas_backend;
 end
 
 try
@@ -128,7 +130,7 @@ try
     shot_is_new = 0;
   end
   if shot_is_new
-    idx = imas_create_env_backend(shot, run, params_ids2database.tree_user,params_ids2database.tree_tokamak, params_ids2database.tree_majorversion, backendid)
+    idx = imas_create_env_backend(shot, run, params_ids2database.tree_user,params_ids2database.tree_tokamak, params_ids2database.tree_majorversion, backendid);
   else
     idx  = imas_open_env_backend(shot,run,params_ids2database.tree_user,params_ids2database.tree_tokamak,params_ids2database.tree_majorversion,backendid); %
   end