diff --git a/src/dynare_gui.m b/src/dynare_gui.m
index d8a0c49a00ee034e55a38100ba24bdc131598ddc..4d624337106fc1743460a24e17a995db29a36cbe 100644
--- a/src/dynare_gui.m
+++ b/src/dynare_gui.m
@@ -167,7 +167,7 @@ gui_project(addTab(hObject, 'New project'), 'New');
 end
 
 % --------------------------------------------------------------------
-function project_open_Callback(varargin)
+function project_open_Callback(hObject, ~, ~)
 % hObject    handle to project_open (see GCBO)
 % eventdata  reserved - to be defined in a future version of MATLAB
 % handles    structure with handles and user data (see GUIDATA)
@@ -185,7 +185,7 @@ if isstruct(project_info) ...
     end
 end
 
-gui_open_project(varargin{1});
+gui_open_project(hObject);
 end
 
 % --------------------------------------------------------------------
@@ -276,15 +276,15 @@ gui_estim_params(addTab(hObject, 'Est. params & shocks '));
 end
 
 % --------------------------------------------------------------------
-function estimation_run_Callback(hObject, ~, ~)
+function estimation_run_Callback(hObject, ~, handles)
 possibly_create_model_settings();
-gui_estimation(addTab(hObject, 'Estimation '));
+gui_estimation(addTab(hObject, 'Estimation ', handles));
 end
 
 % --------------------------------------------------------------------
-function estimation_run_calibrated_smoother_Callback(hObject, ~, ~)
+function estimation_run_calibrated_smoother_Callback(hObject, ~, handles)
 possibly_create_model_settings();
-gui_calib_smoother(addTab(hObject, 'Calib. smoother '));
+gui_calib_smoother(addTab(hObject, 'Calib. smoother ', handles));
 end
 
 function possibly_create_model_settings()
@@ -295,53 +295,53 @@ end
 
 % Simulation!
 % --------------------------------------------------------------------
-function simulation_stochastic_Callback(hObject, ~, ~)
+function simulation_stochastic_Callback(hObject, ~, handles)
 possibly_create_model_settings();
-gui_stoch_simulation(addTab(hObject, 'Stoch simul. '));
+gui_stoch_simulation(addTab(hObject, 'Stoch simul. ', handles));
 end
 
 % --------------------------------------------------------------------
-function simulation_deterministic_Callback(hObject, ~, ~)
+function simulation_deterministic_Callback(hObject, ~, handles)
 possibly_create_model_settings();
-gui_determ_simulation(addTab(hObject, 'Determ simul. '));
+gui_determ_simulation(addTab(hObject, 'Determ simul. ', handles));
 end
 
-function sensitivity_analysis_Callback(hObject, ~, ~)
+function sensitivity_analysis_Callback(hObject, ~, handles)
 possibly_create_model_settings();
-gui_sensitivity_analysis(addTab(hObject, 'Sensitivity'));
+gui_sensitivity_analysis(addTab(hObject, 'Sensitivity', handles));
 end
 
 % Output!
-function output_shock_decomposition_Callback(hObject, ~, ~)
-gui_shock_decomposition(addTab(hObject, 'Shock decomp. '));
+function output_shock_decomposition_Callback(hObject, ~, handles)
+gui_shock_decomposition(addTab(hObject, 'Shock decomp. ', handles));
 end
 
 % --------------------------------------------------------------------
-function output_realtime_shock_decomposition_Callback(hObject, ~, ~)
-gui_realtime_shock_decomposition(addTab(hObject, 'Realtime shock decomp. '));
+function output_realtime_shock_decomposition_Callback(hObject, ~, handles)
+gui_realtime_shock_decomposition(addTab(hObject, 'Realtime shock decomp. ', handles));
 end
 
 % --------------------------------------------------------------------
-function output_plot_shock_decomposition_Callback(hObject, ~, ~)
-gui_plot_shock_decomposition(addTab(hObject, 'Plot shock decomp. '));
+function output_plot_shock_decomposition_Callback(hObject, ~, handles)
+gui_plot_shock_decomposition(addTab(hObject, 'Plot shock decomp. ', handles));
 end
 
 % --------------------------------------------------------------------
-function output_conditional_forecast_Callback(hObject, ~)
-gui_cond_forecast_preliminary(addTab(hObject, 'Prelim. Cond. forecast '), hObject);
+function output_conditional_forecast_Callback(hObject, ~, handles)
+gui_cond_forecast_preliminary(addTab(hObject, 'Prelim. Cond. forecast ', handles), hObject, handles);
 end
 
 % --------------------------------------------------------------------
-function output_forecast_Callback(hObject, ~, ~)
-gui_forecast(addTab(hObject, 'Forecast '));
+function output_forecast_Callback(hObject, ~, handles)
+gui_forecast(addTab(hObject, 'Forecast ', handles));
 end
 
-function post_processing_epilogue_Callback(hObject, ~, ~)
-gui_epilogue(addTab(hObject, 'Epilogue'));
+function post_processing_epilogue_Callback(hObject, ~, handles)
+gui_epilogue(addTab(hObject, 'Epilogue', handles));
 end
 
 % --------------------------------------------------------------------
-function help_product_help_Callback(varargin)
+function help_product_help_Callback(~, ~, ~)
 path = [getappdata(0, 'dynare_gui_root') filesep 'resources' filesep 'html' filesep 'index.html'];
 if exist(path, 'file') == 2
     open(path);
@@ -352,9 +352,10 @@ end
 end
 
 % --------------------------------------------------------------------
-function help_dynare_manual_Callback(varargin)
+function help_dynare_manual_Callback(~, ~, ~)
 global dynareroot
-html_man_file = [dynareroot '..' filesep 'doc', filesep, 'dynare.html', filesep, 'index.html'];
+ind = strfind(dynareroot, [filesep 'matlab']);
+html_man_file = [dynareroot(1:ind), 'doc', filesep, 'dynare.html', filesep, 'index.html'];
 if exist(html_man_file, 'file') == 2
     open(html_man_file);
 else
@@ -364,11 +365,11 @@ end
 end
 
 % --------------------------------------------------------------------
-function help_about_Callback(varargin)
-gui_about(addTab(varargin{1}, 'About Dynare GUI'));
+function help_about_Callback(hObject, ~, handles)
+gui_about(addTab(hObject, 'About Dynare GUI ', handles));
 end
 
-function newTab = addTab(hObject, title)
+function newTab = addTab(hObject, title, ~)
 newTab = gui_tabs.add_tab(hObject, title);
 end
 
@@ -405,192 +406,290 @@ h1 = figure(...
     'CreateFcn', {@local_CreateFcn, blanks(0), appdata}, ...
     'CloseRequestFcn', @(hObject,eventdata)dynare_gui('project_exit_Callback',hObject,eventdata,guidata(hObject)));
 
+appdata = [];
+appdata.lastValidTag = 'uitoolbar1';
+
 uitoolbar(...
     'Parent',h1,...
     'Visible','off',...
-    'Tag','uitoolbar1');
+    'Tag','uitoolbar1',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'project';
 
 h3 = uimenu(...
     'Parent',h1,...
     'Accelerator','M',...
     'Label','Project',...
-    'Tag','project');
+    'Tag','project',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'project_new';
 
 uimenu(...
     'Parent',h3,...
-    'Callback', @project_new_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('project_new_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','New Project ...',...
     'Tag','project_new',...
-    'Accelerator','n');
+    'Accelerator','n',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
 
 appdata = [];
 appdata.lastValidTag = 'project_open';
 
 uimenu(...
     'Parent',h3,...
-    'Callback', @project_open_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('project_open_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Open Project ...',...
     'Tag','project_open',...
-    'Accelerator','o');
+    'Accelerator','o',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'project_close';
 
 uimenu(...
     'Parent',h3,...
     'Enable','off',...
     'Separator','on',...
-    'Callback', @project_close_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('project_close_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Close Project',...
     'Tag','project_close',...
-    'Accelerator','w');
+    'Accelerator','w',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'project_save';
 
 uimenu(...
     'Parent',h3,...
     'Enable','off',...
-    'Callback', @project_save_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('project_save_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Save Project',...
     'Tag','project_save',...
-    'Accelerator','s');
+    'Accelerator','s',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'project_save_as';
 
 uimenu(...
     'Parent',h3,...
     'Enable','off',...
     'Separator','on',...
-    'Callback', @project_save_as_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('project_save_as_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Save Project As ...',...
-    'Tag','project_save_as');
+    'Tag','project_save_as',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'project_exit';
 
 uimenu(...
     'Parent',h3,...
     'Separator','on',...
-    'Callback', @project_exit_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('project_exit_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Exit',...
-    'Tag','project_exit');
+    'Tag','project_exit',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'model';
 
 h10 = uimenu(...
     'Parent',h1,...
     'Label','Model',...
-    'Tag','model');
+    'Tag','model',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'model_load';
 
 uimenu(...
     'Parent',h10,...
     'Enable','off',...
-    'Callback', @model_load_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('model_load_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Load main .mod/.dyn file',...
-    'Tag','model_load');
+    'Tag','model_load',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'model_settings';
 
 uimenu(...
     'Parent',h10,...
     'Enable','off',...
     'Separator','on',...
-    'Callback', @model_settings_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('model_settings_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Model settings ...',...
-    'Tag','model_settings');
+    'Tag','model_settings',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'model_save_snapshot';
 
 uimenu(...
     'Parent',h10,...
     'Enable','off',...
     'Separator','on',...
-    'Callback', @model_save_snapshot_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('model_save_snapshot_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Save model snapshot',...
-    'Tag','model_save_snapshot');
+    'Tag','model_save_snapshot',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'model_load_snapshot';
 
 uimenu(...
     'Parent',h10,...
     'Enable','off',...
-    'Callback', @model_load_snapshot_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('model_load_snapshot_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Load model snapshot',...
-    'Tag','model_load_snapshot');
+    'Tag','model_load_snapshot',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'model_export';
 
 uimenu(...
     'Parent',h10,...
     'Enable','off',...
-    'Callback', @model_export_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('model_export_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Export to a .mod file',...
-    'Tag','model_export');
+    'Tag','model_export',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'model_logfile';
 
 uimenu(...
     'Parent',h10,...
     'Enable','off',...
     'Separator','on',...
-    'Callback', @model_logfile_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('model_logfile_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Dynare GUI log file ',...
-    'Tag','model_logfile');
-% 
-% appdata = [];
-% appdata.lastValidTag = 'Untitled_7';
-% 
-% uicontextmenu(...
-%     'Parent',h1,...
-%     'Callback',@(hObject,eventdata)dynare_gui('Untitled_7_Callback',hObject,eventdata,guidata(hObject)),...
-%     'Tag','Untitled_7',...
-%     'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+    'Tag','model_logfile',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'Untitled_7';
+
+uicontextmenu(...
+    'Parent',h1,...
+    'Callback',@(hObject,eventdata)dynare_gui('Untitled_7_Callback',hObject,eventdata,guidata(hObject)),...
+    'Tag','Untitled_7',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'estimation';
 
 h18 = uimenu(...
     'Parent',h1,...
     'Label','Estimation',...
-    'Tag','estimation');
+    'Tag','estimation',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'estimation_observed_variables';
 
 uimenu(...
     'Parent',h18,...
     'Enable','off',...
-    'Callback', @estimation_observed_variables_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('estimation_observed_variables_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Observed variables & data file',...
-    'Tag','estimation_observed_variables');
+    'Tag','estimation_observed_variables',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'estimation_parameters_shocks';
 
 uimenu(...
     'Parent',h18,...
     'Enable','off',...
-    'Callback', @estimation_parameters_shocks_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('estimation_parameters_shocks_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Estimated parameters & shocks ...',...
-    'Tag','estimation_parameters_shocks');
+    'Tag','estimation_parameters_shocks',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'estimation_run_calibrated_smoother';
 
 uimenu(...
     'Parent',h18,...
     'Enable','off',...
     'Separator','on',...
-    'Callback', @estimation_run_calibrated_smoother_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('estimation_run_calibrated_smoother_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Run calibrated smoother',...
-    'Tag','estimation_run_calibrated_smoother');
+    'Tag','estimation_run_calibrated_smoother',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'estimation_run';
 
 uimenu(...
     'Parent',h18,...
     'Enable','off',...
-    'Callback', @estimation_run_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('estimation_run_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Run estimation',...
-    'Tag','estimation_run');
+    'Tag','estimation_run',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'simulation';
 
 h23 = uimenu(...
     'Parent',h1,...
     'Label','Simulation',...
-    'Tag','simulation');
+    'Tag','simulation',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'simulation_stochastic';
 
 uimenu(...
     'Parent',h23,...
     'Enable','off',...
-    'Callback', @simulation_stochastic_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('simulation_stochastic_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Stochastic simulation',...
-    'Tag','simulation_stochastic');
+    'Tag','simulation_stochastic',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'simulation_deterministic';
 
 uimenu(...
     'Parent',h23,...
     'Enable','off',...
-    'Callback', @simulation_deterministic_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('simulation_deterministic_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Deterministic simulation',...
-    'Tag','simulation_deterministic');
+    'Tag','simulation_deterministic',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+
+appdata = [];
+appdata.lastValidTag = 'sensitivity';
 
 h24 = uimenu(...
     'Parent',h1,...
     'Label','Sensitivity',...
-    'Tag','sensitivity');
+    'Tag','sensitivity',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'sensitivity_analysis';
 
 uimenu(...
     'Parent',h24,...
     'Enable','off',...
-    'Callback', @sensitivity_analysis_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('sensitivity_analysis_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Sensitivity Analysis',...
-    'Tag','sensitivity_analysis');
-% 
-% appdata = [];
-% appdata.lastValidTag = 'uipanel_welcome';
+    'Tag','sensitivity_analysis',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'uipanel_welcome';
 
 h26 = uipanel(...
     'Parent',h1,...
@@ -613,163 +712,240 @@ h_test = uicontrol(...
     'FontAngle',get(0,'defaultuicontrolFontAngle'),...
     'FontWeight','bold');
 
-% default_char_size = get(h_test,'extent');
+default_char_size = get(h_test,'extent');
 h_test.Visible = 'Off';
 
-% c_width = default_char_size(3);
-% c_height = default_char_size(4);
+c_width = default_char_size(3);
+c_height = default_char_size(4);
 
 appdata = [];
 appdata.lastValidTag = 'text_dyna';
 
-% uicontrol(...
-%     'Parent',h26,...
-%     'FontUnits',get(0,'defaultuicontrolFontUnits'),...
-%     'Units','normalized',...
-%     'HorizontalAlignment',get(0,'defaultuicontrolHorizontalAlignment'),...
-%     'ListboxTop',get(0,'defaultuicontrolListboxTop'),...
-%     'Max',get(0,'defaultuicontrolMax'),...
-%     'Min',get(0,'defaultuicontrolMin'),...
-%     'SliderStep',get(0,'defaultuicontrolSliderStep'),...
-%     'String','DYNARE GUI',...
-%     'Style','text',...
-%     'Value',get(0,'defaultuicontrolValue'),...
-%     'Position',[0.5-c_width*5 0.6 c_width*10 c_height],... %'Position',[60 22.0117647058823 c_width*4 c_height],...
-%     'BackgroundColor',[1 1 1],...
-%     'Callback',blanks(0),...
-%     'Children',[],...
-%     'ForegroundColor',get(0,'defaultuicontrolForegroundColor'),...
-%     'Enable',get(0,'defaultuicontrolEnable'),...
-%     'TooltipString',blanks(0),...
-%     'Visible',get(0,'defaultuicontrolVisible'),...
-%     'KeyPressFcn',blanks(0),...
-%     'KeyReleaseFcn',blanks(0),...
-%     'HandleVisibility',get(0,'defaultuicontrolHandleVisibility'),...
-%     'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
-%     'DeleteFcn',blanks(0),...
-%     'ButtonDownFcn',blanks(0),...
-%     'Tag','text_dyna',...
-%     'UserData',[],...
-%     'FontSize',28,...
-%     'FontName','Tahoma',...
-%     'FontAngle',get(0,'defaultuicontrolFontAngle'),...
-%     'FontWeight','bold');
-% 
-% uicontrol(...
-%     'Parent',h26,...
-%     'FontUnits',get(0,'defaultuicontrolFontUnits'),...
-%     'Units','normalized',...
-%     'HorizontalAlignment','center',...
-%     'ListboxTop',get(0,'defaultuicontrolListboxTop'),...
-%     'Max',get(0,'defaultuicontrolMax'),...
-%     'Min',get(0,'defaultuicontrolMin'),...
-%     'SliderStep',get(0,'defaultuicontrolSliderStep'),...
-%     'String','Version 0.7',...
-%     'Style','text',...
-%     'Value',get(0,'defaultuicontrolValue'),...
-%     'Position',[0,0.4,1,.1],...
-%     'BackgroundColor',[1 1 1],...
-%     'Callback',blanks(0),...
-%     'Children',[],...
-%     'ForegroundColor',get(0,'defaultuicontrolForegroundColor'),...
-%     'Enable',get(0,'defaultuicontrolEnable'),...
-%     'TooltipString',blanks(0),...
-%     'Visible',get(0,'defaultuicontrolVisible'),...
-%     'KeyPressFcn',blanks(0),...
-%     'KeyReleaseFcn',blanks(0),...
-%     'HandleVisibility',get(0,'defaultuicontrolHandleVisibility'),...
-%     'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
-%     'DeleteFcn',blanks(0),...
-%     'ButtonDownFcn',blanks(0),...
-%     'Tag','text_version',...
-%     'UserData',[],...
-%     'FontSize',12,...
-%     'FontName',get(0,'defaultuicontrolFontName'),...
-%     'FontAngle',get(0,'defaultuicontrolFontAngle'),...
-%     'FontWeight',get(0,'defaultuicontrolFontWeight'));
+uicontrol(...
+    'Parent',h26,...
+    'FontUnits',get(0,'defaultuicontrolFontUnits'),...
+    'Units','normalized',...
+    'HorizontalAlignment',get(0,'defaultuicontrolHorizontalAlignment'),...
+    'ListboxTop',get(0,'defaultuicontrolListboxTop'),...
+    'Max',get(0,'defaultuicontrolMax'),...
+    'Min',get(0,'defaultuicontrolMin'),...
+    'SliderStep',get(0,'defaultuicontrolSliderStep'),...
+    'String','DYNARE GUI',...
+    'Style','text',...
+    'Value',get(0,'defaultuicontrolValue'),...
+    'Position',[0.5-c_width*5 0.6 c_width*10 c_height],... %'Position',[60 22.0117647058823 c_width*4 c_height],...
+    'BackgroundColor',[1 1 1],...
+    'Callback',blanks(0),...
+    'Children',[],...
+    'ForegroundColor',get(0,'defaultuicontrolForegroundColor'),...
+    'Enable',get(0,'defaultuicontrolEnable'),...
+    'TooltipString',blanks(0),...
+    'Visible',get(0,'defaultuicontrolVisible'),...
+    'KeyPressFcn',blanks(0),...
+    'KeyReleaseFcn',blanks(0),...
+    'HandleVisibility',get(0,'defaultuicontrolHandleVisibility'),...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
+    'DeleteFcn',blanks(0),...
+    'ButtonDownFcn',blanks(0),...
+    'Tag','text_dyna',...
+    'UserData',[],...
+    'FontSize',28,...
+    'FontName','Tahoma',...
+    'FontAngle',get(0,'defaultuicontrolFontAngle'),...
+    'FontWeight','bold');
+
+appdata = [];
+appdata.lastValidTag = 'text_version';
+
+h28 = uicontrol(...
+    'Parent',h26,...
+    'FontUnits',get(0,'defaultuicontrolFontUnits'),...
+    'Units','normalized',...
+    'HorizontalAlignment','center',...
+    'ListboxTop',get(0,'defaultuicontrolListboxTop'),...
+    'Max',get(0,'defaultuicontrolMax'),...
+    'Min',get(0,'defaultuicontrolMin'),...
+    'SliderStep',get(0,'defaultuicontrolSliderStep'),...
+    'String','Version 0.7',...
+    'Style','text',...
+    'Value',get(0,'defaultuicontrolValue'),...
+    'Position',[0,0.4,1,.1],...
+    'BackgroundColor',[1 1 1],...
+    'Callback',blanks(0),...
+    'Children',[],...
+    'ForegroundColor',get(0,'defaultuicontrolForegroundColor'),...
+    'Enable',get(0,'defaultuicontrolEnable'),...
+    'TooltipString',blanks(0),...
+    'Visible',get(0,'defaultuicontrolVisible'),...
+    'KeyPressFcn',blanks(0),...
+    'KeyReleaseFcn',blanks(0),...
+    'HandleVisibility',get(0,'defaultuicontrolHandleVisibility'),...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
+    'DeleteFcn',blanks(0),...
+    'ButtonDownFcn',blanks(0),...
+    'Tag','text_version',...
+    'UserData',[],...
+    'FontSize',12,...
+    'FontName',get(0,'defaultuicontrolFontName'),...
+    'FontAngle',get(0,'defaultuicontrolFontAngle'),...
+    'FontWeight',get(0,'defaultuicontrolFontWeight'));
+
+%set(h28,'Units','normalized');
+
+appdata = [];
+appdata.lastValidTag = 'output';
 
 h31 = uimenu(...
     'Parent',h1,...
     'Label','Output',...
-    'Tag','output');
+    'Tag','output',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'output_shocks_dec';
 
 h39 = uimenu(...
     'Parent',h31,...
     'Enable','off', ...
     'Label','Shock Decomposition',...
-    'Tag','output_shocks_dec');
+    'Tag','output_shocks_dec',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'output_shocks_decomposition';
 
 uimenu(...
     'Parent',h39,...
     'Enable','off',...
-    'Callback', @output_shock_decomposition_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('output_shock_decomposition_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Historical',...
-    'Tag','output_shocks_decomposition');
+    'Tag','output_shocks_decomposition',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'output_realtime_shocks_decomposition';
 
 uimenu(...
     'Parent',h39,...
     'Enable','off',...
-    'Callback', @output_realtime_shock_decomposition_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('output_realtime_shock_decomposition_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Realtime',...
-    'Tag','output_realtime_shocks_decomposition');
+    'Tag','output_realtime_shocks_decomposition',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'output_plot_shocks_decomposition';
 
 uimenu(...
     'Parent',h39,...
     'Enable','off',...
-    'Callback', @output_plot_shock_decomposition_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('output_plot_shock_decomposition_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Plot',...
-    'Tag','output_plot_shocks_decomposition');
+    'Tag','output_plot_shocks_decomposition',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'output_conditional_forecast';
 
 uimenu(...
     'Parent',h31,...
     'Enable','off',...
-    'Callback', @output_conditional_forecast_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('output_conditional_forecast_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Conditional forecast',...
-    'Tag','output_conditional_forecast');
+    'Tag','output_conditional_forecast',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'output_forecast';
 
 uimenu(...
     'Parent',h31,...
     'Enable','off',...
-    'Callback', @output_forecast_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('output_forecast_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Forecast',...
-    'Tag','output_forecast');
+    'Tag','output_forecast',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
 
-h33 = uimenu( ...
-    'Parent', h1,...
-    'Label', 'Post-processing', ...
-    'Tag', 'post_processing');
+appdata = [];
+appdata.lastValidTag = 'post_processing';
 
-uimenu( ...
+h33 = uimenu(...
+    'Parent',h1,...
+    'Label','Post-processing',...
+    'Tag','post_processing',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'post_processing_epilogue';
+
+uimenu(...
     'Parent', h33, ...
     'Enable', 'off', ...
-    'Callback', @post_processing_epilogue_Callback, ...
+    'Callback', @(hObject,eventdata)dynare_gui('post_processing_epilogue_Callback',hObject,eventdata,guidata(hObject)),...
     'Label', 'Epilogue',...
-    'Tag', 'post_processing_epilogue');
+    'Tag', 'post_processing_epilogue',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'help';
 
 h34 = uimenu(...
     'Parent',h1,...
     'Separator','on',...
     'Label','Help',...
-    'Tag','help');
+    'Tag','help',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'help_product_help';
 
 uimenu(...
     'Parent',h34,...
-    'Callback', @help_product_help_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('help_product_help_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Dynare GUI help',...
-    'Tag','help_product_help');
+    'Tag','help_product_help',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'help_dynare_manual';
 
 uimenu(...
     'Parent',h34,...
-    'Callback', @help_dynare_manual_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('help_dynare_manual_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','Dynare reference manual',...
-    'Tag','help_dynare_manual');
+    'Tag','help_dynare_manual',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+
+appdata = [];
+appdata.lastValidTag = 'help_about';
 
 uimenu(...
     'Parent',h34,...
     'Separator','on',...
-    'Callback', @help_about_Callback, ...
+    'Callback',@(hObject,eventdata)dynare_gui('help_about_Callback',hObject,eventdata,guidata(hObject)),...
     'Label','About Dynare GUI',...
-    'Tag','help_about');
+    'Tag','help_about',...
+    'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
+end
+
+% --- Set application data first then calling the CreateFcn.
+function local_CreateFcn(hObject, eventdata, createfcn, appdata)
+
+if ~isempty(appdata)
+    names = fieldnames(appdata);
+    for i=1:length(names)
+        name = char(names(i));
+        setappdata(hObject, name, getfield(appdata,name));
+    end
+end
+
+if ~isempty(createfcn)
+    if isa(createfcn,'function_handle')
+        createfcn(hObject, eventdata);
+    else
+        eval(createfcn);
+    end
+end
 end
 
 % --- Handles default GUIDE GUI creation and callback dispatch
diff --git a/src/gui_cond_forecast_preliminary.m b/src/gui_cond_forecast_preliminary.m
index ceae4eaf4f13a8514de46a9de7460331e52cb494..a0fdda49d74d37d307765d18d149b16a3674f3de 100644
--- a/src/gui_cond_forecast_preliminary.m
+++ b/src/gui_cond_forecast_preliminary.m
@@ -1,4 +1,4 @@
-function gui_cond_forecast_preliminary(tabId, hObject)
+function gui_cond_forecast_preliminary(tabId, hObject, handles)
 % function gui_cond_forecast(tabId)
 % interface for the DYNARE imcforecast command
 %