diff --git a/embed/core.js b/embed/core.js
index 19b37e27..72f588ac 100644
--- a/embed/core.js
+++ b/embed/core.js
@@ -81,7 +81,6 @@ MistPlayer.prototype.getElement = function(tag){
   this.element = ele;
   return ele;
 };
-MistPlayer.prototype.onreadylist = [];
 MistPlayer.prototype.onready = function(dothis){
   this.onreadylist.push(dothis);
 };
@@ -930,8 +929,25 @@ function mistPlay(streamName,options) {
     
     if (!('type' in info) || (info.type != 'vod')) { //always show the button timer, unless its a vod
       //reload timeout
-      var delay = ('type' in info ? 20 : 60);
-      i.className = 'countdown'+delay;
+      var delay = 20;
+      if (!("type" in info)) {
+        if ("reloadDelay" in options) {
+          delay = options.reloadDelay;
+          
+          try {
+            var css = document.createElement("style");
+            i.appendChild(css);
+            css.sheet.insertRule(".countdown[data-delay=\""+delay+"\"] { animation-duration: "+delay+"s; }");
+            css.sheet.insertRule(".countdown[data-delay=\""+delay+"\"]:before { animation-duration: "+delay/2+"s,"+delay+"s; }");
+          }
+          catch (e) {}
+        }
+        else {
+          delay = 60;
+        }
+      }
+      i.className = 'countdown';
+      i.setAttribute("data-delay",delay);
       err.timeOut = protoplay.timer.add(function(){
         protoplay.report({
           type: 'playback',
diff --git a/embed/mist.css b/embed/mist.css
index 99364fc1..dc912f77 100644
--- a/embed/mist.css
+++ b/embed/mist.css
@@ -360,19 +360,18 @@
   }
 }
 
-.countdown, .countdown20, .countdown60 {
+.countdown {
   height: 1em;
   width: 1em;
   display: inline-block;
   vertical-align: bottom;
   border-radius: 50%;
   background-image: linear-gradient(to right,#bbb 50%,#333 0);
-  border: 1px solid black;
   margin: 0 0.2em;
   opacity: 0;
   animation: appear 20s step-start 1;
 }
-.countdown:before, .countdown20:before, .countdown60:before {
+.countdown:before {
   content: '';
   display: block;
   margin-left: 50%;
@@ -382,11 +381,11 @@
   transform-origin: 0 50%;
   animation: rotate 10s linear 2, bg 20s step-end 1;
 }
-.countdown60 {
-  animation: appear 60s step-start 1;
+.countdown[data-delay=60] {
+  animation-duration: 60s;
 }
-.coutndown60:before {
-  animation: rotate 30s linear 2, bg 60s step-end 1;
+.countdown[data-delay=60]:before {
+  animation-duration: 30s, 60s;
 }
 @keyframes rotate {
   to { transform: rotate(.5turn); }
diff --git a/embed/wrappers/dashjs.js b/embed/wrappers/dashjs.js
index a35b3e7f..a50ecefd 100644
--- a/embed/wrappers/dashjs.js
+++ b/embed/wrappers/dashjs.js
@@ -10,7 +10,7 @@ mistplayers.dashjs = {
     if ((options.host.substr(0,7) == 'http://') && (source.url.substr(0,8) == 'https://')) { return false; }
     return (('MediaSource' in window) && (location.protocol != 'file:'));
   },
-  player: function(){}
+  player: function(){this.onreadylist = [];}
 };
 var p = mistplayers.dashjs.player;
 p.prototype = new MistPlayer();
diff --git a/embed/wrappers/flash_strobe.js b/embed/wrappers/flash_strobe.js
index acf11242..575ccc47 100644
--- a/embed/wrappers/flash_strobe.js
+++ b/embed/wrappers/flash_strobe.js
@@ -24,7 +24,7 @@ mistplayers.flash_strobe = {
     
     return Number(version) >= Number(mimesplit[mimesplit.length-1]);
   },
-  player: function(){}
+  player: function(){this.onreadylist = [];}
 };
 var p = mistplayers.flash_strobe.player;
 p.prototype = new MistPlayer();
diff --git a/embed/wrappers/html5.js b/embed/wrappers/html5.js
index fe85ce9c..5198c1d9 100644
--- a/embed/wrappers/html5.js
+++ b/embed/wrappers/html5.js
@@ -27,7 +27,9 @@ mistplayers.html5 = {
     } catch(e){}
     return support;
   },
-  player: function(){},
+  player: function(){
+    this.onreadylist = [];
+  },
   mistControls: true
 };
 var p = mistplayers.html5.player;
diff --git a/embed/wrappers/img.js b/embed/wrappers/img.js
index c5b92107..3dce1c2b 100644
--- a/embed/wrappers/img.js
+++ b/embed/wrappers/img.js
@@ -11,7 +11,7 @@ mistplayers.img = {
     if ((options.forceType) || (options.forceSource) || (options.forcePlayer)) { return true; }
     return false;
   },
-  player: function(){}
+  player: function(){this.onreadylist = [];}
 };
 var p = mistplayers.img.player;
 p.prototype = new MistPlayer();
diff --git a/embed/wrappers/silverlight.js b/embed/wrappers/silverlight.js
index b03fb1ef..2f099562 100644
--- a/embed/wrappers/silverlight.js
+++ b/embed/wrappers/silverlight.js
@@ -21,7 +21,7 @@ mistplayers.silverlight = {
     
     return false;
   },
-  player: function(){}
+  player: function(){this.onreadylist = [];}
 };
 var p = mistplayers.silverlight.player;
 p.prototype = new MistPlayer();
diff --git a/embed/wrappers/videojs.js b/embed/wrappers/videojs.js
index 9ceaf6fa..178afecc 100644
--- a/embed/wrappers/videojs.js
+++ b/embed/wrappers/videojs.js
@@ -42,7 +42,7 @@ mistplayers.videojs = {
     
     return ('MediaSource' in window);
   },
-  player: function(){},
+  player: function(){this.onreadylist = [];}
 };
 var p = mistplayers.videojs.player;
 p.prototype = new MistPlayer();
diff --git a/src/output/output_http_internal.cpp b/src/output/output_http_internal.cpp
index 1a93a024..688b51f4 100644
--- a/src/output/output_http_internal.cpp
+++ b/src/output/output_http_internal.cpp
@@ -67,6 +67,7 @@ namespace Mist {
   }
   
   void OutHTTP::onFail(){
+    std::string method = H.method;
     // send logo icon
     if (H.url.length() > 4 && H.url.substr(H.url.length() - 4, 4) == ".ico"){
       sendIcon();
@@ -90,7 +91,14 @@ namespace Mist {
         H.Clean();
         H.SetBody("if (!mistvideo){var mistvideo = {};}\nmistvideo['" + streamName + "'] = "+json_resp.toString()+";\n");
       }
+      H.setCORSHeaders();
+      if(method == "OPTIONS" || method == "HEAD"){
+        H.SendResponse("200", "OK", myConn);
+        H.Clean();
+        return;
+      }
       H.SendResponse("200", "Stream not found", myConn);
+      H.Clean();
       return;
     }
     INFO_MSG("Failing: %s", H.url.c_str());