diff --git a/test/meshviewer_index.html b/test/meshviewer_index.html
index ceac7c5f..cd942195 100644
--- a/test/meshviewer_index.html
+++ b/test/meshviewer_index.html
@@ -63,7 +63,7 @@ progress::-webkit-progress-value
 {
     position: relative;
 }
-#id_div_embed_data
+#id_div_frame_embed
 {
     position: absolute;
     top: 2px;
@@ -82,10 +82,12 @@ progress::-webkit-progress-value
 
 <title>Mesh Viewer NaCl</title>
 
+</head>
+
 <script type="text/javascript">
     //Base data Setup
-    g_div_embed_data_save   = '';
-    g_div_embed_data        = null;  // Global application object.
+    g_div_frame_embed_save   = '';
+    g_div_frame_embed        = null;  // Global application object.
     g_embed_nacl_module     = null;  // Global application object.
     g_txtarea_code_src      = null;
     g_div_helper_cmd        = [null, null];
@@ -99,15 +101,15 @@ progress::-webkit-progress-value
     g_var_progress_bar      = -1;
     g_frame_embed           = null;
 
-    function GetNaClListenerDiv()   { return document.getElementById('id_div_listener'); }
+    function GetNaClListenerDiv()   { return g_frame_embed.contentDocument.getElementById('id_div_embed_data'); }
     function GetNaClModuleVar()     { return g_embed_nacl_module; }
-    function InitNaClModuleVar()    { g_embed_nacl_module = document.getElementById('id_embed_nacl_module'); }
+    function InitNaClModuleVar()    { g_embed_nacl_module = g_frame_embed.contentDocument.getElementById('id_embed_nacl_module'); }
     function GetTextAreaCodeSrc()   { return g_txtarea_code_src; }
     function GetDivProgress()       { return g_div_progress; }
     function GetProgressBar()       { return g_progress_bar; }
     function GetDivProgressStatus() { return g_div_progress_status; }
-    function GetDivEmbedData()      { return g_div_embed_data; }
-    function GetDivEmbedDataSave()  { return g_div_embed_data_save; }
+    function GetDivEmbedData()      { return g_div_frame_embed; }
+    function GetDivEmbedDataSave()  { return g_div_frame_embed_save; }
     function GetFrameData()         { return g_frame_embed; }
     function IsUsingNaCl()          { return true; }
 </script>
@@ -121,22 +123,15 @@ progress::-webkit-progress-value
 <script src="./nacl_loading.js"></script>
 
 <script type="text/javascript">
-    //Init should always start before the first tick
-    window.setTimeout("Init()", 100);
-    window.setTimeout("Tick()", 200);
-    window.setTimeout("UpdateEmbed()", 2000);
-
-	function UpdateEmbed()
-	{
-		window.setTimeout("UpdateEmbed()", 2000);
-		g_frame_embed.contentDocument.location.reload(true);
-	}
-
     //Base init for all datas
     function Init()
     {
-        g_div_embed_data        = document.getElementById('id_div_embed_data');
-		g_frame_embed           = document.getElementById('id_frame_embed');
+        alert('INIT PROUT');
+        //Init frame variable first.
+        g_frame_embed           = document.getElementById('id_frame_embed');
+        //This is in an iframe.
+        g_div_frame_embed       = g_frame_embed.contentDocument.getElementById('id_div_frame_embed');
+        //The rest of these are in this page.
         g_txtarea_code_src      = document.getElementById('id_txtarea_code_src');
         g_div_helper_cmd[0]     = document.getElementById('id_div_helper_cmd_0');
         g_div_helper_cmd[1]     = document.getElementById('id_div_helper_cmd_1');
@@ -148,22 +143,32 @@ progress::-webkit-progress-value
         g_div_progress_status   = document.getElementById('id_div_progress_status');
         g_progress_bar          = document.getElementById('id_progress_bar');
 
+        //Pulg here any cookie update
+        if (!g_txtarea_code_src.value)
+            g_txtarea_code_src.value = "//This is a comment\nsc#f8f afcb 1 1 1 0";
+
         //Fill the TOC
-        g_div_alphabet.innerHTML = '&nbsp;Table of content<br>&nbsp;[';
-        var new_toc = BuildTOC(true);
-        var pattern = new RegExp("^[a-zA-Z\.]");
-        while (pattern.test(new_toc))
-            new_toc = new_toc.replace(pattern, "<b>$&");
-        pattern = new RegExp("[a-zA-Z\.]$");
-        while (pattern.test(new_toc))
-            new_toc = new_toc.replace(pattern, "$&</b>");
-        pattern = new RegExp("([a-zA-Z])([\.])");
-        while (pattern.test(new_toc))
-            new_toc = new_toc.replace(pattern, "$1</b>$2");
-        pattern = new RegExp("([\.])([a-zA-Z])");
-        while (pattern.test(new_toc))
-            new_toc = new_toc.replace(pattern, "$1<b>$2");
-        g_div_alphabet.innerHTML += new_toc + ']&nbsp;<br>&nbsp;';
+        if (!g_div_alphabet.innerHTML)
+        {
+            g_div_alphabet.innerHTML = '&nbsp;Table of content<br>&nbsp;[';
+            var new_toc = BuildTOC(true);
+            var pattern = new RegExp("^[a-zA-Z\.]");
+            while (pattern.test(new_toc))
+                new_toc = new_toc.replace(pattern, "<b>$&");
+            pattern = new RegExp("[a-zA-Z\.]$");
+            while (pattern.test(new_toc))
+                new_toc = new_toc.replace(pattern, "$&</b>");
+            pattern = new RegExp("([a-zA-Z])([\.])");
+            while (pattern.test(new_toc))
+                new_toc = new_toc.replace(pattern, "$1</b>$2");
+            pattern = new RegExp("([\.])([a-zA-Z])");
+            while (pattern.test(new_toc))
+                new_toc = new_toc.replace(pattern, "$1<b>$2");
+            g_div_alphabet.innerHTML += new_toc + ']&nbsp;<br>&nbsp;';
+        }
+
+        //Tick has been done, start Tick
+        window.setTimeout("Tick()", 200);
     }
 
     function Tick()
@@ -176,35 +181,35 @@ progress::-webkit-progress-value
         var div_vars = g_div_helper_vars;
         CmdLookup(div_cmds, div_args, div_cmnt, div_vars, text_src);
     }
+</script>
 
-  </script>
-</head>
-
-<body onload="PageDidLoad()">
+<body>
 
 <h1>Mesh Viewer : Native Client version.</h1>
+
 <p>
     <div id="final_div">
         <div id="id_div_listener" align="center" style="width:770px;height:200px">
             <canvas id="BGCanvas" width="772" height="202"></canvas>
             <div id="id_div_progress">
-				<br>&nbsp;
-				<progress id="id_progress_bar" align="left"></progress>
-				<div id="id_div_progress_status">....</div>&nbsp;
+                <br>&nbsp;
+                <progress id="id_progress_bar" align="left"></progress>
+                <div id="id_div_progress_status">....</div>&nbsp;
             </div>
-            <div id="id_div_embed_data">
-				<iframe id="id_frame_embed" src="meshviewer_nacl.html" width=770 height=200 frameborder=0 scrolling=no></iframe>
+            <div id="id_div_frame_embed">
+                <iframe onload="Init(); PageDidLoad();" id="id_frame_embed" src="meshviewer_nacl.html" width=770 height=200 frameborder=0 scrolling=no></iframe>
             </div>
         </div>
     </div>
 </p>
+
 <div><button onclick="SendMessageToModule()">Send Mesh Command !</button></div>
+
 <table border="0" cellpadding="0" cellspacing="0">
     <tr>
         <td>
             <div id="bouton">
-                <textarea autofocus id="id_txtarea_code_src" rows="6" cols="94" style="font: 14px Consolas; resize: none;">//This is a comment
-sc#f8f afcb 1 1 1 0</textarea>
+                <textarea autofocus id="id_txtarea_code_src" rows="6" cols="94" style="font: 14px Consolas; resize: none;"></textarea>
             </div>
         </td>
         <td valign="top" rowspan="3">&nbsp;</td>
@@ -214,9 +219,9 @@ sc#f8f afcb 1 1 1 0</textarea>
         </td>
     </tr>
     <tr>
-    <td>
-        <div id="id_div_alphabet"></div>
-    </td>
+        <td>
+            <div id="id_div_alphabet"></div>
+        </td>
     </tr>
     <tr>
         <td valign="top">
diff --git a/test/meshviewer_nacl.html b/test/meshviewer_nacl.html
index fdfe1f86..8e952935 100644
--- a/test/meshviewer_nacl.html
+++ b/test/meshviewer_nacl.html
@@ -1,13 +1,8 @@
 <DOCTYPE html>
 <html>
-	<body onload="PageDidLoad()">
-		<div id="id_div_embed_data">
-			<param name="wmode" value="opaque"/>
-			<embed name="name_embed_nacl_module"
-			id="id_embed_nacl_module"
-			width=770 height=200
-			src="meshviewer_nacl.nmf"
-			type="application/x-nacl" />
-		</div>
-	</body>
+<body>
+    <div id="id_div_embed_data" style="left:0px;top:0px;position:absolute;">
+        <embed  name="name_embed_nacl_module" id="id_embed_nacl_module" width=770 height=200 src="meshviewer_nacl.nmf" type="application/x-nacl" />
+    </div>
+</body>
 </html>
diff --git a/test/nacl_loading.js b/test/nacl_loading.js
index ec570aa2..a9162e18 100644
--- a/test/nacl_loading.js
+++ b/test/nacl_loading.js
@@ -2,7 +2,7 @@ g_status_text           = [null];
 g_status_timer          = [-1.0];
 g_var_progress_bar      = -1;
 
-window.setTimeout("RegisterListener()", 200);
+//window.setTimeout("RegisterListener()", 200);
 
 function RegisterListener()
 {
@@ -16,7 +16,7 @@ function RegisterListener()
         div_listener.addEventListener('progress', ModuleLoadUpdate, true);
         div_listener.addEventListener('message', ModuleSentMessage, true);
         div_listener.addEventListener('crash', ModuleCrash, true);
-        window.setTimeout("UpdateTextStatus()", 100);
+        window.setTimeout("UpdateTextStatus(0.1)", 100);
     }
     else if (IsUsingNaCl())
         window.setTimeout("RegisterListener()", 200);
@@ -29,8 +29,9 @@ function RegisterListener()
 function PageDidLoad()
 {
     //Page did load before NaCl module
-    if (GetNaClModuleVar() == null)
+    if (!GetNaClModuleVar())
         AddTextStatus('Please wait for module loading');
+    RegisterListener();
 }
 
 //Module starts load
@@ -68,12 +69,16 @@ function ModuleLoadUpdate(event)
 //Indicate module load success.
 function ModuleDidLoad()
 {
-    if (GetNaClModuleVar() == null)
+    if (!GetNaClModuleVar())
         InitNaClModuleVar();
 
     //Hide the progress div
     AddTextStatus('Module is live, thank you for your patience.');
-    window.setTimeout('HideProgressStatus(true)', 4000);
+    var hide_timer = 0.1;
+    for (var i = 0; i < g_status_timer.length; i++)
+        if (g_status_timer[i])
+            hide_timer = Math.max(g_status_timer[i], hide_timer);
+    window.setTimeout('HideProgressStatus(true)', hide_timer * 1000);
 }
 
 //Module did crash
@@ -93,6 +98,13 @@ function ModuleError(event)
 //Used to restart module on crash/error/load fail ....
 function RestartModule()
 {
+    var id_frame_embed = GetFrameData();
+    if (id_frame_embed)
+    {
+        HideProgressStatus(false);
+        window.setTimeout('GetFrameData().contentDocument.location.reload(true)', 1000);
+    }
+/*
     var div_embed_data = GetDivEmbedData();
     var div_embed_data_save = GetDivEmbedDataSave();
 
@@ -102,12 +114,14 @@ function RestartModule()
 
         div_embed_data_save = div_embed_data.innerHTML;
         div_embed_data.innerHTML = '';
-        window.setTimeout('RestartModuleRestoreEmbed()', 1000);
     }
+*/
 }
 
+//Called after the Restart to effectively do it
 function RestartModuleRestoreEmbed()
 {
+/*
     var div_embed_data = GetDivEmbedData();
     var div_embed_data_save = GetDivEmbedDataSave();
 
@@ -117,6 +131,7 @@ function RestartModuleRestoreEmbed()
         div_embed_data_save = '';
         HideProgressStatus(false);
     }
+*/
 }
 
 //-------------------------------------------------------------------------
@@ -160,27 +175,33 @@ function UpdateTextStatus(seconds)
             {
                 g_status_timer[i] -= seconds;
                 div_progress_status.innerHTML += g_status_text[i];
+                //div_progress_status.innerHTML += '[' + g_status_timer[i].toFixed(2) + ']';
                 if (i < g_status_text.length - 1)
                     div_progress_status.innerHTML += '<br>';
             }
         }
-        window.setTimeout("UpdateTextStatus()", 100);
+        window.setTimeout("UpdateTextStatus(0.1)", 100);
     }
 }
 
 //Add text status to the stack
 function AddTextStatus(message, message_id)
 {
+    var msg_timer = 2.0;
     if (message_id == undefined || message_id < 0)
     {
+        for (var i = g_status_timer.length - 1; i >= 0; i--)
+            if (g_status_timer[i])
+                msg_timer = Math.max(msg_timer, g_status_timer[i] + 0.5);
+
         g_status_text[g_status_text.length] = message;
-        g_status_timer[g_status_timer.length] = 5.0;
+        g_status_timer[g_status_timer.length] = msg_timer;
         return g_status_timer.length - 1;
     }
     else
     {
         g_status_text[message_id] = message;
-        g_status_timer[message_id] = 5.0;
+        g_status_timer[message_id] = msg_timer;
         return message_id;
     }
 }
@@ -198,14 +219,14 @@ function HideProgressStatus(should_hide)
             g_status_text.splice(0, g_status_text.length);
             g_status_timer.splice(0, g_status_timer.length);
             progress_bar.value = -1;
-            UpdateTextStatus(0.1);
+            UpdateTextStatus(1.0);
         }
         else
         {
             div_progress.style.visibility = "visible";
             progress_bar.value = -1;
             AddTextStatus('Please wait for module loading');
-            UpdateTextStatus(0.1);
+            UpdateTextStatus(1.0);
         }
     }
 }