let previousButton = (Button.create ~text:"< Previous step" ~width:10
        ~command:(fun() -> 
        let rec trace_story_adjust () =
                        match (!trace_story) with [] -> ()
                                |(x::ls) ->         if(not(containStr "->" x))
                                                then (next_story:=(car (!trace_story))::(!next_story) ; trace_story := ls ; trace_story_adjust ());
                in 

        if((!tag_number)>0) then(
                Button.configure goButton ~state:`Normal;
                remove_graphics_obj ();
                previous_id_refresh_story ();
                previous_tag_number ();
                previous_yAction ();
                clear_message_story ();
                previous_state();
                previous_variable_state ();
                previous_message_stack ();
                if(!intruder_mode) then (trace_story_adjust (); update_intruder_knowledge () ; display_intruder_knowledge());
                let (sender, receiver, _) = actionTreatment  (car (!trace_story)) in
                next_story:=(car (!trace_story))::(!next_story);
                trace_story := (cdr (!trace_story));
                insert_lst sender receiver ;
                Listbox.delete story ~first:`End ~last:`End;
                click := (-1))
        else         if(!intruder_mode && (!tag_number)=0 && (!trace_story)<>[]) then(
                Button.configure goButton ~state:`Normal;
                next_story:=(car (!trace_story))::(!next_story);
                trace_story := (cdr (!trace_story));
                previous_state();
                previous_message_stack ();
                previous_variable_state ();
                trace_story_adjust (); 
                update_intruder_knowledge () ; 
                display_intruder_knowledge();
                );
        )
        buttonFrame : Widget.button Widget.widget)