diff --git a/matlab/ep/extended_path.m b/matlab/ep/extended_path.m
index d73d7456bc9fb6c8e1c8db5111efa1728f7aa03f..57e77233eed05839ab2c5387f9eeee4f60115f27 100644
--- a/matlab/ep/extended_path.m
+++ b/matlab/ep/extended_path.m
@@ -35,40 +35,35 @@ global M_ options_ oo_
 options_.verbosity = options_.ep.verbosity;
 verbosity = options_.ep.verbosity+options_.ep.debug;
 
-% Test if bytecode and block options are used (these options are mandatory)
-if ~( options_.bytecode && options_.block )
-    pfm.lead_lag_incidence = M_.lead_lag_incidence;
-    pfm.ny = M_.endo_nbr;
-    pfm.max_lag = M_.maximum_endo_lag;
-    pfm.nyp = nnz(pfm.lead_lag_incidence(1,:));
-    pfm.iyp = find(pfm.lead_lag_incidence(1,:)>0);
-    pfm.ny0 = nnz(pfm.lead_lag_incidence(2,:));
-    pfm.iy0 = find(pfm.lead_lag_incidence(2,:)>0);
-    pfm.nyf = nnz(pfm.lead_lag_incidence(3,:));
-    pfm.iyf = find(pfm.lead_lag_incidence(3,:)>0);
-    pfm.nd = pfm.nyp+pfm.ny0+pfm.nyf;
-    pfm.nrc = pfm.nyf+1;
-    pfm.isp = [1:pfm.nyp];
-    pfm.is = [pfm.nyp+1:pfm.ny+pfm.nyp];
-    pfm.isf = pfm.iyf+pfm.nyp;
-    pfm.isf1 = [pfm.nyp+pfm.ny+1:pfm.nyf+pfm.nyp+pfm.ny+1];
-    pfm.iz = [1:pfm.ny+pfm.nyp+pfm.nyf];
-    pfm.periods = options_.ep.periods;
-    pfm.steady_state = oo_.steady_state;
-    pfm.params = M_.params;
-    pfm.i_cols_1 = nonzeros(pfm.lead_lag_incidence(2:3,:)');
-    pfm.i_cols_A1 = find(pfm.lead_lag_incidence(2:3,:)');
-    pfm.i_cols_T = nonzeros(pfm.lead_lag_incidence(1:2,:)');
-    pfm.i_cols_j = 1:pfm.nd;
-    pfm.i_upd = pfm.ny+(1:pfm.periods*pfm.ny);
-    pfm.dynamic_model = str2func([M_.fname,'_dynamic']);
-    pfm.verbose = options_.ep.verbosity;
-    pfm.maxit_ = options_.maxit_;
-    pfm.tolerance = options_.dynatol.f;
-    use_solve_perfect_foresight_models_routine = 1;
-else
-    use_solve_perfect_foresight_models_routine = 0;
-end
+% Prepare a structure needed by the matlab implementation of the perfect foresight model solver
+pfm.lead_lag_incidence = M_.lead_lag_incidence;
+pfm.ny = M_.endo_nbr;
+pfm.max_lag = M_.maximum_endo_lag;
+pfm.nyp = nnz(pfm.lead_lag_incidence(1,:));
+pfm.iyp = find(pfm.lead_lag_incidence(1,:)>0);
+pfm.ny0 = nnz(pfm.lead_lag_incidence(2,:));
+pfm.iy0 = find(pfm.lead_lag_incidence(2,:)>0);
+pfm.nyf = nnz(pfm.lead_lag_incidence(3,:));
+pfm.iyf = find(pfm.lead_lag_incidence(3,:)>0);
+pfm.nd = pfm.nyp+pfm.ny0+pfm.nyf;
+pfm.nrc = pfm.nyf+1;
+pfm.isp = [1:pfm.nyp];
+pfm.is = [pfm.nyp+1:pfm.ny+pfm.nyp];
+pfm.isf = pfm.iyf+pfm.nyp;
+pfm.isf1 = [pfm.nyp+pfm.ny+1:pfm.nyf+pfm.nyp+pfm.ny+1];
+pfm.iz = [1:pfm.ny+pfm.nyp+pfm.nyf];
+pfm.periods = options_.ep.periods;
+pfm.steady_state = oo_.steady_state;
+pfm.params = M_.params;
+pfm.i_cols_1 = nonzeros(pfm.lead_lag_incidence(2:3,:)');
+pfm.i_cols_A1 = find(pfm.lead_lag_incidence(2:3,:)');
+pfm.i_cols_T = nonzeros(pfm.lead_lag_incidence(1:2,:)');
+pfm.i_cols_j = 1:pfm.nd;
+pfm.i_upd = pfm.ny+(1:pfm.periods*pfm.ny);
+pfm.dynamic_model = str2func([M_.fname,'_dynamic']);
+pfm.verbose = options_.ep.verbosity;
+pfm.maxit_ = options_.maxit_;
+pfm.tolerance = options_.dynatol.f;
 
 % Set default initial conditions.
 if isempty(initial_conditions)
@@ -80,10 +75,8 @@ options_.maxit_ = options_.ep.maxit;
 
 % Set the number of periods for the perfect foresight model
 options_.periods = options_.ep.periods;
-if use_solve_perfect_foresight_models_routine
-    pfm.periods = options_.ep.periods;
-    pfm.i_upd = pfm.ny+(1:pfm.periods*pfm.ny);
-end
+pfm.periods = options_.ep.periods;
+pfm.i_upd = pfm.ny+(1:pfm.periods*pfm.ny);
 
 % Set the algorithm for the perfect foresight solver
 options_.stack_solve_algo = options_.ep.stack_solve_algo;
@@ -226,10 +219,9 @@ while (t<sample_size)
         endo_simul = oo_.endo_simul;
         while 1
             if ~increase_periods
-                if use_solve_perfect_foresight_models_routine
+                [flag,tmp] = bytecode('dynamic');
+                if flag
                     [flag,tmp] = solve_perfect_foresight_model(oo_.endo_simul,oo_.exo_simul,pfm);
-                else
-                    [flag,tmp] = bytecode('dynamic');
                 end
                 info.convergence = ~flag;
             end
@@ -266,10 +258,8 @@ while (t<sample_size)
             else
                 % Increase the number of periods.
                 options_.periods = options_.periods + options_.ep.step;
-                if use_solve_perfect_foresight_models_routine
-                    pfm.periods = options_.periods;
-                    pfm.i_upd = pfm.ny+(1:pfm.periods*pfm.ny);
-                end
+                pfm.periods = options_.periods;
+                pfm.i_upd = pfm.ny+(1:pfm.periods*pfm.ny);
                 % Increment the counter.
                 increase_periods = increase_periods + 1;
                 if verbosity
@@ -300,10 +290,9 @@ while (t<sample_size)
                     oo_.exo_simul  = [ oo_.exo_simul ; zeros(options_.ep.step,size(shocks,2)) ];
                 end
                 % Solve the perfect foresight model with an increased number of periods.
-                if use_solve_perfect_foresight_models_routine
+                [flag,tmp] = bytecode('dynamic');
+                if flag
                     [flag,tmp] = solve_perfect_foresight_model(oo_.endo_simul,oo_.exo_simul,pfm);
-                else
-                    [flag,tmp] = bytecode('dynamic');
                 end
                 info.convergence = ~flag;
                 if info.convergence
@@ -316,10 +305,8 @@ while (t<sample_size)
                         % If the maximum deviation is close enough to zero, reset the number
                         % of periods to ep.periods
                         options_.periods = options_.ep.periods;
-                        if use_solve_perfect_foresight_models_routine
-                            pfm.periods = options_.periods;
-                            pfm.i_upd = pfm.ny+(1:pfm.periods*pfm.ny);
-                        end
+                        pfm.periods = options_.periods;
+                        pfm.i_upd = pfm.ny+(1:pfm.periods*pfm.ny);
                         % Cut oo_.exo_simul and oo_.endo_simul consistently with the resetted
                         % number of periods and exit from the while loop.
                         oo_.exo_simul = oo_.exo_simul(1:(options_.periods+2),:);