diff --git a/src/fetch_series.m b/src/fetch_series.m
index 7fce64f5a511a86a7b4f7c91384e22bc5ed5d948..9133ba39dfac8c8e1898db7f40b608f077703dc4 100644
--- a/src/fetch_series.m
+++ b/src/fetch_series.m
@@ -37,13 +37,14 @@ function df = fetch_series(varargin)
 
 default_api_base_url = 'https://api.db.nomics.world/v22/'; 
 p = inputParser;
-p.addParameter('provider_code', '', @isstring);
-p.addParameter('dataset_code', '', @isstring);
-p.addParameter('series_code', '', @isstring); %string array shoudl be accepted as well
+validStringInput = @(x) isstring(x) || ischar(x) || iscellstr(x);
+p.addParameter('provider_code', '', validStringInput);
+p.addParameter('dataset_code', '', validStringInput);
+p.addParameter('series_code', '', validStringInput); 
 p.addParameter('dimensions', @ischar); %if no dimensions specified, provider_code & dataset_code MUST BE GIVEN
-p.addParameter('series_ids', @iscellstr);
+p.addParameter('series_ids', '',validStringInput);
 p.addParameter('max_nb_series', NaN, @isnumeric);
-p.addParameter('api_base_url', default_api_base_url, @isstring);
+p.addParameter('api_base_url', default_api_base_url, validStringInput);
 p.addParameter('dbnomics_filters', '', @ischar);
 p.KeepUnmatched = false;
 p.parse(varargin{:});
@@ -56,7 +57,7 @@ if isempty(p.Results.dataset_code)
     if iscell(p.Results.provider_code)
         p.Results.series_ids = p.Results.provider_code;
         p.Results.provider_code = '';
-    elseif isstring(p.Results.provider_code)
+    elseif ~isempty(p.Results.provider_code)
         p.Results.series_ids = {p.Results.provider_code};
         p.Results.provider_code = '';
     end
@@ -64,29 +65,29 @@ end
 
 series_base_url = [p.Results.api_base_url 'series'];
 
-if ~isstruct(p.Results.dimensions) && ~isstring(p.Results.series_code) && ~isstring(p.Results.series_ids)
-    if ~isstring(p.Results.provider_code) || ~isstring(p.Results.dataset_code)
+if isa(p.Results.dimensions, 'function_handle') && isempty(p.Results.series_code) && isempty(p.Results.series_ids)
+    if isempty(p.Results.provider_code) || isempty(p.Results.dataset_code)
         error('When you don''t use dimensions, you must specifiy provider_code and dataset_code.');
     end
     api_link = sprintf('%s/%s/%s?observations=1', series_base_url, p.Results.provider_code, p.Results.dataset_code);
 end
 
-if ischar(p.Results.dimensions)
-    if ~isstring(p.Results.provider_code) || ~isstring(p.Results.dataset_code)
+if ~isa(p.Results.dimensions, 'function_handle')
+    if isempty(p.Results.provider_code) || isempty(p.Results.dataset_code)
         error('When you use dimensions, you must specifiy provider_code and dataset_code.');
     end
     api_link = sprintf('%s/%s/%s?observations=1&dimensions=%s', series_base_url, p.Results.provider_code, p.Results.dataset_code, p.Results.dimensions); %jsonencode(
 end
 
-if isstring(p.Results.series_code)
-    if ~isstring(p.Results.provider_code) || ~isstring(p.Results.dataset_code)
+if ~isempty(p.Results.series_code)
+    if isempty(p.Results.provider_code) || isempty(p.Results.dataset_code)
         error('When you use series_code, you must specifiy provider_code and dataset_code.');
     end
     api_link = sprintf('%s/%s/%s/%s?observations=1', series_base_url, p.Results.provider_code, p.Results.dataset_code, p.Results.series_code);
 end
 
-if isstring(p.Results.series_ids)
-    if isstring(p.Results.provider_code) || isstring(p.Results.dataset_code)
+if ~isempty(p.Results.series_ids)
+    if ~isempty(p.Results.provider_code) || ~isempty(p.Results.dataset_code)
         error('When you use series_ids, you must not specifiy provider_code nor dataset_code.');
     end
     api_link = sprintf('%s?observations=1&series_ids=%s', series_base_url, strjoin(p.Results.series_ids,','));