diff --git a/navig.html b/navig.html
index 4f989052e8a47fb2b4a1862b5b42f2122e75ba36..41f239d8a6dc54b2a514f9b23624186cd3039d18 100644
--- a/navig.html
+++ b/navig.html
@@ -127,11 +127,14 @@ Reach condition:
      var timeoutID = window.setTimeout(function() { $("#reach_output").html(""); }, 1000);
    });
 
-   // Assumes tracer_files to be a string containing the source code
+   // Assumes tracer_files to be an array of objects with two field:
+   // - file, containing the name of the file,
+   // - contents, a string containing its source code
 
    // Assumes tracer_items to be an array with items, e.g.:
-   // { type: 'enter_call', file: 'foo.ml', start_line: 4, start_col: 0, end_line: 5, end_col: 10 },
-   // { type: 'exit_call', file: 'foo.ml', start_line: 4, start_col: 0, end_line: 5, end_col: 10 },
+   // { type: 'enter', file: 'foo.ml', start_line: 4, start_col: 0, end_line: 5, end_col: 10 },
+   // { type: 'exit', file: 'foo.ml', start_line: 4, start_col: 0, end_line: 5, end_col: 10 },
+   // { type: 'other_event', file: 'foo.ml', start_line: 4, start_col: 0, end_line: 5, end_col: 10 },
 
    function tracer_valid_pos(i) {
       return (i >= 0 && i < tracer_length);
@@ -142,20 +145,19 @@ Reach condition:
       var i = tracer_pos;
       i += dir; 
       if (! tracer_valid_pos(i)) 
-         return; // not found
+         return; // not found, we don’t update the tracer position.
       tracer_pos = i;
    }
-   
+
    // dir is -1 or +1,
-   // target is 0 for (next/prev) 
-   // or -1 (finish)
+   // target (= target depth) is 0 for (next/prev) or -1 (finish)
    function shared_next(dir, target) { 
       var i = tracer_pos;
       var depth = 0;
       var ty = tracer_items[i].type;
-      if (dir == +1 && ty == 'exit_call') {
+      if (dir === +1 && ty === 'exit') {
          depth = 1;
-      } else if (dir == -1 && ty == 'enter_call') {
+      } else if (dir === -1 && ty === 'enter') {
          depth = -1;
       } 
       while (true) {
@@ -163,14 +165,14 @@ Reach condition:
             tracer_pos = i - dir; // just before out of range
             return; // not found
          }
-         if (i != tracer_pos && depth == target) {
+         if (i !== tracer_pos && depth === target) {
             tracer_pos = i;
             return;
          }
          var ty = tracer_items[i].type;
-         if (ty == 'enter_call') {
+         if (ty === 'enter') {
             depth++;
-         } else if (ty == 'exit_call') {
+         } else if (ty === 'exit') {
             depth--;
          }
          i += dir; 
@@ -187,15 +189,16 @@ Reach condition:
    var curfile = '';
 
    var docs = {};
-   for (file in tracer_files) {
-      var txt = tracer_files[file];
+   for (var i = 0; i < tracer_files.length; i++) {
+      var file = tracer_files[i].file;
+      var txt = tracer_files[i].contents;
       docs[file] = CodeMirror.Doc(txt, 'js');
    }
 
    var editor = null;
 
    function viewFile(file) {
-      if (curfile != file) {
+      if (curfile !== file) {
          curfile = file;
          editor.swapDoc(docs[curfile]);
          editor.focus();
@@ -205,7 +208,8 @@ Reach condition:
 
    function updateFileList() {
       var s = '';
-      for (file in tracer_files) {
+      for (var i = 0; i < tracer_files.length; i++) {
+         var file = tracer_files[i].file;
          s += "<span class=\"file_item" + ((curfile == file) ? '_current' : '') + "\" onclick=\"viewFile('" + file + "')\">" + file + "</span> ";
       }
       $('#file_list').html(s);
@@ -219,7 +223,7 @@ Reach condition:
 
       console.log("pos: " + tracer_pos);
       var ty = tracer_items[tracer_pos].type;
-      var color = (ty == 'enter_call') ? '#F3F781' : '#CCCCCC';
+      var color = (ty === 'enter') ? '#F3F781' : '#CCCCCC';
       //console.log("color " + color);
       $('.CodeMirror-selected').css({ background: color });
       $('.CodeMirror-focused .CodeMirror-selected').css({ background: color });
@@ -250,10 +254,10 @@ Reach condition:
       var txt = editor.getLine(line);
       var prefix = "#sec-";
       var pos_start = txt.indexOf(prefix);
-      if (pos_start == -1)
+      if (pos_start === -1)
          return;
       var pos_end = txt.indexOf("*", pos_start);
-      if (pos_end == -1)
+      if (pos_end === -1)
          return;
       var sec = txt.substring(pos_start, pos_end);
       var url = "http://www.ecma-international.org/ecma-262/5.1/" + sec;