diff --git a/src/resample.m b/src/resample.m
index a72894428262efd98b685fb5438cccdad33e159c..d49abf12e5ab4d4d5d4f8c06d2938a692534b4a1 100644
--- a/src/resample.m
+++ b/src/resample.m
@@ -1,4 +1,4 @@
-function resampled_particles = resample(particles,weights,DynareOptions)
+function resampled_particles = resample(particles,weights,ParticleOptions)
 % Resamples particles.
 
 %@info:
@@ -54,19 +54,19 @@ function resampled_particles = resample(particles,weights,DynareOptions)
 defaultmethod = 1; % For residual based method set this variable equal to 0.
 
 if defaultmethod
-    if DynareOptions.particle.resampling.method.kitagawa
+    if ParticleOptions.resampling.method.kitagawa
         resampled_particles = traditional_resampling(particles,weights,rand);
-    elseif DynareOptions.particle.resampling.method.stratified
+    elseif ParticleOptions.resampling.method.stratified
         resampled_particles = traditional_resampling(particles,weights,rand(size(weights)));
-    elseif DynareOptions.particle.resampling.method.smooth
+    elseif ParticleOptions.resampling.method.smooth
         resampled_particles = multivariate_smooth_resampling(particles,weights);
     else
         error('Unknow sampling method!')
     end
 else
-    if DynareOptions.particle.resampling.method.kitagawa
+    if ParticleOptions.resampling.method.kitagawa
         resampled_particles = residual_resampling(particles,weights,rand);
-    elseif DynareOptions.particle.resampling.method.stratified
+    elseif ParticleOptions.resampling.method.stratified
         resampled_particles = residual_resampling(particles,weights,rand(size(weights)));
     else
         error('Unknown sampling method!')
diff --git a/src/sequential_importance_particle_filter.m b/src/sequential_importance_particle_filter.m
index 8099a2f6ce8e6959aade6cd105c73c5d59d23ffc..19241382c83536a79846514086aef94f28ff67a1 100644
--- a/src/sequential_importance_particle_filter.m
+++ b/src/sequential_importance_particle_filter.m
@@ -1,4 +1,4 @@
-function [LIK,lik] = sequential_importance_particle_filter(ReducedForm,Y,start,DynareOptions)
+function [LIK,lik] = sequential_importance_particle_filter(ReducedForm,Y,start,ParticleOptions,ThreadsOptions)
 
 % Evaluates the likelihood of a nonlinear model with a particle filter (optionally with resampling).
 
@@ -30,7 +30,7 @@ if isempty(start)
 end
 
 % Set flag for prunning
-pruning = DynareOptions.particle.pruning;
+pruning = ParticleOptions.pruning;
 
 % Get steady state and mean.
 steadystate = ReducedForm.steadystate;
@@ -45,7 +45,7 @@ if isempty(init_flag)
     number_of_state_variables = length(mf0);
     number_of_observed_variables = length(mf1);
     number_of_structural_innovations = length(ReducedForm.Q);
-    number_of_particles = DynareOptions.particle.number_of_particles;
+    number_of_particles = ParticleOptions.number_of_particles;
     init_flag = 1;
 end
 
@@ -99,9 +99,9 @@ for t=1:sample_size
     epsilon = Q_lower_triangular_cholesky*randn(number_of_structural_innovations,number_of_particles);
     if pruning
         yhat_ = bsxfun(@minus,StateVectors_,state_variables_steady_state);
-        [tmp, tmp_] = local_state_space_iteration_2(yhat,epsilon,ghx,ghu,constant,ghxx,ghuu,ghxu,yhat_,steadystate,DynareOptions.threads.local_state_space_iteration_2);
+        [tmp, tmp_] = local_state_space_iteration_2(yhat,epsilon,ghx,ghu,constant,ghxx,ghuu,ghxu,yhat_,steadystate,ThreadsOptions.local_state_space_iteration_2);
     else
-        tmp = local_state_space_iteration_2(yhat,epsilon,ghx,ghu,constant,ghxx,ghuu,ghxu,DynareOptions.threads.local_state_space_iteration_2);
+        tmp = local_state_space_iteration_2(yhat,epsilon,ghx,ghu,constant,ghxx,ghuu,ghxu,ThreadsOptions.local_state_space_iteration_2);
     end
     PredictedObservedMean = tmp(mf1,:)*transpose(weights);
     PredictionError = bsxfun(@minus,Y(:,t),tmp(mf1,:));
@@ -117,16 +117,16 @@ for t=1:sample_size
     wtilde = weights.*exp(lnw-dfac);
     lik(t) = log(sum(wtilde))+dfac;
     weights = wtilde/sum(wtilde);
-    if (DynareOptions.particle.resampling.status.generic && neff(weights)<DynareOptions.particle.resampling.threshold*sample_size) || DynareOptions.particle.resampling.status.systematic
+    if (ParticleOptions.resampling.status.generic && neff(weights)<ParticleOptions.resampling.threshold*sample_size) || ParticleOptions.resampling.status.systematic
         if pruning
-            temp = resample([tmp(mf0,:)' tmp_(mf0,:)'],weights',DynareOptions);
+            temp = resample([tmp(mf0,:)' tmp_(mf0,:)'],weights',ParticleOptions);
             StateVectors = temp(:,1:number_of_state_variables)';
             StateVectors_ = temp(:,number_of_state_variables+1:2*number_of_state_variables)';
         else
-            StateVectors = resample(tmp(mf0,:)',weights',DynareOptions)';
+            StateVectors = resample(tmp(mf0,:)',weights',ParticleOptions)';
         end
         weights = ones(1,number_of_particles)/number_of_particles;
-    elseif DynareOptions.particle.resampling.status.none
+    elseif ParticleOptions.resampling.status.none
         StateVectors = tmp(mf0,:);
         if pruning
             StateVectors_ = tmp_(mf0,:);