diff --git a/src/gui_close_project.m b/src/gui_close_project.m
index a362d72aca38ecdea6d59c52e5b4505f85db3386..b94678ae147be6e2d1bdb7880f6473556b3b1231 100644
--- a/src/gui_close_project.m
+++ b/src/gui_close_project.m
@@ -28,16 +28,15 @@ function gui_close_project()
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-global project_info model_settings;
-global M_ options_ oo_ estim_params_ bayestopt_ dataset_ dataset_info estimation_info ys0_ ex0_;
+global project_info
 
 gui_tools.project_log_entry('Project Close',sprintf('project_name=%s; project_folder=%s',project_info.project_name,project_info.project_folder));
 
 if project_info.modified
-    answer = questdlg(sprintf('Do you want to save changes to project %s?', project_info.project_name),'DynareGUI','Yes','No','Cancel','Yes');
-    if strcmp(answer,'Yes')
+    answer = questdlg(['Do you want to save changes to project ' project_info.project_name '?'], 'DynareGUI', 'Yes', 'No', 'Cancel', 'Yes');
+    if strcmp(answer, 'Yes')
         gui_tools.save_project();
-    elseif strcmp(answer,'Cancel')
+    elseif strcmp(answer, 'Cancel')
         return
     end
 end
@@ -45,52 +44,26 @@ end
 %close all opened tabs
 gui_tabs.close_all();
 
-project_info = struct();
-model_settings = struct();
-M_ = struct();
-options_ = struct();
-oo_ = struct();
-
-if exist('estim_params_', 'var') == 1
-    estim_params_ = struct();
-end
-if exist('bayestopt_', 'var') == 1
-    bayestopt_ = struct();
-end
-if exist('dataset_', 'var') == 1
-    dataset_ = struct();
-end
-if exist('dataset_info', 'var') == 1
-    dataset_info = struct();
-end
-if exist('estimation_info', 'var') == 1
-    estimation_info = struct();
-end
-if exist('ys0_', 'var') == 1
-    ys0_ = struct();
-end
-if exist('ex0_', 'var') == 1
-    ex0_ = struct();
-end
-
+clearvars -global
+clear_persistent_variables(fileparts(which('dynare')), false)
 
 %disable menu options
 gui_set_menus(false);
 
 % remove appdata
-if(~isempty(getappdata(0,'estimation')))
+if ~isempty(getappdata(0,'estimation'))
     rmappdata(0,'estimation');
 end
 
-if(~isempty(getappdata(0,'stoch_simul')))
+if ~isempty(getappdata(0,'stoch_simul'))
     rmappdata(0,'stoch_simul');
 end
 
-if(~isempty(getappdata(0,'estim_params')))
+if ~isempty(getappdata(0,'estim_params'))
     rmappdata(0,'estim_params');
 end
 
-if(~isempty(getappdata(0,'varobs')))
+if ~isempty(getappdata(0,'varobs'))
     rmappdata(0,'varobs');
 end