method message_refinment boxRoot = (
          if(is_an_atom || (car decomp_message)="inv")
        then (
                    let label_1 = Label.create ~text:(transcript_receiver_for_intruder agent_name message) ~height:1 f_center_top in
                    let l = Label.create ~text:"No match" ~foreground:violet ~width:7 ~background:selcol f_center_top in
                pack ~side:`Left ~fill:`Y ~expand:true [f_center];
                pack ~side:`Top ~fill:`Both ~expand:false [f_center_top];
                pack ~side:`Top ~fill:`X ~expand:false [label_1];
                pack ~side:`Top ~fill:`Both ~expand:false [l];
                let button_unrefinment = Button.create ~text:"<" ~command:(fun () ->
                              l0_rec := "" ; 
                        (*update_entry intruder_name intruder_state agent_name message ";*)
                        del_entry message entry_1;
                              (match parent with None -> ()
                              |Some p -> p#init);
                              ) f_center_top
                in
                 (match parent with None -> ()
                              |Some _ -> pack ~side:`Left ~fill:`X [button_unrefinment]);
            )
        else 
          if((car decomp_message)="pair")
        then ( 
                pack ~side:`Top ~fill:`Y ~expand:false [l];
                pack ~side:`Left ~fill:`Y ~expand:true [f_center];
                let f_center_box = Frame.create f_center in
                pack ~side:`Left ~fill:`Y ~expand:true [f_center_box];
                let w1 = Some (new  box f_center_box intruder_name agent_name intruder_state (cadr decomp_message) boxRoot) in
                        match w1 with None -> ()
                                |Some obj_box -> obj_box#init;
                l_w <- w1::l_w;
                let frame_mark = Frame.create f_center in
                let label_vide = Label.create ~text:"." ~background:defcol ~foreground:blue frame_mark in
                let mark = Label.create ~text:"." ~background:defcol ~foreground:blue frame_mark in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_mark];
                pack ~side:`Top ~fill:`Y ~expand:false [label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [mark];
                let f_center_box2 = Frame.create f_center in
                pack ~side:`Left ~fill:`Y ~expand:true [f_center_box2];
                let w2 = Some (new  box f_center_box2 intruder_name agent_name intruder_state (caddr decomp_message) boxRoot) in
                match w2 with None -> ()
                        |Some obj_box -> obj_box#init;
                        l_w <- w2::l_w;
        )
        else if((car decomp_message)="scrypt" || (car decomp_message)="crypt")
        then (
                let col_par = getcol() in
                pack ~side:`Top ~fill:`Y ~expand:false [l];
                pack ~side:`Left ~fill:`Y ~expand:true [f_center];
                let frame_left_par = Frame.create f_center in
                let left_par_label_vide = Label.create ~text:"{" ~foreground:violet ~background:col_par frame_left_par in
                let left_par = Label.create ~text:"{" ~foreground:violet ~background:col_par frame_left_par in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_left_par];
                pack ~side:`Top ~fill:`Y ~expand:false [left_par_label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [left_par];
                let f_center_box = Frame.create f_center in
                pack ~side:`Left ~fill:`Y ~expand:true [f_center_box];
                let w1 = Some (new  box f_center_box intruder_name agent_name intruder_state (caddr decomp_message) boxRoot) in
                        match w1 with None -> ()
                                |Some obj_box -> obj_box#init;
                l_w <- w1::l_w;
                let frame_right_par = Frame.create f_center in
                let right_par_label_vide = Label.create ~text:"}" ~foreground:violet ~background:col_par frame_right_par in
                let right_par = Label.create ~text:"}" ~foreground:violet ~background:col_par frame_right_par in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_right_par];
                pack ~side:`Top ~fill:`Y ~expand:false [right_par_label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [right_par];
                let frame_mark = Frame.create f_center in
                let label_vide = Label.create ~text:"_" ~background:defcol ~foreground:blue frame_mark in
                let mark = Label.create ~text:"_" ~background:defcol ~foreground:blue frame_mark in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_mark];
                pack ~side:`Top ~fill:`Y ~expand:false [label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [mark];
                let f_center_box2 = Frame.create f_center in
                pack ~side:`Left ~fill:`Y ~expand:true [f_center_box2];
                let w2 = Some (new  box f_center_box2 intruder_name agent_name intruder_state (cadr decomp_message) boxRoot) in
                match w2 with None -> ()
                        |Some obj_box -> obj_box#init;
                        l_w <- w2::l_w;
        )
        else if(((car decomp_message)="exp"|| ((car decomp_message)="xor"))
        then (
                let col_par = getcol() in
                let label_vide1 = Label.create f_left_top ~text:(car decomp_message) ~background:defcol ~foreground:blue in
                Label.configure l ~text:(car decomp_message) ~background:defcol ~foreground:blue;
                pack ~side:`Top ~fill:`Y ~expand:true [f_left_top];
                pack ~side:`Top ~fill:`Y ~expand:false [label_vide1];
                pack ~side:`Top ~fill:`Y ~expand:false [l];
                pack ~side:`Top ~fill:`Y ~expand:true [f_left_down];
                pack ~side:`Left ~fill:`Y ~expand:true [f_center];
                let frame_left_par = Frame.create f_center in
                let left_par_label_vide = Label.create ~text:"(" ~foreground:violet ~width:1 ~background:col_par frame_left_par in
                let left_par = Label.create ~text:"(" ~foreground:violet ~width:1 ~background:col_par frame_left_par in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_left_par];
                pack ~side:`Top ~fill:`Y ~expand:false [left_par_label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [left_par];
                let nb = ref (List.length decomp_message) in
                List.iter
                (fun m ->  
                        let f_center_box = Frame.create f_center in
                        pack ~side:`Left ~fill:`Y ~expand:true [f_center_box];
                        let w1 = Some (new  box f_center_box intruder_name agent_name intruder_state m boxRoot) in
                        match w1 with None -> ()
                                |Some obj_box -> obj_box#init;
                        l_w <- w1::l_w;
                        if(!nb > 2) then(
                                let frame_mark = Frame.create f_center in
                                let label_vide2 = Label.create ~text:"," ~background:defcol ~foreground:blue frame_mark in
                                let mark = Label.create ~text:"," ~background:defcol ~foreground:blue frame_mark in
                                pack ~side:`Left ~fill:`Y ~expand:true [frame_mark];
                                pack ~side:`Top ~fill:`Y ~expand:false [label_vide2];
                                pack ~side:`Top ~fill:`Y ~expand:false [mark];
                                nb:=(!nb)-1
                        )
                )
                (cdr decomp_message);
                let frame_right_par = Frame.create f_center in
                let right_par_label_vide = Label.create ~text:")" ~foreground:violet ~background:col_par frame_right_par in
                let right_par = Label.create ~text:")" ~foreground:violet ~background:col_par frame_right_par in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_right_par];
                pack ~side:`Top ~fill:`Y ~expand:false [right_par_label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [right_par];   
        )
        else if ((car decomp_message)="apply")
        then(
                let col_par = getcol() in
                let label_vide1 = Label.create f_left_top ~text:(cadr decomp_message) ~background:violet ~foreground:violet in
                Label.configure l ~text:(cadr decomp_message) ~background:violet ~foreground:violet;
                pack ~side:`Top ~fill:`Y ~expand:true [f_left_top];
                pack ~side:`Top ~fill:`Y ~expand:false [label_vide1];
                pack ~side:`Top ~fill:`Y ~expand:false [l];
                pack ~side:`Top ~fill:`Y ~expand:true [f_left_down];
                pack ~side:`Left ~fill:`Y ~expand:true [f_center];
                let frame_left_par = Frame.create f_center in
                let left_par_label_vide = Label.create ~text:"(" ~foreground:violet ~background:col_par frame_left_par in
                let left_par = Label.create ~text:"(" ~foreground:violet ~background:col_par frame_left_par in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_left_par];
                pack ~side:`Top ~fill:`Y ~expand:false [left_par_label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [left_par];
                let nb = ref (List.length decomp_message) in
                List.iter
                (fun m ->
                        let f_center_box = Frame.create f_center in
                        pack ~side:`Left ~fill:`Y ~expand:true [f_center_box];
                        let w1 = Some (new  box f_center_box intruder_name agent_name intruder_state m boxRoot) in
                        match w1 with None -> ()
                                |Some obj_box -> obj_box#init;
                        l_w <- w1::l_w;
                        if(!nb > 3) then(
                        let frame_mark = Frame.create f_center in
                        let label_vide2 = Label.create frame_mark ~text:" " in
                        let mark = Label.create ~text:"," ~background:defcol ~foreground:blue frame_mark in
                        pack ~side:`Left ~fill:`Y ~expand:true [frame_mark];
                        pack ~side:`Top ~fill:`Y ~expand:false [label_vide2];
                        pack ~side:`Top ~fill:`Y ~expand:false [mark];
                        nb:=(!nb)-1
                        )
                )
                (cddr decomp_message);
                let frame_right_par = Frame.create f_center in
                let right_par_label_vide = Label.create ~text:")" ~foreground:violet ~background:col_par frame_right_par in
                let right_par = Label.create ~text:")" ~foreground:violet ~background:col_par frame_right_par in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_right_par];
                pack ~side:`Top ~fill:`Y ~expand:false [right_par_label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [right_par];
            
        )
        else if((cdr decomp_message)<>[])
        then (
                let col_par = getcol() in
                pack ~side:`Top ~fill:`Y ~expand:false [l];
                pack ~side:`Left ~fill:`Y ~expand:true [f_center];
                
                let w1 = Some (new  box f_center intruder_name agent_name intruder_state (car decomp_message) boxRoot) in
                match w1 with None -> ()
                        |Some obj_box -> obj_box#init;
                l_w <- w1::l_w;
                let frame_left_par = Frame.create f_center in
                let left_par_label_vide = Label.create ~text:"(" ~foreground:col_par ~background:clicol frame_left_par in
                let left_par = Label.create ~text:"(" ~foreground:col_par ~background:clicol frame_left_par in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_left_par];
                pack ~side:`Top ~fill:`Y ~expand:false [left_par_label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [left_par];
                let nb = ref (List.length decomp_message) in
                List.iter
                (fun m ->  
                        let f_center_box = Frame.create f_center in
                        pack ~side:`Left ~fill:`Y ~expand:true [f_center_box];
                        let w1 = Some (new  box f_center_box intruder_name agent_name intruder_state m boxRoot) in
                        match w1 with None -> ()
                                |Some obj_box -> obj_box#init;
                        l_w <- w1::l_w;
                        if(!nb > 2) then(
                                let frame_mark = Frame.create f_center in
                                let label_vide2 = Label.create frame_mark ~text:" " in
                                let mark = Label.create ~text:"," ~background:defcol ~foreground:blue frame_mark in
                                pack ~side:`Left ~fill:`Y ~expand:true [frame_mark];
                                pack ~side:`Top ~fill:`Y ~expand:false [label_vide2];
                                pack ~side:`Top ~fill:`Y ~expand:false [mark];
                                nb:=(!nb)-1
                        )
                )
                (cdr decomp_message);
                let frame_right_par = Frame.create f_center in
                let right_par_label_vide = Label.create ~text:")" ~foreground:col_par ~background:clicol frame_right_par in
                let right_par = Label.create ~text:")" ~foreground:col_par ~background:clicol frame_right_par in
                pack ~side:`Left ~fill:`Y ~expand:true [frame_right_par];
                pack ~side:`Top ~fill:`Y ~expand:false [right_par_label_vide];
                pack ~side:`Top ~fill:`Y ~expand:false [right_par];   
        );
  )