diff --git a/.gitmodules b/.gitmodules
index 2cc13d27ea15221701b4f6fa32ee74a9dc23eec8..6617cc261ba3855d9a15bcd89f94cbc07caa7e88 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -25,4 +25,4 @@
 	url = https://github.com/fangq/jsonlab.git
 [submodule "preprocessor"]
 	path = preprocessor
-	url = ../../Dynare/preprocessor.git
+	url = ../../JohannesPfeifer/preprocessor.git
diff --git a/matlab/PosteriorIRF.m b/matlab/PosteriorIRF.m
index 5f02c486734b3b571328a427754d07c0c969163c..007fb89f5c3f7d18aef20cdad1ee1b3e4a2c0446 100644
--- a/matlab/PosteriorIRF.m
+++ b/matlab/PosteriorIRF.m
@@ -288,7 +288,7 @@ if options_.TeX
 end
 
 fprintf('Estimation::mcmc: Posterior (dsge) IRFs...\n');
-tit(M_.exo_names_orig_ord) = M_.exo_names;
+tit = M_.exo_names;
 kdx = 0;
 
 for file = 1:NumberOfIRFfiles_dsge
@@ -328,7 +328,7 @@ if MAX_nirfs_dsgevar
     DistribIRFdsgevar = zeros(options_.irf,9,nvar,M_.exo_nbr);
     HPDIRFdsgevar = zeros(options_.irf,2,nvar,M_.exo_nbr);
     fprintf('Estimation::mcmc: Posterior (bvar-dsge) IRFs...\n');
-    tit(M_.exo_names_orig_ord) = M_.exo_names;
+    tit = M_.exo_names;
     kdx = 0;
     for file = 1:NumberOfIRFfiles_dsgevar
         load([MhDirectoryName filesep M_.fname '_IRF_BVARDSGEs' int2str(file) '.mat']);
@@ -391,14 +391,13 @@ if ~options_.nograph && ~options_.no_graph.posterior
 
     % The files .TeX are genereted in sequential way always!
 
-    subplotnum = 0;
-    titTeX(M_.exo_names_orig_ord) = M_.exo_names_tex;
     if options_.TeX && any(strcmp('eps',cellstr(options_.graph_format)))
+        subplotnum = 0;
         fidTeX = fopen([DirectoryName filesep M_.fname '_BayesianIRF.tex'],'w');
         fprintf(fidTeX,'%% TeX eps-loader file generated by PosteriorIRF.m (Dynare).\n');
         fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
         fprintf(fidTeX,' \n');
-        titTeX(M_.exo_names_orig_ord) = M_.exo_names_tex;
+        titTeX = M_.exo_names_tex;
 
         for ii=irf_shocks_indx
             figunumber = 0;
diff --git a/matlab/PosteriorIRF_core1.m b/matlab/PosteriorIRF_core1.m
index 9b5122d14b496dcc09f2d621276f67737f1fd6e7..15d9fd2388ae82d9e7af63f8f396c017324b9639 100644
--- a/matlab/PosteriorIRF_core1.m
+++ b/matlab/PosteriorIRF_core1.m
@@ -177,15 +177,15 @@ while fpar<B
             error(['PosteriorIRF :: Dynare is unable to solve the model (' errordef ') with sample ' type])
         end
     end
-    SS(M_.exo_names_orig_ord,M_.exo_names_orig_ord) = M_.Sigma_e+1e-14*eye(M_.exo_nbr);
+    SS = M_.Sigma_e+1e-14*eye(M_.exo_nbr);
     SS = transpose(chol(SS));
     irf_shocks_indx = getIrfShocksIndx(M_, options_);
     for i=irf_shocks_indx
         if SS(i,i) > 1e-13
             if options_.order>1 && options_.relative_irf % normalize shock to 0.01 before IRF generation for GIRFs; multiply with 100 later
-                y=irf(M_,options_,dr,SS(M_.exo_names_orig_ord,i)./SS(i,i)/100, options_.irf, options_.drop,options_.replic,options_.order);
+                y=irf(M_,options_,dr,SS(:,i)./SS(i,i)/100, options_.irf, options_.drop,options_.replic,options_.order);
             else
-                y=irf(M_,options_,dr,SS(M_.exo_names_orig_ord,i), options_.irf, options_.drop,options_.replic,options_.order);
+                y=irf(M_,options_,dr,SS(:,i), options_.irf, options_.drop,options_.replic,options_.order);
             end
             if options_.relative_irf && options_.order==1 %multiply with 100 for backward compatibility
                 y = 100*y/SS(i,i);
@@ -219,7 +219,7 @@ while fpar<B
         mu = zeros(1,dataset_.vobs);
         % Get rotation
         if dsge_prior_weight > 0
-            Atheta(oo_.dr.order_var,M_.exo_names_orig_ord) = oo_.dr.ghu*sqrt(M_.Sigma_e);
+            Atheta(oo_.dr.order_var,:) = oo_.dr.ghu*sqrt(M_.Sigma_e);
             A0 = Atheta(bayestopt_.mfys,:);
             OMEGAstar = qr2(A0');
         end
diff --git a/matlab/compute_moments_varendo.m b/matlab/compute_moments_varendo.m
index 22ffa8ad792d12edf18c5251fcebe9497c5d09bc..dc869fdf829be35c617de6bc281dc7047ee5f4c4 100644
--- a/matlab/compute_moments_varendo.m
+++ b/matlab/compute_moments_varendo.m
@@ -153,7 +153,6 @@ if options_.order==1
             end
             title=add_filter_subtitle(title, options_);
             headers = M_.exo_names;
-            headers(M_.exo_names_orig_ord) = headers;
             headers = vertcat(' ', headers);
             lh = cellofchararraymaxlength(var_list_)+2;
             dyntable(options_, title, headers, var_list_, 100*temp, lh, 8, 2);
@@ -197,7 +196,6 @@ if options_.order==1
                 end
                 title=add_filter_subtitle(title, options_);
                 headers = M_.exo_names;
-                headers(M_.exo_names_orig_ord) = headers;
                 headers = vertcat(' ', headers, 'ME');
                 lh = cellofchararraymaxlength(var_list_)+2;
                 dyntable(options_, title, headers, observable_name_requested_vars,100*temp,lh,8,2);
@@ -236,7 +234,6 @@ if options_.order==1
             for step_iter=1:length(Steps)
                 title_print=[title, ' Period ' int2str(Steps(step_iter))];
                 headers = M_.exo_names;
-                headers(M_.exo_names_orig_ord) = headers;
                 headers = vertcat(' ', headers);
                 lh = cellofchararraymaxlength(var_list_)+2;
                 dyntable(options_,title_print,headers, var_list_,100* ...
@@ -280,7 +277,6 @@ if options_.order==1
                     for step_iter=1:length(Steps)
                         title_print = [title, ' Period ' int2str(Steps(step_iter))];
                         headers = M_.exo_names;
-                        headers(M_.exo_names_orig_ord) = headers;
                         headers = vertcat(' ', headers, 'ME');
                         lh = cellofchararraymaxlength(var_list_)+2;
                         dyntable(options_, title_print, headers, observable_name_requested_vars, 100*temp(:,:,step_iter), lh, 8, 2);
diff --git a/matlab/disp_moments.m b/matlab/disp_moments.m
index 8d3f5b394d2bc36f7b998792c3b198faa90f14d4..0dd5953269a402d4650b0c851188c4e1c4c18579 100644
--- a/matlab/disp_moments.m
+++ b/matlab/disp_moments.m
@@ -196,7 +196,6 @@ if ~options_.nodecomposition
             title='VARIANCE DECOMPOSITION SIMULATING ONE SHOCK AT A TIME (in percent)';
             title=add_filter_subtitle(title,options_);
             headers = M_.exo_names;
-            headers(M_.exo_names_orig_ord) = headers;
             headers = vertcat(' ', headers);
             lh = cellofchararraymaxlength(M_.endo_names(ivar))+2;
             dyntable(options_, title, vertcat(headers, 'Tot. lin. contr.'), ...
diff --git a/matlab/disp_th_moments.m b/matlab/disp_th_moments.m
index 42114c85fec6c2629e4e0981f4e7221bbee8aab6..46a05223f9c7bd8670118ed03af3036006c7c4dd 100644
--- a/matlab/disp_th_moments.m
+++ b/matlab/disp_th_moments.m
@@ -96,7 +96,6 @@ if size(stationary_vars, 1) > 0
             end
             title = add_filter_subtitle(title, options_);
             headers = M_.exo_names;
-            headers(M_.exo_names_orig_ord) = headers;
             headers = vertcat(' ', headers);
             labels=get_labels_transformed_vars(M_.endo_names,ivar(stationary_vars),options_,false);
             lh = cellofchararraymaxlength(labels)+2;
diff --git a/matlab/display_conditional_variance_decomposition.m b/matlab/display_conditional_variance_decomposition.m
index 0d56ecda049f7deb3ed2bbc3056041caa8271098..2ff1abe951dc0e12db227961768af4a97ee33a2b 100644
--- a/matlab/display_conditional_variance_decomposition.m
+++ b/matlab/display_conditional_variance_decomposition.m
@@ -33,7 +33,6 @@ function display_conditional_variance_decomposition(conditional_decomposition_ar
 if size(conditional_decomposition_array,3)==M_.exo_nbr %no ME input
     shock_number=M_.exo_nbr;
     headers = M_.exo_names;
-    headers(M_.exo_names_orig_ord) = headers;
     if options_.TeX
         headers_TeX = vertcat(' ', M_.exo_names_tex);
     end
@@ -41,7 +40,6 @@ if size(conditional_decomposition_array,3)==M_.exo_nbr %no ME input
 elseif size(conditional_decomposition_array,3)==M_.exo_nbr+1 %ME input
     shock_number=M_.exo_nbr+1;
     headers = M_.exo_names;
-    headers(M_.exo_names_orig_ord) = headers;
     headers = vertcat(headers, 'ME');
     if options_.TeX
         headers_TeX = vertcat(M_.exo_names_tex, 'ME');
diff --git a/matlab/dynare_sensitivity.m b/matlab/dynare_sensitivity.m
index 3db43732a64b22411b203ecbb564834416d21a1a..07e440e810f7c21200c4c2c94f25ea33caa0dabc 100644
--- a/matlab/dynare_sensitivity.m
+++ b/matlab/dynare_sensitivity.m
@@ -534,7 +534,7 @@ if options_gsa.glue
             Out1(jsmoo).ini  = 'yes';
         end
     end
-    tit(M_.exo_names_orig_ord) = M_.exo_names;
+    tit = M_.exo_names;
     for j=1:M_.exo_nbr
         Exo(j).name = tit{j};
     end
diff --git a/matlab/getIrfShocksIndx.m b/matlab/getIrfShocksIndx.m
index 5686b228c2c74b432e6c64092eaa191cdf1ecd48..571dd439ed726bb6639ba5ca6536a49b5ca5ffb7 100644
--- a/matlab/getIrfShocksIndx.m
+++ b/matlab/getIrfShocksIndx.m
@@ -27,7 +27,7 @@ function irf_shocks_indx=getIrfShocksIndx(M_, options_)
 % along with Dynare.  If not, see <https://www.gnu.org/licenses/>.
 
 if (isfield(options_,'irf_shocks')==0)
-    irf_shocks_indx = M_.exo_names_orig_ord;
+    irf_shocks_indx = 1:M_.exo_nbr;
 else
     irf_shocks_indx = zeros(1,size(options_.irf_shocks,1));
     for i=1:size(options_.irf_shocks,1)
diff --git a/matlab/partial_information/PCL_Part_info_irf.m b/matlab/partial_information/PCL_Part_info_irf.m
index d6a756b7635614264f02735171339ac579f5e44b..41f21b57448e3e26d082e57acf59c1ebbdc9e194 100644
--- a/matlab/partial_information/PCL_Part_info_irf.m
+++ b/matlab/partial_information/PCL_Part_info_irf.m
@@ -116,7 +116,7 @@ rr=DD*QQ*DD'+RR;
 ZSIG0=disc_riccati_fast(ff,DD,rr,hh);
 PP=ZSIG0 +QQ;
 
-exo_names=M_.exo_names(M_.exo_names_orig_ord);
+exo_names=M_.exo_names;
 
 DPDR=DD*PP*DD'+RR;
 I_DPDR=inv(DPDR);
diff --git a/matlab/partial_information/PCL_Part_info_moments.m b/matlab/partial_information/PCL_Part_info_moments.m
index 1fc7de1270f6d641398c1dc9990da8e6bbf51824..60f4a9bc9a50f68adb07ceb3f8e1b01f02ea3384 100644
--- a/matlab/partial_information/PCL_Part_info_moments.m
+++ b/matlab/partial_information/PCL_Part_info_moments.m
@@ -129,7 +129,7 @@ rr=DD*QQ*DD'+RR;
 ZSIG0=disc_riccati_fast(ff,DD,rr,hh);
 PP=ZSIG0 +QQ;
 
-exo_names = M_.exo_names(M_.exo_names_orig_ord);
+exo_names = M_.exo_names;
 
 DPDR=DD*PP*DD'+RR;
 I_DPDR=inv(DPDR);
diff --git a/matlab/stoch_simul.m b/matlab/stoch_simul.m
index ad26585d884d028576533475ff6803ca1c8c871f..f4dbdb731bcebba2efaca65b422298dea2762c92 100644
--- a/matlab/stoch_simul.m
+++ b/matlab/stoch_simul.m
@@ -231,11 +231,11 @@ if options_.irf
         fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
         fprintf(fidTeX,' \n');
     end
-    SS(M_.exo_names_orig_ord,M_.exo_names_orig_ord)=M_.Sigma_e+1e-14*eye(M_.exo_nbr);
+    SS=M_.Sigma_e+1e-14*eye(M_.exo_nbr);
     cs = transpose(chol(SS));
-    tit(M_.exo_names_orig_ord) = M_.exo_names;
+    tit = M_.exo_names;
     if TeX
-        titTeX(M_.exo_names_orig_ord) = M_.exo_names_tex;
+        titTeX = M_.exo_names_tex;
     end
     irf_shocks_indx = getIrfShocksIndx(M_, options_);
     for i=irf_shocks_indx
@@ -244,10 +244,10 @@ if options_.irf
                 y=PCL_Part_info_irf (0, PCL_varobs, i_var, M_, oo_.dr, options_.irf, i);
             else
                 if options_.order>1 && options_.relative_irf % normalize shock to 0.01 before IRF generation for GIRFs; multiply with 100 later
-                    y=irf(M_, options_, oo_.dr,cs(M_.exo_names_orig_ord,i)./cs(i,i)/100, options_.irf, options_.drop, ...
+                    y=irf(M_, options_, oo_.dr,cs(:,i)./cs(i,i)/100, options_.irf, options_.drop, ...
                           options_.replic, options_.order);
                 else %for linear model, rescaling is done later
-                    y=irf(M_, options_, oo_.dr,cs(M_.exo_names_orig_ord,i), options_.irf, options_.drop, ...
+                    y=irf(M_, options_, oo_.dr,cs(:,i), options_.irf, options_.drop, ...
                           options_.replic, options_.order);
                 end
             end
diff --git a/matlab/th_autocovariances.m b/matlab/th_autocovariances.m
index 3a01d9be40fc26d4b65a1156b4e3655fa60c4c31..57f9781948c4cb0f44c030bf588efffbf4dfbac4 100644
--- a/matlab/th_autocovariances.m
+++ b/matlab/th_autocovariances.m
@@ -73,7 +73,6 @@ if local_order~=1 && M_.hessian_eq_zero
 end
 
 endo_nbr = M_.endo_nbr;
-exo_names_orig_ord  = M_.exo_names_orig_ord;
 if isoctave
     warning('off', 'Octave:divide-by-zero')
 else
@@ -173,11 +172,11 @@ if options_.hp_filter == 0 && ~options_.bandpass.indicator
             Gamma_y{nar+2} = ones(nvar,1);
         else
             Gamma_y{nar+2} = NaN(nvar,M_.exo_nbr);
-            SS(exo_names_orig_ord,exo_names_orig_ord)=M_.Sigma_e+1e-14*eye(M_.exo_nbr);
+            SS=M_.Sigma_e+1e-14*eye(M_.exo_nbr);
             cs = chol(SS)';
-            b1(:,exo_names_orig_ord) = ghu1;
+            b1 = ghu1;
             b1 = b1*cs;
-            b2(:,exo_names_orig_ord) = ghu(iky,:);
+            b2 = ghu(iky,:);
             b2 = b2*cs;
             vx  = lyapunov_symm(A,b1*b1',options_.lyapunov_fixed_point_tol,options_.qz_criterium,options_.lyapunov_complex_threshold,1,options_.debug);
             vv = diag(aa*vx*aa'+b2*b2');
@@ -251,11 +250,11 @@ else% ==> Theoretical filters.
             Gamma_y{nar+2} = ones(nvar,1);
         else
             Gamma_y{nar+2} = zeros(nvar,M_.exo_nbr);
-            SS(exo_names_orig_ord,exo_names_orig_ord) = M_.Sigma_e+1e-14*eye(M_.exo_nbr); %make sure Covariance matrix is positive definite
+            SS = M_.Sigma_e+1e-14*eye(M_.exo_nbr); %make sure Covariance matrix is positive definite
             cs = chol(SS)';
             SS = cs*cs';
-            b1(:,exo_names_orig_ord) = ghu1;
-            b2(:,exo_names_orig_ord) = ghu(iky,:);
+            b1 = ghu1;
+            b2 = ghu(iky,:);
             mathp_col = NaN(ngrid,length(ivar)^2);
             IA = eye(size(A,1));
             IE = eye(M_.exo_nbr);
diff --git a/preprocessor b/preprocessor
index 1b0e5581378bc98cf73b090c9a849d0e578a895d..0990492e2fe10d06e1955ae5072fda94fe51f8d2 160000
--- a/preprocessor
+++ b/preprocessor
@@ -1 +1 @@
-Subproject commit 1b0e5581378bc98cf73b090c9a849d0e578a895d
+Subproject commit 0990492e2fe10d06e1955ae5072fda94fe51f8d2