diff --git a/common/utils/itti_analyzer/libui/ui_callbacks.c b/common/utils/itti_analyzer/libui/ui_callbacks.c
index abba94f5e1ab3ff2b3fcff6c9782df67d1eef829..fd95c54e260e34378e732478edbc39afbbca0fcf 100644
--- a/common/utils/itti_analyzer/libui/ui_callbacks.c
+++ b/common/utils/itti_analyzer/libui/ui_callbacks.c
@@ -25,36 +25,46 @@
 #include "locate_root.h"
 #include "xml_parse.h"
 
-gboolean ui_callback_on_open_messages(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_on_open_messages(GtkWidget *widget, gpointer data)
 {
-    g_debug("Open messages event occurred");
-    CHECK_FCT(ui_messages_open_file_chooser());
+    gboolean refresh = (data != NULL) ? TRUE : FALSE;
+
+    g_debug("Open messages event occurred %d", refresh);
+
+    if (refresh && (ui_main_data.messages_file_name != NULL))
+    {
+        CHECK_FCT(ui_messages_read (ui_main_data.messages_file_name));
+    }
+    else
+    {
+        CHECK_FCT(ui_messages_open_file_chooser());
+    }
 
     return TRUE;
 }
 
-gboolean ui_callback_on_save_messages(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_on_save_messages(GtkWidget *widget, gpointer data)
 {
     g_debug("Save messages event occurred");
     // CHECK_FCT(ui_file_chooser());
     return TRUE;
 }
 
-gboolean ui_callback_on_open_filters(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_on_open_filters(GtkWidget *widget, gpointer data)
 {
     g_debug("Open filters event occurred");
     CHECK_FCT(ui_filters_open_file_chooser());
     return TRUE;
 }
 
-gboolean ui_callback_on_save_filters(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_on_save_filters(GtkWidget *widget, gpointer data)
 {
     g_debug("Save filters event occurred");
     CHECK_FCT(ui_filters_save_file_chooser());
     return TRUE;
 }
 
-gboolean ui_callback_on_about(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_on_about(GtkWidget *widget, gpointer data)
 {
 #if defined(PACKAGE_STRING)
     ui_notification_dialog (GTK_MESSAGE_INFO, "about", "%s", PACKAGE_STRING);
@@ -118,7 +128,7 @@ void ui_signal_add_to_list(gpointer data, gpointer user_data)
     if ((ui_main_data.path_last == NULL) || (path == NULL) || (gtk_tree_path_compare(ui_main_data.path_last, path) == 0))
     {
         /* Advance to the new last signal */
-        ui_callback_signal_go_to_last (NULL, NULL, NULL);
+        ui_callback_signal_go_to_last (NULL, NULL);
     }
 }
 
@@ -237,7 +247,7 @@ gboolean ui_pipe_callback(gint source, gpointer user_data)
     return FALSE;
 }
 
-gboolean ui_callback_on_connect(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_on_connect(GtkWidget *widget, gpointer data)
 {
     /* We have to retrieve the ip address and port of remote host */
     const char *ip;
@@ -263,7 +273,7 @@ gboolean ui_callback_on_connect(GtkWidget *widget, GdkEvent *event, gpointer dat
     /* Disable the connect button */
     ui_disable_connect_button ();
 
-    ui_callback_signal_clear_list (widget, event, data);
+    ui_callback_signal_clear_list (widget, data);
 
     if (socket_connect_to_remote_host (ip, port, pipe_fd[1]) != 0)
     {
@@ -275,7 +285,7 @@ gboolean ui_callback_on_connect(GtkWidget *widget, GdkEvent *event, gpointer dat
     return TRUE;
 }
 
-gboolean ui_callback_on_disconnect(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_on_disconnect(GtkWidget *widget, gpointer data)
 {
     /* We have to retrieve the ip address and port of remote host */
 
@@ -287,19 +297,19 @@ gboolean ui_callback_on_disconnect(GtkWidget *widget, GdkEvent *event, gpointer
     return TRUE;
 }
 
-gboolean ui_callback_signal_go_to(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_signal_go_to(GtkWidget *widget, gpointer data)
 {
     ui_tree_view_select_row (ui_main_data.nb_message_received / 2, NULL);
     return TRUE;
 }
 
-gboolean ui_callback_signal_go_to_first(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_signal_go_to_first(GtkWidget *widget, gpointer data)
 {
     ui_tree_view_select_row (0, NULL);
     return TRUE;
 }
 
-gboolean ui_callback_signal_go_to_last(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_signal_go_to_last(GtkWidget *widget, gpointer data)
 {
     GtkTreePath *path;
 
@@ -309,7 +319,7 @@ gboolean ui_callback_signal_go_to_last(GtkWidget *widget, GdkEvent *event, gpoin
     return TRUE;
 }
 
-gboolean ui_callback_signal_clear_list(GtkWidget *widget, GdkEvent *event, gpointer data)
+gboolean ui_callback_signal_clear_list(GtkWidget *widget, gpointer data)
 {
     /* Disable buttons to move in the list of signals */
     ui_set_sensitive_move_buttons (FALSE);
@@ -317,6 +327,46 @@ gboolean ui_callback_signal_clear_list(GtkWidget *widget, GdkEvent *event, gpoin
 
     /* Clear list of signals */
     ui_tree_view_destroy_list (ui_main_data.signalslist);
+
+    /*
+    if (ui_main_data.text_view != NULL)
+    {
+        ui_signal_dissect_clear_view(ui_main_data.text_view);
+    }
+    */
+
+    return TRUE;
+}
+
+static void ui_callback_on_menu_items_selected(GtkWidget *widget, gpointer data)
+{
+    gboolean active = data !=  NULL;
+
+    if (GTK_IS_CHECK_MENU_ITEM(widget))
+    {
+        gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(widget), active);
+    }
+}
+
+gboolean ui_callback_on_menu_none(GtkWidget *widget, gpointer data)
+{
+    GtkWidget *menu = (GtkWidget *) data;
+
+    g_debug("ui_callback_on_menu_none occurred %lx %lx)", (long) widget, (long) data);
+
+    gtk_container_foreach(GTK_CONTAINER(menu), ui_callback_on_menu_items_selected, (gpointer) FALSE);
+
+    return TRUE;
+}
+
+gboolean ui_callback_on_menu_all(GtkWidget *widget, gpointer data)
+{
+    GtkWidget *menu = (GtkWidget *) data;
+
+    g_debug("ui_callback_on_menu_all occurred %lx %lx)", (long) widget, (long) data);
+
+    gtk_container_foreach(GTK_CONTAINER(menu), ui_callback_on_menu_items_selected, (gpointer) TRUE);
+
     return TRUE;
 }
 
@@ -331,7 +381,7 @@ gboolean ui_callback_on_menu_item_selected(GtkWidget *widget, gpointer data)
         filter_entry->enabled = enabled;
         ui_tree_view_refilter ();
     }
-    // g_debug("ui_callback_on_menu_item_selected occurred %x %x %s %d (%d messages to display)", (int) widget, (int) data, filter_entry->name, enabled, ui_tree_view_get_filtered_number());
+    g_debug("ui_callback_on_menu_item_selected occurred %lx %lx %s %d (%d messages to display)", (long) widget, (long) data, filter_entry->name, enabled, ui_tree_view_get_filtered_number());
 
     return TRUE;
 }
@@ -340,7 +390,7 @@ gboolean ui_callback_on_tree_column_header_click(GtkWidget *widget, gpointer dat
 {
     col_type_e col = (col_type_e) data;
 
-    // g_debug("ui_callback_on_tree_column_header_click %x", col);
+    g_debug("ui_callback_on_tree_column_header_click %x", col);
     switch (col)
     {
         case COL_SIGNAL:
diff --git a/common/utils/itti_analyzer/libui/ui_callbacks.h b/common/utils/itti_analyzer/libui/ui_callbacks.h
index 5407fb52c65d281682d988d836315589ab5e4a4d..ca668b6716483888a261846f4cce000f41cb9fdd 100644
--- a/common/utils/itti_analyzer/libui/ui_callbacks.h
+++ b/common/utils/itti_analyzer/libui/ui_callbacks.h
@@ -4,34 +4,27 @@
 #include <gtk/gtk.h>
 
 gboolean ui_callback_on_open_messages(GtkWidget *widget,
-                                      GdkEvent  *event,
                                       gpointer   data);
 
 gboolean ui_callback_on_save_messages(GtkWidget *widget,
-                                      GdkEvent  *event,
                                       gpointer   data);
 
 gboolean ui_callback_on_open_filters(GtkWidget *widget,
-                                     GdkEvent *event,
                                      gpointer data);
 
 gboolean ui_callback_on_save_filters(GtkWidget *widget,
-                                     GdkEvent *event,
                                      gpointer data);
 
 gboolean ui_callback_on_about(GtkWidget *widget,
-                              GdkEvent  *event,
                               gpointer   data);
 
 void ui_signal_add_to_list(gpointer data,
                            gpointer user_data);
 
 gboolean ui_callback_on_connect(GtkWidget *widget,
-                                GdkEvent  *event,
                                 gpointer   data);
 
 gboolean ui_callback_on_disconnect(GtkWidget *widget,
-                                   GdkEvent  *event,
                                    gpointer   data);
 
 gboolean ui_callback_on_tree_view_select(GtkWidget *widget,
@@ -46,23 +39,25 @@ ui_callback_on_select_signal(GtkTreeSelection *selection,
                              gpointer          userdata);
 
 gboolean ui_callback_signal_go_to(GtkWidget *widget,
-                                  GdkEvent  *event,
                                   gpointer   data);
 
 gboolean ui_callback_signal_go_to_first(GtkWidget *widget,
-                                        GdkEvent  *event,
                                         gpointer   data);
 
 gboolean ui_callback_signal_go_to_last(GtkWidget *widget,
-                                       GdkEvent  *event,
                                        gpointer   data);
 
 gboolean ui_callback_signal_clear_list(GtkWidget *widget,
-                                       GdkEvent  *event,
                                        gpointer   data);
 
 gboolean ui_pipe_callback(gint source, gpointer user_data);
 
+gboolean ui_callback_on_menu_none(GtkWidget *widget,
+                                  gpointer data);
+
+gboolean ui_callback_on_menu_all(GtkWidget *widget,
+                                 gpointer data);
+
 gboolean ui_callback_on_menu_item_selected(GtkWidget *widget,
                                            gpointer data);
 
diff --git a/common/utils/itti_analyzer/libui/ui_filters.c b/common/utils/itti_analyzer/libui/ui_filters.c
index cda77d38c535cf08193cfb61748c222c8240191a..938f1de7be6cac130f8a2032fa299915ea1aff4a 100644
--- a/common/utils/itti_analyzer/libui/ui_filters.c
+++ b/common/utils/itti_analyzer/libui/ui_filters.c
@@ -75,6 +75,7 @@ static int ui_search_name(ui_filter_t *filter, const char *name)
     return (item);
 }
 
+/*
 static int ui_search_id(ui_filter_t *filter, uint32_t value)
 {
     int item;
@@ -89,6 +90,7 @@ static int ui_search_id(ui_filter_t *filter, uint32_t value)
 
     return (item);
 }
+*/
 
 static void ui_filter_set_enabled(uint8_t *enabled, ui_entry_enabled_e entry_enabled, gboolean new)
 {
@@ -240,7 +242,7 @@ static int xml_parse_filters(xmlDocPtr doc)
                 if (filter_node != NULL)
                 {
                     filter = ui_filter_from_name ((const char*) filter_node->name);
-                    // g_debug ("Found filter %s %d", filter_node->name, filter);
+                    g_debug ("Found filter %s %d", filter_node->name, filter);
 
                     if (filter == FILTER_UNKNOWN)
                     {
@@ -258,7 +260,7 @@ static int xml_parse_filters(xmlDocPtr doc)
 
                             if (cur_node != NULL)
                             {
-                                // g_debug("  Found entry %s %s", cur_node->name, cur_node->properties->children->content);
+                                g_debug("  Found entry %s %s", cur_node->name, cur_node->properties->children->content);
                                 ui_filters_add (
                                         filter,
                                         FILTER_ID_UNDEFINED,
@@ -370,35 +372,90 @@ static void ui_create_filter_menu(GtkWidget **menu, ui_filter_t *filter)
     int item;
     gpointer data;
 
-    *menu = gtk_menu_new ();
+    *menu = gtk_menu_new();
 
+    /* Create the "NONE" menu-item */
+    {
+        /* Create a new menu-item with a name */
+        menu_items = gtk_menu_item_new_with_label("NONE");
+
+        /* Add it to the menu. */
+        gtk_menu_shell_append(GTK_MENU_SHELL(*menu), menu_items);
+
+        g_debug("ui_create_filter_menu %lx", (long) menu_items);
+        g_signal_connect(G_OBJECT(menu_items), "activate",
+                G_CALLBACK(ui_callback_on_menu_none), *menu);
+
+        /* Show the widget */
+        gtk_widget_show(menu_items);
+    }
+
+    /* Create the "ALL" menu-item */
+    {
+        /* Create a new menu-item with a name */
+        menu_items = gtk_menu_item_new_with_label("ALL");
+
+        /* Add it to the menu. */
+        gtk_menu_shell_append(GTK_MENU_SHELL(*menu), menu_items);
+
+        g_debug("ui_create_filter_menu %lx", (long) menu_items);
+        g_signal_connect(G_OBJECT(menu_items), "activate",
+                G_CALLBACK(ui_callback_on_menu_all), *menu);
+
+        /* Show the widget */
+        gtk_widget_show(menu_items);
+    }
+
+    /* Create separator */
+    {
+        menu_items = gtk_menu_item_new();
+
+        /* Add it to the menu. */
+        gtk_menu_shell_append(GTK_MENU_SHELL(*menu), menu_items);
+
+        /* Show the widget */
+        gtk_widget_show(menu_items);
+    }
+
+    /* Creates menu-items */
     for (item = 0; item < filter->used; item++)
     {
         /* Create a new menu-item with a name */
-        menu_items = gtk_check_menu_item_new_with_label (filter->items[item].name);
+        menu_items = gtk_check_menu_item_new_with_label(
+                filter->items[item].name);
 
         /* Add it to the menu. */
-        gtk_menu_shell_append (GTK_MENU_SHELL (*menu), menu_items);
+        gtk_menu_shell_append(GTK_MENU_SHELL(*menu), menu_items);
 
-        gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_items), filter->items[item].enabled);
+        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_items),
+                filter->items[item].enabled);
 
         /* Connect function to be called when the menu item is selected */
         data = &filter->items[item];
-        // g_debug("ui_create_filter_menu %x %x", (int) menu_items, (int) data);
-        g_signal_connect(G_OBJECT (menu_items), "activate", G_CALLBACK(ui_callback_on_menu_item_selected), data);
+        g_debug("ui_create_filter_menu %lx %lx", (long) menu_items, (long) data);
+        g_signal_connect(G_OBJECT(menu_items), "activate",
+                G_CALLBACK(ui_callback_on_menu_item_selected), data);
 
         /* Show the widget */
-        gtk_widget_show (menu_items);
+        gtk_widget_show(menu_items);
     }
 }
 
-static void ui_destroy_filter_menu(GtkWidget **menu, ui_filter_t *filter)
+static void ui_destroy_filter_menu_item(GtkWidget *widget, gpointer data)
 {
-    /* TODO destroy menu items ? */
+    if (GTK_IS_MENU_ITEM(widget))
+    {
+        gtk_widget_destroy(widget);
+    }
+}
 
+static void ui_destroy_filter_menu(GtkWidget **menu, ui_filter_t *filter)
+{
     if (*menu != NULL)
     {
-        gtk_widget_destroy (*menu);
+        gtk_container_foreach(GTK_CONTAINER(*menu), ui_destroy_filter_menu_item, NULL);
+
+        gtk_widget_destroy(*menu);
         *menu = NULL;
     }
 }
diff --git a/common/utils/itti_analyzer/libui/ui_menu_bar.c b/common/utils/itti_analyzer/libui/ui_menu_bar.c
index 50a53c26a696c38e4bfda1514617ebaddbee8416..8b7f6006da5f5ce179878372a0df9eecff91d8a1 100644
--- a/common/utils/itti_analyzer/libui/ui_menu_bar.c
+++ b/common/utils/itti_analyzer/libui/ui_menu_bar.c
@@ -138,7 +138,17 @@ int ui_toolbar_create(GtkWidget *vbox)
                                     "Open messages file");
 
         g_signal_connect(G_OBJECT(ui_main_data.open_replay_file), "clicked",
-                        G_CALLBACK(ui_callback_on_open_messages), NULL);
+                        G_CALLBACK(ui_callback_on_open_messages), (gpointer) FALSE);
+    }
+
+    /* Button to refresh replay file */
+    {
+        ui_main_data.refresh_replay_file = gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
+        gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(ui_main_data.refresh_replay_file),
+                                    "Reload messages file");
+
+        g_signal_connect(G_OBJECT(ui_main_data.refresh_replay_file), "clicked",
+                        G_CALLBACK(ui_callback_on_open_messages), (gpointer) TRUE);
     }
 
     /* Button to save replay file */
@@ -238,6 +248,7 @@ int ui_toolbar_create(GtkWidget *vbox)
 
     gtk_box_pack_start(GTK_BOX(hbox), messages_label, FALSE, FALSE, LABEL_SPACE);
     gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.open_replay_file), FALSE, FALSE, BUTTON_SPACE);
+    gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.refresh_replay_file), FALSE, FALSE, BUTTON_SPACE);
     gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(ui_main_data.save_replay_file), FALSE, FALSE, BUTTON_SPACE);
 
     gtk_box_pack_start(GTK_BOX(hbox), gtk_separator_new(GTK_ORIENTATION_VERTICAL), FALSE, FALSE, SEPARATOR_SPACE);
diff --git a/common/utils/itti_analyzer/libui/ui_notifications.c b/common/utils/itti_analyzer/libui/ui_notifications.c
index d8f024bc78aa93bbdb18a3ec81dd070bf57a19c6..7b1bbe86000d29bcb57e3ad3114df02f6ef5d9be 100644
--- a/common/utils/itti_analyzer/libui/ui_notifications.c
+++ b/common/utils/itti_analyzer/libui/ui_notifications.c
@@ -89,7 +89,7 @@ int ui_messages_read(char *filename)
     {
         itti_socket_header_t message_header;
 
-        ui_callback_signal_clear_list (NULL, NULL, NULL);
+        ui_callback_signal_clear_list (NULL, NULL);
 
         do
         {
@@ -107,7 +107,7 @@ int ui_messages_read(char *filename)
             {
                 input_data_length = message_header.message_size - sizeof(itti_socket_header_t);
 
-                // g_debug ("%x, %x ,%x", message_header.message_type, message_header.message_size, input_data_length);
+                g_debug ("%x, %x ,%x", message_header.message_type, message_header.message_size, input_data_length);
 
                 /* Checking for non-header part */
                 if (input_data_length > 0)