diff --git a/callbacks.py b/callbacks.py
index ce52350fe5475f497af33119ee1716e809b126b5..8618810ef4eb103bc2ef64c6a4c1386e6b4de656 100644
--- a/callbacks.py
+++ b/callbacks.py
@@ -1,6 +1,5 @@
 import dash
 from dash.dependencies import Input, Output, State
-from dash.exceptions import PreventUpdate
 import dash_bootstrap_components as dbc
 from dash import Input, Output, State, html
 
@@ -13,10 +12,16 @@ sys.modules['xrf'] = xrf
 
 ####### Creates alerts when callback fails #########
 
-alert_selection_model = html.Div([dbc.Alert("You didn't choose a king of Machine Learning model first..",
+warning_selection_model = html.Div([dbc.Alert("You didn't choose a king of Machine Learning model first.",
                                             is_open=True,
                                             color='warning',
                                             duration=10000, ), ])
+
+warning_selection_pretrained_model = html.Div([dbc.Alert("You uploaded the data, now upload the pretrained model.",
+                                            is_open=True,
+                                            color='warning',
+                                            duration=10000, ), ])
+
 alert_network = html.Div([dbc.Alert("There was a problem while computing the graph, read the documentation. \
                                     You might have forgotten to upload the data for Random Forest or you tried to upload an unknown format.",
                                     is_open=True,
@@ -120,89 +125,90 @@ def register_callbacks(page_home, page_course, page_application, app):
                 model_application.update_ml_model(value_ml_model)
                 return None, None
 
+            # Choice of information for the model - data, feature mapping ...
+            elif ihm_id == 'model_info_choice':
+                try :
+                    model_info = parse_contents_data(model_info, model_info_filename)
+                    model_application.model_info = model_info
+                    if model_application.ml_model is None:
+                        return warning_selection_model, None
+                    model_application.update_pretrained_model_layout_with_info(model_info, model_info_filename)
+                    return model_application.component.network, None
+                except:
+                    return warning_selection_pretrained_model, None
+
             # Choice of pkl pretrained model
             elif ihm_id == 'ml_pretrained_model_choice':
-                if model_application.ml_model is None:
-                    return alert_selection_model, None
-                else:
-                    try:
-                        graph = parse_contents_graph(pretrained_model_contents, pretrained_model_filename)
-                        model_application.update_pretrained_model(graph)
-                        if not model_application.add_info:
-                            model_application.update_pretrained_model_layout()
-                            return model_application.component.network, None
-                        else:
-                            if model_application.model_info is None:
-                                return alert_network, None
-                            else:
-                                model_application.update_pretrained_model_layout_with_info(model_application.model_info,
-                                                                                           model_info_filename)
-                                return model_application.component.network, None
-                    except:
-                        return alert_network, None
-
-            # Choice of information for the model
-            elif ihm_id == 'model_info_choice':
-                model_info = parse_contents_data(model_info, model_info_filename)
-                model_application.model_info = model_info
-                if model_application.ml_model is None or model_application.pretrained_model is None:
-                    raise PreventUpdate
-                model_application.update_pretrained_model_layout_with_info(model_info, model_info_filename)
-                return model_application.component.network, None
+                try:
+                    graph = parse_contents_graph(pretrained_model_contents, pretrained_model_filename)
+                    model_application.update_pretrained_model(graph)
+                    if not model_application.add_info:
+                        model_application.update_pretrained_model_layout()
+                        return model_application.component.network, None
+                    else:
+                        model_application.update_pretrained_model_layout_with_info(model_application.model_info,
+                                                                                   model_info_filename)
+                        return model_application.component.network, None
+                except:
+                    return alert_network, None
 
             # Choice of instance to explain
             elif ihm_id == 'ml_instance_choice':
-                if model_application.ml_model is None or model_application.pretrained_model is None or model_application.enum <= 0 or model_application.xtype is None:
-                    raise PreventUpdate
                 try:
                     instance = parse_contents_instance(instance_contents, instance_filename)
                     model_application.update_instance(instance)
                     return model_application.component.network, model_application.component.explanation
                 except:
-                    return alert_network, alert_explanation
+                    return model_application.component.network, alert_explanation
 
 
             # Choice of number of expls
             elif ihm_id == 'number_explanations':
-                if model_application.ml_model is None or model_application.pretrained_model is None or model_application.instance is None or model_application.solver is None or model_application.xtype is None:
-                    raise PreventUpdate
-                model_application.update_enum(enum)
-                return model_application.component.network, model_application.component.explanation
+                try:
+                    model_application.update_enum(enum)
+                    return model_application.component.network, model_application.component.explanation
+                except:
+                    return model_application.component.network, alert_explanation
 
             # Choice of AxP or CxP
             elif ihm_id == 'explanation_type':
-                if model_application.ml_model is None or model_application.pretrained_model is None or model_application.instance is None or model_application.enum <= 0 or model_application.solver is None:
-                    raise PreventUpdate
-                model_application.update_xtype(xtype)
-                return model_application.component.network, model_application.component.explanation
+                try:
+                    model_application.update_xtype(xtype)
+                    return model_application.component.network, model_application.component.explanation
+                except:
+                    return model_application.component.network, alert_explanation
 
             # Choice of solver
             elif ihm_id == 'solver_sat':
-                if model_application.ml_model is None or model_application.pretrained_model is None or model_application.instance is None or model_application.enum <= 0 or model_application.xtype is None:
-                    raise PreventUpdate
-                model_application.update_solver(solver)
-                return model_application.component.network, model_application.component.explanation
+                try:
+                    model_application.update_solver(solver)
+                    return model_application.component.network, model_application.component.explanation
+                except:
+                    return model_application.component.network, alert_explanation
 
             # Choice of AxP to draw
             elif ihm_id == 'expl_choice':
-                if model_application.ml_model is None or model_application.pretrained_model is None or model_application.instance is None or model_application.enum <= 0 or model_application.xtype is None:
-                    raise PreventUpdate
-                model_application.update_expl(expl_choice)
-                return model_application.component.network, model_application.component.explanation
+                try :
+                    model_application.update_expl(expl_choice)
+                    return model_application.component.network, model_application.component.explanation
+                except:
+                    return model_application.component.network, alert_explanation
 
             # Choice of CxP to draw
             elif ihm_id == 'cont_expl_choice':
-                if model_application.ml_model is None or model_application.pretrained_model is None or model_application.instance is None or model_application.enum <= 0 or model_application.xtype is None:
-                    raise PreventUpdate
-                model_application.update_cont_expl(cont_expl_choice)
-                return model_application.component.network, model_application.component.explanation
+                try:
+                    model_application.update_cont_expl(cont_expl_choice)
+                    return model_application.component.network, model_application.component.explanation
+                except:
+                    return model_application.component.network, alert_explanation
 
             # In the case of RandomForest, id of tree to choose to draw tree
             elif ihm_id == 'choice_tree':
-                if model_application.ml_model is None or model_application.pretrained_model is None:
-                    raise PreventUpdate
-                model_application.update_tree_to_plot(id_tree)
-                return model_application.component.network, model_application.component.explanation
+                try :
+                    model_application.update_tree_to_plot(id_tree)
+                    return model_application.component.network, model_application.component.explanation
+                except:
+                    return model_application.component.network, alert_explanation
 
     @app.callback(
         Output('explanation', 'hidden'),