diff --git a/.gitignore b/.gitignore
index f3b31452e51a9cf21c0e2234b6a3050b7788c840..6f21bc39fbc24b05038a772147395a090aa51a52 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
 # remove Auth file
 matlab/test/auth.json
-
+matlab/test/credentials.json
diff --git a/matlab/src/classes/@MatMust/MatMust.m b/matlab/src/classes/@MatMust/MatMust.m
index 2bc392a8aff59ca547aa9dc8c105a02c40e95bb8..cabd9bf1c0c3e6c625a8b6d586c003c1301a462e 100644
--- a/matlab/src/classes/@MatMust/MatMust.m
+++ b/matlab/src/classes/@MatMust/MatMust.m
@@ -22,8 +22,8 @@ classdef MatMust < handle
     methods
         function obj = MatMust(varargin)
             % Initialize the values
-            obj.POSToptions = weboptions('RequestMethod', 'POST', 'ArrayFormat', 'json', 'Timeout',30, 'MediaType','application/json');
-            obj.GEToptions = weboptions('RequestMethod', 'GET', 'ArrayFormat', 'repeating', 'Timeout',30, 'MediaType','application/x-www-form-urlencoded');
+            obj.POSToptions = weboptions('RequestMethod', 'POST', 'ArrayFormat', 'json', 'Timeout',180, 'MediaType','application/json');
+            obj.GEToptions = weboptions('RequestMethod', 'GET', 'ArrayFormat', 'repeating', 'Timeout',180, 'MediaType','application/x-www-form-urlencoded');
             obj.url = 'https://bepicolombo.esac.esa.int/webclient-must/';
             obj.urlsub = 'mustlink/';
             obj.tockenfilename = 'auth.json';
@@ -175,20 +175,20 @@ classdef MatMust < handle
             end
             
             if isa(response,'struct')
-                data{1} = response;
+                data = arrayfun(@(x) x, response, 'UniformOutput', false);
             else
                 data = response;
             end
             
             %refine date string to adapt MATLAB date format
-            for i=1:numel(data{1})
-                if isempty(data{1}(i).data)
+            for i=1:numel(data)
+                if isempty(data{i}.data)
                     fprintf('+++ WARNING\n%s for %s\n', 'No Data existing in time span', data{1}.name)
                     continue
                 end
-                data_par = data{1}(i).data;
+                data_par = data{i}.data;
                 t = num2cell(datenum(datetime('1970-01-01', 'TimeZone','utc'))+(str2num(str2mat(data_par.date))/1000/86400));
-                [data{1}(i).data.dateMAT] = deal(t{:});
+                [data{i}.data.dateMAT] = deal(t{:});
                 clear t
             end
 
@@ -224,19 +224,23 @@ classdef MatMust < handle
                     fprintf('+++++++++++++++++++++++++++++++++++++++++\n');
                 end
                 if any(ismember(varargin,'plot'))
-                     for i=1:numel(data{1}) 
-                        if isempty(data{1}(i).data)
+                     for i=1:numel(data) 
+                        if isempty(data{i}.data)
                              continue
                         end
-                        data_par = data{1}(i).data;
+                        data_par =data{i}.data;
                         figure
-                        title(sprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description ))
+                        if isfield('subsystem', data{i})
+                            title(sprintf('%s-%s: %s -> %s\n', data{i}.subsystem,data{i}.type, data{i}.name, data{i}.description ))
+                        else
+                            title(sprintf('%s: %s -> %s\n', data{i}.type, data{i}.name, data{i}.description ))
+                        end
                         if strcmp(calibrate,'true')
                             switch class(data_par(1).calibratedValue) 
                                 case 'char'
                                     indx = [1,find(diff([data_par.value])~=0)]+1;
                                     ylabels = string;
-                                    ylabels([unique([data_par.value],'stable')]) = replace({data_par(indx).calibratedValue},'_',' ');
+                                    ylabels([unique([data_par.value],'stable')]) = unique(replace({data_par(indx).calibratedValue},'_',' '),'stable');
                                     plot([data_par.dateMAT], [data_par.value], '-x' );
                                     set(gca,'ytick',unique([data_par.value],'sorted'))
                                     set(gca,'yticklabel',ylabels)
@@ -250,12 +254,15 @@ classdef MatMust < handle
                             plot([data_par.dateMAT], [data_par.value], '-x' );
                         end
                         xlabel('time');
-                        if isfield(data{1}(i), 'unit')
-                            ylabel(data{1}(i).unit);
+                        if isfield(data{i}, 'unit')
+                            ylabel(data{i}.unit);
                         end
-                        title([data{1}(i).description,' - ',data{1}(i).name]);
+                        title([data{i}.description,' - ',data{i}.name]);
                         datetick('x');
                         grid on
+                        if exist('dataFigShowUpdatefcn')==2
+                            set(datacursormode(gcf),'UpdateFcn',@dataFigShowUpdatefcn)
+                        end
                     end
                 end
             end
diff --git a/matlab/test/classes/@MatMust/MatMust.m b/matlab/test/classes/@MatMust/MatMust.m
index afa3b7076fea6220350e947e31357a4ca7979533..cabd9bf1c0c3e6c625a8b6d586c003c1301a462e 100644
--- a/matlab/test/classes/@MatMust/MatMust.m
+++ b/matlab/test/classes/@MatMust/MatMust.m
@@ -22,8 +22,8 @@ classdef MatMust < handle
     methods
         function obj = MatMust(varargin)
             % Initialize the values
-            obj.POSToptions = weboptions('RequestMethod', 'POST', 'ArrayFormat', 'json', 'Timeout',30, 'MediaType','application/json');
-            obj.GEToptions = weboptions('RequestMethod', 'GET', 'ArrayFormat', 'repeating', 'Timeout',30, 'MediaType','application/x-www-form-urlencoded');
+            obj.POSToptions = weboptions('RequestMethod', 'POST', 'ArrayFormat', 'json', 'Timeout',180, 'MediaType','application/json');
+            obj.GEToptions = weboptions('RequestMethod', 'GET', 'ArrayFormat', 'repeating', 'Timeout',180, 'MediaType','application/x-www-form-urlencoded');
             obj.url = 'https://bepicolombo.esac.esa.int/webclient-must/';
             obj.urlsub = 'mustlink/';
             obj.tockenfilename = 'auth.json';
@@ -175,20 +175,20 @@ classdef MatMust < handle
             end
             
             if isa(response,'struct')
-                data{1} = response;
+                data = arrayfun(@(x) x, response, 'UniformOutput', false);
             else
                 data = response;
             end
             
             %refine date string to adapt MATLAB date format
-            for i=1:numel(data{1})
-                if isempty(data{1}(i).data)
-                    fprintf('+++ WARNING\n%s for %s\n', 'No Data existing in time span', data.name)
+            for i=1:numel(data)
+                if isempty(data{i}.data)
+                    fprintf('+++ WARNING\n%s for %s\n', 'No Data existing in time span', data{1}.name)
                     continue
                 end
-                data_par = data{1}(i).data;
+                data_par = data{i}.data;
                 t = num2cell(datenum(datetime('1970-01-01', 'TimeZone','utc'))+(str2num(str2mat(data_par.date))/1000/86400));
-                [data{1}(i).data.dateMAT] = deal(t{:});
+                [data{i}.data.dateMAT] = deal(t{:});
                 clear t
             end
 
@@ -224,19 +224,23 @@ classdef MatMust < handle
                     fprintf('+++++++++++++++++++++++++++++++++++++++++\n');
                 end
                 if any(ismember(varargin,'plot'))
-                     for i=1:numel(data{1}) 
-                        if isempty(data{1}(i).data)
+                     for i=1:numel(data) 
+                        if isempty(data{i}.data)
                              continue
                         end
-                        data_par = data{1}(i).data;
+                        data_par =data{i}.data;
                         figure
-                        title(sprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description ))
+                        if isfield('subsystem', data{i})
+                            title(sprintf('%s-%s: %s -> %s\n', data{i}.subsystem,data{i}.type, data{i}.name, data{i}.description ))
+                        else
+                            title(sprintf('%s: %s -> %s\n', data{i}.type, data{i}.name, data{i}.description ))
+                        end
                         if strcmp(calibrate,'true')
                             switch class(data_par(1).calibratedValue) 
                                 case 'char'
                                     indx = [1,find(diff([data_par.value])~=0)]+1;
                                     ylabels = string;
-                                    ylabels([unique([data_par.value],'stable')]) = replace({data_par(indx).calibratedValue},'_',' ');
+                                    ylabels([unique([data_par.value],'stable')]) = unique(replace({data_par(indx).calibratedValue},'_',' '),'stable');
                                     plot([data_par.dateMAT], [data_par.value], '-x' );
                                     set(gca,'ytick',unique([data_par.value],'sorted'))
                                     set(gca,'yticklabel',ylabels)
@@ -250,18 +254,21 @@ classdef MatMust < handle
                             plot([data_par.dateMAT], [data_par.value], '-x' );
                         end
                         xlabel('time');
-                        if isfield(data{1}(i), 'unit')
-                            ylabel(data{1}(i).unit);
+                        if isfield(data{i}, 'unit')
+                            ylabel(data{i}.unit);
                         end
-                        title([data{1}(i).description,' - ',data{1}(i).name]);
+                        title([data{i}.description,' - ',data{i}.name]);
                         datetick('x');
                         grid on
+                        if exist('dataFigShowUpdatefcn')==2
+                            set(datacursormode(gcf),'UpdateFcn',@dataFigShowUpdatefcn)
+                        end
                     end
                 end
             end
 
         end
-        function o = MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin)
+        function t = MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin)
             % +++ 
             % MatMust_searchTMparFromName
             % Search a parameter into the requested dataprovider (es. BEPICRUISE)
@@ -281,18 +288,16 @@ classdef MatMust < handle
                 query = 'metadata/treesearch';
                 obj.GEToptions.HeaderFields = {'Authorization', obj.tockenstruct.token};
                 if isa(dataproviders,'cell')
-                    dataprovidersstr = char(join(dataproviders,','));
-                else
-                    dataprovidersstr = dataproviders;
+                    dataproviders = char(join(dataproviders,','));
                 end
                 try
                     optindx = strcmp(varargin,'Description')+strcmp(varargin,'Unit')+strcmp(varargin,'Id');
                     if any(find(optindx))
                         field = join(varargin(find(optindx)),',');
-                        response = webread([obj.url,obj.urlsub, query], 'field',['name,',char(field)],'text',namequery,'dataproviders', dataprovidersstr ,obj.GEToptions);
+                        response = webread([obj.url,obj.urlsub, query], 'field',['name,',char(field)],'text',namequery,'dataproviders', dataproviders ,obj.GEToptions);
                     else
                         
-                        response = webread([obj.url,obj.urlsub, query], 'field','name','text',namequery,'dataproviders', dataprovidersstr ,obj.GEToptions);
+                        response = webread([obj.url,obj.urlsub, query], 'field','name','text',namequery,'dataproviders', dataproviders ,obj.GEToptions);
                     end
                     t = response ;
                 catch ME
@@ -318,26 +323,6 @@ classdef MatMust < handle
                     end
                 end
             end
-            % output only requested ds
-            if isa(dataproviders,'cell')
-                c = 0;
-                for i = 1:numel(t)
-                    for j = 1:numel(dataproviders)
-                        if strcmp(t(i).type, [dataproviders(j), ' params'] )
-                            c = c+1;
-                            o(c) = t(i); 
-                        end
-                    end
-                end
-            else
-                c = 0;
-                for i = 1:numel(t)
-                    if strcmp(t(i).type, [dataproviders, ' params'] )
-                        c = c+1;
-                        o(c) = t(i); 
-                    end
-                end     
-            end
         end
         function MatMust_login(obj, varargin )
             % login 
diff --git a/matlab/test/credentials.json b/matlab/test/credentials.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9dea5fa7a30591341bea1697cec968bbab4bc34
--- /dev/null
+++ b/matlab/test/credentials.json
@@ -0,0 +1,4 @@
+{
+	"username":"ygagarin",
+	"password":":YG_password"
+}
\ No newline at end of file
diff --git a/matlab/test/test.m b/matlab/test/test.m
index 4857b24fdcc88213d5f9edf1004038bc20634fb1..5acc867b432d9d25e293deb0de5a5251acf87ccb 100644
--- a/matlab/test/test.m
+++ b/matlab/test/test.m
@@ -16,8 +16,12 @@ close all
 addpath('./classes/');
 M = MatMust;
 
+credentials = jsondecode(fileread('credentials.json'));
+
+
 % for info type help "MatMust_login"
-MatMust_login(M, jsondecode('{"username": "ajejebrazorv",  "password": "123456%!", "maxDuration": false}'));
+opts = struct("username", credentials.username, "password",  credentials.password ,"maxDuration", false);
+MatMust_login(M, opts);
 
 
 % Ask for the Projects available to the user
@@ -37,11 +41,23 @@ proj_list = M.MatMust_getUserLinkedProjects('dump');
 % +++++++++++++++++
 
 act_proj = 'BEPICRUISE';
+dataStart = '2018-11-26 13:00:00';
+dataStop = '2018-11-26 13:40:00';
+
+
 
 % for info type "help MatMust_getDataFromName"
 % MatMust_getDataFromName(obj, ds, parname, dateStart, dateStop, options  )
-data = M.MatMust_getDataFromName('BEPICRUISE', 'NSA03016', '2018-11-26 13:00:00', '2018-11-26 13:40:00');
+data = M.MatMust_getDataFromName('BEPICRUISE', 'NSA03016', dataStart, dataStop);
 
 % or if you want to plot 
-data = M.MatMust_getDataFromName('BEPICRUISE', 'NSA03016', '2018-11-26 13:00:00', '2018-11-26 13:40:00', 'plot');
+data = M.MatMust_getDataFromName('BEPICRUISE', 'NSA03016', dataStart, dataStop, 'plot');
+
+%search a mnemonic in 
+data = M.MatMust_searchTMparFromName('Est sc ang rate', act_proj,'dump','Description');
+
+%you can get more than a variable a time
+data = M.MatMust_getDataFromName('BEPICRUISE', {'NCAD09A1','NCAD09A2','NCAD09A3'}, dataStart , dataStop, 'plot');
+
+