diff --git a/matlab/DsgeSmoother.m b/matlab/DsgeSmoother.m
index 4b58ca34e612bda1b76abd4a5cbb3059e6318d3f..2fc6146be5548c6b572c2e6b1653a7f89bea02c7 100644
--- a/matlab/DsgeSmoother.m
+++ b/matlab/DsgeSmoother.m
@@ -59,7 +59,7 @@ R             = [];
 P             = [];
 PK            = [];
 decomp        = [];
-nobs            = size(options_.varobs,1);
+nobs            = length(options_.varobs);
 smpl          = size(Y,2);
 
 M_ = set_all_parameters(xparam1,estim_params_,M_);
diff --git a/matlab/GetPosteriorParametersStatistics.m b/matlab/GetPosteriorParametersStatistics.m
index 04ca6c86cc7c830e3b383532cac8c3685a6b1362..dd3187a977fc61c58590e670249439b489b5e4af 100644
--- a/matlab/GetPosteriorParametersStatistics.m
+++ b/matlab/GetPosteriorParametersStatistics.m
@@ -177,17 +177,17 @@ if nvn
             Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws);
             [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ...
                 posterior_moments(Draws,1,options_.mh_conf_sig);
-            name = deblank(options_.varobs(estim_params_.nvn_observable_correspondence(i,1),:));
+            name = options_.varobs{estim_params_.nvn_observable_correspondence(i,1)};
             oo_ = Filloo(oo_,name,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density);
         else
             try
-                name = deblank(options_.varobs(estim_params_.nvn_observable_correspondence(i,1),:));
+                name = options_.varobs{estim_params_.nvn_observable_correspondence(i,1)};
                 [post_mean,hpd_interval,post_var] = Extractoo(oo_,name,type);
             catch
                 Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws);
                 [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ...
                     posterior_moments(Draws,1,options_.mh_conf_sig);
-                name = deblank(options_.varobs(estim_params_.nvn_observable_correspondence(i,1),:));
+                name = options_.varobs{estim_params_.nvn_observable_correspondence(i,1)};
                 oo_ = Filloo(oo_,name,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density);
             end
         end
diff --git a/matlab/PlotPosteriorDistributions.m b/matlab/PlotPosteriorDistributions.m
index 5a622272b56bec12f656179e2a589067008112e7..4321103b8a31189d5064d051ff1e7444aa800e50 100644
--- a/matlab/PlotPosteriorDistributions.m
+++ b/matlab/PlotPosteriorDistributions.m
@@ -89,7 +89,7 @@ for i=1:npar
             eval(['pmod = oo_.posterior_mode.shocks_std.' name ';'])
         end
     elseif i <= nvx+nvn
-        name = deblank(options_.varobs(estim_params_.nvn_observable_correspondence(i-nvx,1),:));
+        name = options_.varobs{estim_params_.nvn_observable_correspondence(i-nvx,1)};
         eval(['x1 = oo_.posterior_density.measurement_errors_std.' name '(:,1);'])
         eval(['f1 = oo_.posterior_density.measurement_errors_std.' name '(:,2);'])    
         eval(['oo_.prior_density.mearsurement_errors_std.' name '(:,1) = x2;'])
diff --git a/matlab/PosteriorFilterSmootherAndForecast.m b/matlab/PosteriorFilterSmootherAndForecast.m
index eba61007d2127d87a446b691e4ee9ab7d2ffd32d..841bc356f9b07eccdec4fa58c62e2e79750a1e00 100644
--- a/matlab/PosteriorFilterSmootherAndForecast.m
+++ b/matlab/PosteriorFilterSmootherAndForecast.m
@@ -48,7 +48,7 @@ MaxNumberOfPlotPerFigure = 4;% The square root must be an integer!
 MaxNumberOfBytes=options_.MaxNumberOfBytes;
 endo_nbr=M_.endo_nbr;
 exo_nbr=M_.exo_nbr;
-nvobs     = size(options_.varobs,1);
+nvobs     = length(options_.varobs);
 nn = sqrt(MaxNumberOfPlotPerFigure);
 iendo = 1:endo_nbr;
 i_last_obs = gend+(1-M_.maximum_endo_lag:0);
@@ -70,9 +70,9 @@ B = 200;
 MAX_nruns = min(B,ceil(options_.MaxNumberOfBytes/(npar+2)/8));
 MAX_nsmoo = min(B,ceil(MaxNumberOfBytes/((endo_nbr)*gend)/8));
 MAX_ninno = min(B,ceil(MaxNumberOfBytes/(exo_nbr*gend)/8));
-MAX_nerro = min(B,ceil(MaxNumberOfBytes/(size(options_.varobs,1)*gend)/8));
+MAX_nerro = min(B,ceil(MaxNumberOfBytes/(length(options_.varobs)*gend)/8));
 if naK
-    MAX_naK   = min(B,ceil(MaxNumberOfBytes/(size(options_.varobs,1)* ...
+    MAX_naK   = min(B,ceil(MaxNumberOfBytes/(length(options_.varobs)* ...
                                              length(options_.filter_step_ahead)*gend)/8));
 end
 if horizon
diff --git a/matlab/PosteriorIRF.m b/matlab/PosteriorIRF.m
index 42e11640a77629c7babb924603c3b6cd044b3dfd..3286330eda48b72d183bba24e628bae2853688ae 100644
--- a/matlab/PosteriorIRF.m
+++ b/matlab/PosteriorIRF.m
@@ -42,7 +42,7 @@ end
 % Set varlist if necessary
 varlist = options_.varlist;
 if isempty(varlist)
-    varlist = options_.varobs;
+    varlist = char(options_.varobs);
 end
 options_.varlist = varlist;
 nvar = size(varlist,1);
diff --git a/matlab/ReshapeMatFiles.m b/matlab/ReshapeMatFiles.m
index 06acd73722da37d768502f447384d7e93a871c7f..1ad90fce11f9d7fa0bd6d3f0a1b66ea094c115ff 100644
--- a/matlab/ReshapeMatFiles.m
+++ b/matlab/ReshapeMatFiles.m
@@ -70,7 +70,7 @@ switch type
     TYPEarray = 4;    
   case 'irf_bvardsge'
     CAPtype  = 'IRF_BVARDSGE';
-    TYPEsize = [ options_.irf , size(options_.varobs,1) , M_.exo_nbr ];
+    TYPEsize = [ options_.irf , length(options_.varobs) , M_.exo_nbr ];
     TYPEarray = 4;      
   case 'smooth'
     CAPtype  = 'SMOOTH';
@@ -82,7 +82,7 @@ switch type
     TYPEarray = 3;
   case 'error'
     CAPtype = 'ERROR';
-    TYPEsize = [ size(options_.varobs,1) , options_.nobs ];
+    TYPEsize = [ length(options_.varobs) , options_.nobs ];
     TYPEarray = 3;
   case 'innov'
     CAPtype = 'INNOV';
diff --git a/matlab/bvar_forecast.m b/matlab/bvar_forecast.m
index 03100c053000b06ec27695773110a76e7500f5de..1b88e0ae61552c32fad4d0c79ee976a3be268f89 100644
--- a/matlab/bvar_forecast.m
+++ b/matlab/bvar_forecast.m
@@ -122,7 +122,7 @@ for i = 1:ny
     dyn_graph=dynare_graph(dyn_graph,[ sims_no_shock_median(:, i) ...
                    sims_no_shock_up_conf(:, i) sims_no_shock_down_conf(:, i) ...
                    sims_with_shocks_up_conf(:, i) sims_with_shocks_down_conf(:, i) ], ...
-                 options_.varobs(i, :));
+                 options_.varobs{i});
 end
 
 dyn_saveas(dyn_graph.fh,[OutputDirectoryName '/' M_.fname '_BVAR_forecast_',num2str(nlags)],options_)
@@ -146,8 +146,8 @@ if ~isempty(forecast_data.realized_val)
     
     fprintf('RMSE of BVAR(%d):\n', nlags);
     
-    for i = 1:size(options_.varobs, 1)
-        fprintf('%s: %10.4f\n', options_.varobs(i, :), rmse(i));
+    for i = 1:length(options_.varobs)
+        fprintf('%s: %10.4f\n', options_.varobs{i}, rmse(i));
     end 
 end
 
@@ -162,8 +162,8 @@ if ~isdir(DirectoryName)
 end
 save([ DirectoryName '/simulations.mat'], 'sims_no_shock', 'sims_with_shocks');
 
-for i = 1:size(options_.varobs, 1)
-    name = options_.varobs(i, :);
+for i = 1:length(options_.varobs)
+    name = options_.varobs{i};
 
     sims = squeeze(sims_with_shocks(:,i,:));
     eval(['oo_.bvar.forecast.with_shocks.Mean.' name ' = mean(sims, 2);']);
diff --git a/matlab/bvar_irf.m b/matlab/bvar_irf.m
index d742915d7c7ce01ff1791969f4dc4d6db91030a9..d7528f79bce6acfb6a844fcc2abcdda4661571f1 100644
--- a/matlab/bvar_irf.m
+++ b/matlab/bvar_irf.m
@@ -138,9 +138,9 @@ save([ DirectoryName '/simulations.mat'], 'sampled_irfs');
 
 % Save results in oo_
 for i=1:ny
-    shock_name = options_.varobs(i, :);
+    shock_name = options_.varobs{i};
     for j=1:ny
-        variable_name = options_.varobs(j, :);
+        variable_name = options_.varobs{j};
         eval(['oo_.bvar.irf.Mean.' variable_name '.' shock_name ' = posterior_mean_irfs(' int2str(j) ',' int2str(i) ',:);'])
         eval(['oo_.bvar.irf.Median.' variable_name '.' shock_name ' = posterior_median_irfs(' int2str(j) ',' int2str(i) ',:);'])
         eval(['oo_.bvar.irf.Var.' variable_name '.' shock_name ' = posterior_variance_irfs(' int2str(j) ',' int2str(i) ',:);'])
diff --git a/matlab/check_list_of_variables.m b/matlab/check_list_of_variables.m
index 415e8759e332dbbd0c5947fa781c1b770970c099..f08bf13124679ea258ed630b1a208df91209e498 100644
--- a/matlab/check_list_of_variables.m
+++ b/matlab/check_list_of_variables.m
@@ -41,7 +41,7 @@ if options_.dsge_var && options_.bayesian_irf
                 msg = 1;
             end
         end
-        if size(varlist,1)~=size(options_.varobs)
+        if size(varlist,1)~=length(options_.varobs)
             msg = 1;
         end
         if msg
@@ -50,7 +50,7 @@ if options_.dsge_var && options_.bayesian_irf
             skipline()
         end
     end
-    varlist = options_.varobs;
+    varlist = char(options_.varobs);
     return
 end
 
diff --git a/matlab/compute_moments_varendo.m b/matlab/compute_moments_varendo.m
index 5093ffc52ccba8f1e85de7de2f0913da834332b6..6482afb746b403f7480344aabdc80ab1fa17618d 100644
--- a/matlab/compute_moments_varendo.m
+++ b/matlab/compute_moments_varendo.m
@@ -36,14 +36,14 @@ function oo_ = compute_moments_varendo(type,options_,M_,oo_,var_list_)
 if strcmpi(type,'posterior')
     posterior = 1;
     if nargin==4
-        var_list_ = options_.varobs;
+        var_list_ = char(options_.varobs);
     end
 elseif strcmpi(type,'prior')
     posterior = 0;
     if nargin==4
         var_list_ = options_.prior_analysis_endo_var_list;
         if isempty(var_list_)
-            options_.prior_analysis_var_list = options_.varobs;
+            options_.prior_analysis_var_list = char(options_.varobs);
         end
     end
 else
diff --git a/matlab/dsgevar_posterior_density.m b/matlab/dsgevar_posterior_density.m
index 9ff74e1451dbd6d99f343340b9c324d8e55aa7f2..1ea09d57104c37eeb8271cb583a9fed0efa3fb4b 100644
--- a/matlab/dsgevar_posterior_density.m
+++ b/matlab/dsgevar_posterior_density.m
@@ -38,7 +38,7 @@ dsge_prior_weight = M_.params(strmatch('dsge_prior_weight',M_.param_names));
 DSGE_PRIOR_WEIGHT = floor(gend*(1+dsge_prior_weight));
 
 bvar.NumberOfLags = options_.varlag;
-bvar.NumberOfVariables = size(options_.varobs,1);
+bvar.NumberOfVariables = length(options_.varobs);
 bvar.Constant = 'no';
 bvar.NumberOfEstimatedParameters = bvar.NumberOfLags*bvar.NumberOfVariables;
 if ~options_.noconstant
diff --git a/matlab/dyn_forecast.m b/matlab/dyn_forecast.m
index bea68db53b3e60014fdf574863fe94ee3f56d11f..5df0edbf80d1e62ea262ddaf1559952f4b2593f4 100644
--- a/matlab/dyn_forecast.m
+++ b/matlab/dyn_forecast.m
@@ -81,8 +81,8 @@ switch task
         order_var = oo_.dr.order_var;
         i_var_obs = [];
         trend_coeffs = [];
-        for i=1:size(var_obs,1)
-            tmp = strmatch(var_obs(i,:),endo_names(i_var,:),'exact');
+        for i=1:length(var_obs)
+            tmp = strmatch(var_obs{i},endo_names(i_var,:),'exact');
             if ~isempty(tmp)
                 i_var_obs = [ i_var_obs; tmp];
                 trend_coeffs = [trend_coeffs; oo_.Smoother.TrendCoeffs(i)];
diff --git a/matlab/dynare_estimation.m b/matlab/dynare_estimation.m
index 4627a54b2468d75ac70cfce2fad1354a5a1ea6c8..4eaec12fa2f9e2d8d3d963f3d82d3e5f5951dc55 100644
--- a/matlab/dynare_estimation.m
+++ b/matlab/dynare_estimation.m
@@ -94,7 +94,7 @@ if nnobs > 1 && horizon > 0
     end
 
     endo_names = M_.endo_names;
-    n_varobs = size(options_.varobs,1);
+    n_varobs = length(options_.varobs);
 
     if isempty(var_list)
         var_list = endo_names;
@@ -116,7 +116,7 @@ if nnobs > 1 && horizon > 0
 
     IdObs    = zeros(n_varobs,1);
     for j=1:n_varobs
-        iobs = strmatch(options_.varobs(j,:),var_list,'exact');
+        iobs = strmatch(options_.varobs{j},var_list,'exact');
         if ~isempty(iobs)
             IdObs(j,1) = iobs;
         end
diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index f3fb2b76c54a952210f8e084d3b4f527cd34593f..b9540d1fdc32fe52d9b5732ebfeb62055eb95cfc 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -120,7 +120,7 @@ missing_value = dataset_.missing.state;
 % Set number of observations
 gend = options_.nobs;
 % Set the number of observed variables.
-n_varobs = size(options_.varobs,1);
+n_varobs = length(options_.varobs);
 % Get the number of parameters to be estimated.
 nvx = estim_params_.nvx;  % Variance of the structural innovations (number of parameters).
 nvn = estim_params_.nvn;  % Variance of the measurement innovations (number of parameters).
@@ -560,9 +560,9 @@ if ~options_.cova_compute
 end
 
 if any(bayestopt_.pshape > 0) && ~options_.mh_posterior_mode_estimation
-    %% display results table and store parameter estimates and standard errors in results
+    % display results table and store parameter estimates and standard errors in results
     oo_=display_estimation_results_table(xparam1,stdh,M_,options_,estim_params_,bayestopt_,oo_,pnames,'Posterior','posterior');
-    %% Laplace approximation to the marginal log density:
+    % Laplace approximation to the marginal log density:
     if options_.cova_compute
         estim_params_nbr = size(xparam1,1);
         scale_factor = -sum(log10(diag(invhess)));
@@ -783,8 +783,7 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha
                 number_of_plots_to_draw = number_of_plots_to_draw + 1;
                 index = cat(1,index,i);
             end
-            eval(['oo_.SmoothedMeasurementErrors.' deblank(options_.varobs(i,:)) ...
-                  ' = measurement_error(i,:)'';']);
+            eval(['oo_.SmoothedMeasurementErrors.' options_.varobs{i} ' = measurement_error(i,:)'';']);
         end
         if ~options_.nograph
             [nbplt,nr,nc,lr,lc,nstar] = pltorg(number_of_plots_to_draw);
@@ -813,7 +812,7 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha
                     hold on
                     plot(1:gend,measurement_error(index(k),:),marker_string{2,1},'linewidth',1)
                     hold off
-                    name = deblank(options_.varobs(index(k),:));
+                    name = deblank(options_.varobs{index(k)});
                     if gend>1
                         xlim([1 gend])
                     end
@@ -827,7 +826,7 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha
                         set(gca,'XTickLabel',options_.XTickLabel)
                     end
                     if options_.TeX
-                        idx = strmatch(options_.varobs(index(k),:),M_.endo_names,'exact');
+                        idx = strmatch(options_.varobs{index(k)},M_.endo_names,'exact');
                         texname = M_.endo_names_tex(idx,:);
                         if isempty(TeXNAMES)
                             TeXNAMES = ['$ ' deblank(texname) ' $'];
@@ -888,7 +887,7 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha
             hold on
             plot(1:gend,rawdata(:,k),marker_string{2,1},'linewidth',1)
             hold off
-            name = deblank(options_.varobs(k,:));
+            name = options_.varobs{k};
             if isempty(NAMES)
                 NAMES = name;
             else
@@ -902,7 +901,7 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha
                 xlim([1 gend])
             end
             if options_.TeX
-                idx = strmatch(options_.varobs(k,:),M_.endo_names,'exact');
+                idx = strmatch(options_.varobs{k},M_.endo_names,'exact');
                 texname = M_.endo_names_tex(idx,:);
                 if isempty(TeXNAMES)
                     TeXNAMES = ['$ ' deblank(texname) ' $'];
diff --git a/matlab/dynare_estimation_init.m b/matlab/dynare_estimation_init.m
index 6415bf7537846fdcf073445c171a7a109bda92e5..74d0b6089f3743b6c44d668f3916662ab6cad369 100644
--- a/matlab/dynare_estimation_init.m
+++ b/matlab/dynare_estimation_init.m
@@ -116,7 +116,7 @@ else
 end
 
 % Set the number of observed variables.
-n_varobs = size(options_.varobs,1);
+n_varobs = length(options_.varobs);
 
 % Set priors over the estimated parameters.
 if ~isempty(estim_params_)
@@ -224,8 +224,8 @@ end
 var_obs_index = [];
 k1 = [];
 for i=1:n_varobs
-    var_obs_index = [var_obs_index; strmatch(deblank(options_.varobs(i,:)),M_.endo_names(dr.order_var,:),'exact')];
-    k1 = [k1; strmatch(deblank(options_.varobs(i,:)),M_.endo_names, 'exact')];
+    var_obs_index = [var_obs_index; strmatch(options_.varobs{i},M_.endo_names(dr.order_var,:),'exact')];
+    k1 = [k1; strmatch(options_.varobs{i},M_.endo_names, 'exact')];
 end
 
 % Define union of observed and state variables
@@ -380,4 +380,4 @@ if all(abs(oo_.steady_state(bayestopt_.mfys))<1e-9)
     options_.noconstant = 1;
 else
     options_.noconstant = 0;
-end
\ No newline at end of file
+end
diff --git a/matlab/dynare_identification.m b/matlab/dynare_identification.m
index 0f22ad9e21e3730109134000b89f41b6a90521f3..133ebdcc28114b24291f202bd51d03edec23efa1 100644
--- a/matlab/dynare_identification.m
+++ b/matlab/dynare_identification.m
@@ -132,7 +132,7 @@ options_.smoother=1;
 options_ident.analytic_derivation_mode = options_.analytic_derivation_mode;
 if isempty(dataset_),
     dataset_.info.ntobs = periods;
-    dataset_.info.nvobs = rows(options_.varobs);
+    dataset_.info.nvobs = length(options_.varobs);
     dataset_.info.varobs = options_.varobs;
     dataset_.rawdata = [];
     dataset_.missing.state = 0;
@@ -145,17 +145,8 @@ if isempty(dataset_),
     dataset_.missing.no_more_missing_observations = 1;
     dataset_.descriptive.mean = [];
     dataset_.data = [];
-
-%     data_info.gend = periods;
-%     data_info.data = [];
-%     data_info.data_index = [];
-%     data_info.number_of_observations = periods*size(options_.varobs,1);
-%     data_info.no_more_missing_observations = 0;
-%     data_info.missing_value = 0;
 end
 
-% results = prior_sampler(0,M_,bayestopt_,options_,oo_);
-
 if prior_exist
     if any(bayestopt_.pshape > 0)
         if options_ident.prior_range
diff --git a/matlab/dynare_sensitivity.m b/matlab/dynare_sensitivity.m
index 14df1e83beeea16d1904d9226938e1fcb2f14efd..ede905c3394db4852352ada8252d5c935554dc6f 100644
--- a/matlab/dynare_sensitivity.m
+++ b/matlab/dynare_sensitivity.m
@@ -400,9 +400,9 @@ if options_gsa.glue,
     Obs.data = data;
     Obs.time = [1:gend];
     Obs.num  = gend;
-    for j=1:size(options_.varobs,1)
-        Obs.name{j} = deblank(options_.varobs(j,:));
-        vj=deblank(options_.varobs(j,:));
+    for j=1:length(options_.varobs)
+        Obs.name{j} = options_.varobs{j};
+        vj = options_.varobs{j};
         
         jxj = strmatch(vj,lgy_(dr_.order_var,:),'exact');
         js = strmatch(vj,lgy_,'exact');
@@ -440,7 +440,7 @@ if options_gsa.glue,
         ismoo(j)=jxj;
         
     end
-    jsmoo = size(options_.varobs,1);
+    jsmoo = length(options_.varobs);
     for j=1:M_.endo_nbr,
         if ~ismember(j,ismoo),
             jsmoo=jsmoo+1;
@@ -465,10 +465,10 @@ if options_gsa.glue,
         Exo(j).name = deblank(tit(j,:));    
     end
     if ~options_gsa.ppost
-        Lik(size(options_.varobs,1)+1).name = 'logpo';
-        Lik(size(options_.varobs,1)+1).ini  = 'yes';
-        Lik(size(options_.varobs,1)+1).isam = 1;
-        Lik(size(options_.varobs,1)+1).data = -logpo2;
+        Lik(length(options_.varobs)+1).name = 'logpo';
+        Lik(length(options_.varobs)+1).ini  = 'yes';
+        Lik(length(options_.varobs)+1).isam = 1;
+        Lik(length(options_.varobs)+1).data = -logpo2;
     end
     Sam.name = bayestopt_.name;
     Sam.dim  = [size(x) 0];
diff --git a/matlab/forecast_graphs.m b/matlab/forecast_graphs.m
index f95b77541d7a49bfce842b56c3b562a10320ea32..739e229d6ebce1d3c2e2081babacc0505bcd5c28 100644
--- a/matlab/forecast_graphs.m
+++ b/matlab/forecast_graphs.m
@@ -24,10 +24,6 @@ nr = 3;
 exo_nbr = M_.exo_nbr;
 endo_names = M_.endo_names;
 fname = M_.fname;
-% $$$     varobs = options_.varobs;
-% $$$     y = oo_.SmoothedVariables;
-% $$$     ys = oo_.dr.ys;
-% $$$     gend = size(y,2);
 yf = oo_.forecast.Mean;
 hpdinf = oo_.forecast.HPDinf;
 hpdsup = oo_.forecast.HPDsup;
@@ -44,13 +40,6 @@ for i = 1:size(var_list)
 end
 nvar = length(i_var);
 
-% $$$     % build trend for smoothed variables if necessary
-% $$$     trend = zeros(size(varobs,1),10);
-% $$$     if isfield(oo_.Smoother,'TrendCoeffs')
-% $$$         trend_coeffs = oo_.Smoother.TrendCoeffs;
-% $$$         trend = trend_coeffs*(gend-9:gend);
-% $$$     end
-
 % create subdirectory <fname>/graphs if id doesn't exist
 if ~exist(fname, 'dir')
     mkdir('.',fname);
diff --git a/matlab/get_posterior_parameters.m b/matlab/get_posterior_parameters.m
index 8c4a9c8ebb713d5ca3c26ec5d17d54f467814beb..b8676c2d40d0507d0312f1e3d238e382117cc23f 100644
--- a/matlab/get_posterior_parameters.m
+++ b/matlab/get_posterior_parameters.m
@@ -50,7 +50,7 @@ end
 
 for i=1:nvn
     k1 = estim_params_.nvn_observable_correspondence(i,1);
-    name1 = deblank(options_.varobs(k1,:));
+    name1 = options_.varobs{k1};
     xparam(m) = eval(['oo_.posterior_' type '.measurement_errors_std.' name1]);
     m = m+1;
 end
@@ -69,8 +69,8 @@ end
 for i=1:ncn
     k1 = estim_params_.corrn_observable_correspondence(i,1);
     k2 = estim_params_.corrn_observable_correspondence(i,2);
-    name1 = deblank(options_.varobs(k1,:));
-    name2 = deblank(options_.varobs(k2,:));
+    name1 = options_.varobs{k1};
+    name2 = options_.varobs{k2};
     xparam(m) = eval(['oo_.posterior_' type '.measurement_errors_corr.' name1 '_' name2]);
     m = m+1;
 end
diff --git a/matlab/get_the_name.m b/matlab/get_the_name.m
index bd6172a223e6d3e752d36cc5c26ed34e198bc731..9251dd2f967acfe5f539e4a6a215719c6dd0f354 100644
--- a/matlab/get_the_name.m
+++ b/matlab/get_the_name.m
@@ -73,7 +73,7 @@ if k <= nvx
         texnam = ['$ SE_{' tname '} $'];
     end
 elseif  k <= (nvx+nvn)
-    vname = deblank(options_.varobs(estim_params_.nvn_observable_correspondence(k-estim_params_.nvx,1),:));
+    vname = options_.varobs{estim_params_.nvn_observable_correspondence(k-estim_params_.nvx,1)};
     nam=['SE_EOBS_',vname];
     if TeX
         tname  = deblank(M_.endo_names_tex(estim_params_.var_endo(k-estim_params_.nvx,1),:));
diff --git a/matlab/get_variables_list.m b/matlab/get_variables_list.m
index 853b1169f905bba2345468587a02ac32e3903d5a..5d6a93c84f17e42913eee8d244a2f6e900828cbd 100644
--- a/matlab/get_variables_list.m
+++ b/matlab/get_variables_list.m
@@ -35,7 +35,7 @@ function [ivar,vartan,options_] = get_variables_list(options_,M_)
 
 varlist = options_.varlist;
 if isempty(varlist)
-    varlist = options_.varobs;
+    varlist = char(options_.varobs);
     options_.varlist = varlist;
 end
 nvar = rows(varlist);
diff --git a/matlab/identification_analysis.m b/matlab/identification_analysis.m
index 07f5ce50fbf6c659ab867f9aa9a58469477bbe19..61d732aa410a4babf97b095d431539a3d6e07554 100644
--- a/matlab/identification_analysis.m
+++ b/matlab/identification_analysis.m
@@ -140,7 +140,7 @@ if info(1)==0,
             end
             analytic_derivation = options_.analytic_derivation;
             options_.analytic_derivation = -2;
-            info = stoch_simul(options_.varobs);
+            info = stoch_simul(char(options_.varobs));
             data_info.data=oo_.endo_simul(options_.varobs_id,100+1:end);
             %                         datax=data;
             derivatives_info.no_DLIK=1;
diff --git a/matlab/prior_posterior_statistics.m b/matlab/prior_posterior_statistics.m
index 2bd265d05a7740f2d79c62b4cdaa454ae8ef79d0..936b307ad85f1a69c4211267878249bd1f39d1c1 100644
--- a/matlab/prior_posterior_statistics.m
+++ b/matlab/prior_posterior_statistics.m
@@ -58,7 +58,7 @@ naK = length(options_.filter_step_ahead);
 MaxNumberOfBytes=options_.MaxNumberOfBytes;
 endo_nbr=M_.endo_nbr;
 exo_nbr=M_.exo_nbr;
-nvobs     = size(options_.varobs,1);
+nvobs     = length(options_.varobs);
 iendo = 1:endo_nbr;
 horizon = options_.forecast;
 % moments_varendo = options_.moments_varendo;
@@ -114,9 +114,9 @@ end
 MAX_nruns = min(B,ceil(MaxNumberOfBytes/(npar+2)/8));
 MAX_nsmoo = min(B,ceil(MaxNumberOfBytes/((endo_nbr)*gend)/8));
 MAX_ninno = min(B,ceil(MaxNumberOfBytes/(exo_nbr*gend)/8));
-MAX_nerro = min(B,ceil(MaxNumberOfBytes/(size(options_.varobs,1)*gend)/8));
+MAX_nerro = min(B,ceil(MaxNumberOfBytes/(length(options_.varobs)*gend)/8));
 if naK
-    MAX_naK   = min(B,ceil(MaxNumberOfBytes/(size(options_.varobs,1)* ...
+    MAX_naK   = min(B,ceil(MaxNumberOfBytes/(length(options_.varobs)* ...
                                              length(options_.filter_step_ahead)*gend)/8));
 end
 if horizon
diff --git a/matlab/read_variables.m b/matlab/read_variables.m
index 3011846db1f9ae179d5830357aae50c963b8bd52..cc0979307d17cfca092b014faac5a2c8af6d5e6e 100644
--- a/matlab/read_variables.m
+++ b/matlab/read_variables.m
@@ -42,7 +42,7 @@ if ~isempty(directory)
 end
 
 dyn_size_01 = size(dyn_data_01,1);
-var_size_01 = size(var_names_01,1);
+var_size_01 = length(var_names_01);
 
 % Auto-detect extension if not provided
 if isempty(extension)
@@ -71,7 +71,7 @@ switch (extension)
     case '.m'
         eval(basename);
         for dyn_i_01=1:var_size_01
-            dyn_tmp_01 = eval(var_names_01(dyn_i_01,:));
+            dyn_tmp_01 = eval(var_names_01{dyn_i_01});
             if length(dyn_tmp_01) > dyn_size_01 && dyn_size_01 > 0
                 cd(old_pwd)
                 error('data size is too large')
@@ -81,7 +81,7 @@ switch (extension)
     case '.mat'
         s = load(basename);
         for dyn_i_01=1:var_size_01
-            dyn_tmp_01 = s.(deblank(var_names_01(dyn_i_01,:)));
+            dyn_tmp_01 = s.(var_names_01{dyn_i_01});
             if length(dyn_tmp_01) > dyn_size_01 && dyn_size_01 > 0
                 cd(old_pwd)
                 error('data size is too large')
@@ -96,7 +96,7 @@ switch (extension)
             end
         end
         for dyn_i_01=1:var_size_01
-            iv = strmatch(var_names_01(dyn_i_01,:),raw(1,:),'exact');
+            iv = strmatch(var_names_01{dyn_i_01},raw(1,:),'exact');
             dyn_tmp_01 = [raw{2:end,iv}]';
             if length(dyn_tmp_01) > dyn_size_01 && dyn_size_01 > 0
                 cd(old_pwd)
@@ -106,9 +106,8 @@ switch (extension)
         end
     case '.csv'
         [freq,init,data,varlist] = load_csv_file_data(fullname);
-        %var_names_01 = deblank(var_names_01);
         for dyn_i_01=1:var_size_01
-            iv = strmatch(strtrim(var_names_01(dyn_i_01,:)),varlist,'exact');
+            iv = strmatch(var_names_01{dyn_i_01},varlist,'exact');
             if ~isempty(iv)
                 dyn_tmp_01 = [data(2:end,iv)]';
                 if length(dyn_tmp_01) > dyn_size_01 && dyn_size_01 > 0
@@ -118,7 +117,7 @@ switch (extension)
                 dyn_data_01(:,dyn_i_01) = dyn_tmp_01;
             else
                 cd(old_pwd)
-                error([strtrim(var_names_01(dyn_i_01,:)) ' not found in ' fullname])
+                error([var_names_01{dyn_i_01} ' not found in ' fullname])
             end
         end
     otherwise
diff --git a/matlab/set_prior.m b/matlab/set_prior.m
index f82223ec853418e7aafe2e95d3616be6f50fe42d..2c5c0cf302aa9b90c5b38ef5ad2f752a629bdf39 100644
--- a/matlab/set_prior.m
+++ b/matlab/set_prior.m
@@ -76,11 +76,11 @@ end
 if nvn
     estim_params_.nvn_observable_correspondence=NaN(nvn,1); % stores number of corresponding observable
     if isequal(M_.H,0)
-        nvarobs = size(options_.varobs,1);
+        nvarobs = length(options_.varobs);
         M_.H = zeros(nvarobs,nvarobs);
     end
     for i=1:nvn
-        obsi_ = strmatch(deblank(M_.endo_names(estim_params_.var_endo(i,1),:)),deblank(options_.varobs),'exact');
+        obsi_ = strmatch(deblank(M_.endo_names(estim_params_.var_endo(i,1),:)),options_.varobs,'exact');
         if isempty(obsi_)
             error(['The variable ' deblank(M_.endo_names(estim_params_.var_endo(i,1),:)) ' has to be declared as observable since you assume a measurement error on it.'])
         end
@@ -95,7 +95,7 @@ if nvn
     bayestopt_.p3 = [ bayestopt_.p3; estim_params_.var_endo(:,8)];
     bayestopt_.p4 = [ bayestopt_.p4; estim_params_.var_endo(:,9)];
     bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.var_endo(:,10)];
-    bayestopt_.name = [ bayestopt_.name; cellstr(options_.varobs(estim_params_.nvn_observable_correspondence,:))];
+    bayestopt_.name = [ bayestopt_.name; options_.varobs{estim_params_.nvn_observable_correspondence}];
 end
 if ncx
     xparam1 = [xparam1; estim_params_.corrx(:,3)];
@@ -114,7 +114,7 @@ end
 if ncn
     estim_params_.corrn_observable_correspondence=NaN(ncn,2);
     if isequal(M_.H,0)
-        nvarobs = size(options_.varobs,1);
+        nvarobs = length(options_.varobs);
         M_.H = zeros(nvarobs,nvarobs);
     end
     xparam1 = [xparam1; estim_params_.corrn(:,3)];
@@ -132,8 +132,8 @@ if ncn
     for i=1:ncn
         k1 = estim_params_.corrn(i,1);
         k2 = estim_params_.corrn(i,2);
-        obsi1 = strmatch(deblank(M_.endo_names(k1,:)),deblank(options_.varobs),'exact'); %find correspondence to varobs to construct H in set_all_paramters
-        obsi2 = strmatch(deblank(M_.endo_names(k2,:)),deblank(options_.varobs),'exact');
+        obsi1 = strmatch(deblank(M_.endo_names(k1,:)),options_.varobs,'exact'); %find correspondence to varobs to construct H in set_all_paramters
+        obsi2 = strmatch(deblank(M_.endo_names(k2,:)),options_.varobs,'exact');
         estim_params_.corrn_observable_correspondence(i,:)=[obsi1,obsi2]; %save correspondence
     end
 end
diff --git a/matlab/simulated_moment_uncertainty.m b/matlab/simulated_moment_uncertainty.m
index 0815c7a6b00cb8c71c333b7a90df366275b1454b..d41f138359ac80d1af4cc4dbe7fb2ae0773b44b4 100644
--- a/matlab/simulated_moment_uncertainty.m
+++ b/matlab/simulated_moment_uncertainty.m
@@ -30,7 +30,7 @@ for j=1:replic;
     options_.noprint = 1;
     options_.order = 1;
     options_.periods = periods;
-    info = stoch_simul(options_.varobs);
+    info = stoch_simul(char(options_.varobs));
     dum=[oo_.mean; dyn_vech(oo_.var)];
     sd = sqrt(diag(oo_.var));
     for i=1:options_.ar;
diff --git a/matlab/stoch_simul.m b/matlab/stoch_simul.m
index 8de0e4bfe9bff619d637ccbe885e08afe02e6fdd..d64c1ca1325a167cf494cb2af57baaebbf66372c 100644
--- a/matlab/stoch_simul.m
+++ b/matlab/stoch_simul.m
@@ -102,7 +102,7 @@ if ~options_.noprint
         skipline()
 
         if isfield(options_,'varobs')&& ~isempty(options_.varobs)
-            PCL_varobs=options_.varobs;
+            PCL_varobs=char(options_.varobs);
             disp('OBSERVED VARIABLES')
         else
             PCL_varobs=M_.endo_names;
diff --git a/matlab/subset.m b/matlab/subset.m
index 8e419581c869f8cd51a62fbd8e0262b198554c0a..dedbdbfba2ec4a5997c1b80b6b0444199ab6ce67 100644
--- a/matlab/subset.m
+++ b/matlab/subset.m
@@ -20,8 +20,6 @@ function jndx = subset()
 global options_ estim_params_ M_
 
 ExcludedParamNames = options_.ExcludedParams;
-VarObs = options_.varobs;
-VarExo = M_.exo_names;
 info   = options_.ParamSubSet;
 
 nvx = estim_params_.nvx;
diff --git a/matlab/utilities/dataset/initialize_dataset.m b/matlab/utilities/dataset/initialize_dataset.m
index c890e83fde9b47a713c3fa4dde55f5327a766a04..6037b71f7db78f00c74513b33a45e523a588f255 100644
--- a/matlab/utilities/dataset/initialize_dataset.m
+++ b/matlab/utilities/dataset/initialize_dataset.m
@@ -43,7 +43,7 @@ end
 
 % Fill the dataset structure
 dataset_.info.ntobs = nobs;
-dataset_.info.nvobs = rows(varobs);
+dataset_.info.nvobs = length(varobs);
 dataset_.info.varobs = varobs;
 
 % Test the number of variables in the database.
diff --git a/matlab/var_sample_moments.m b/matlab/var_sample_moments.m
index 834eb81522a1945f0cce60ab5c054f52308a0d2c..5980500094ce6dfa5e9710795fe9831442c406ad 100644
--- a/matlab/var_sample_moments.m
+++ b/matlab/var_sample_moments.m
@@ -75,7 +75,7 @@ YtX = [];
 XtY = [];
 XtX = [];
 
-data = read_variables(datafile,varobs,[],xls_sheet,xls_range);
+data = read_variables(datafile,char(varobs),[],xls_sheet,xls_range);
 
 if qlag > FirstObservation
     disp('VarSampleMoments :: not enough data to initialize! Try to increase FirstObservation.')
@@ -83,7 +83,7 @@ if qlag > FirstObservation
 end
 
 NumberOfObservations = LastObservation-FirstObservation+1;% This is T.
-NumberOfVariables = size(varobs,1);% This is m.
+NumberOfVariables = length(varobs);% This is m.
 if var_trend_order == -1% No constant no linear trend case.
     X = zeros(NumberOfObservations,NumberOfVariables*qlag);
 elseif var_trend_order == 0% Constant and no linear trend case.