diff --git a/doc/source/_exts/events.jinja b/doc/source/_exts/events.jinja
index e7d07467..9f252db1 100644
--- a/doc/source/_exts/events.jinja
+++ b/doc/source/_exts/events.jinja
@@ -16,6 +16,6 @@
 | Events                             | Start Date                         | End Date                           | Status    |
 +====================================+====================================+====================================+===========+
 {% for event in events %}
-| {{ "%29s" % event['name_str'] }}      | {{ "%29s" % event['start_str'] }}      | {{ "%29s" % event['end_str'] }}      | {{ "%7s" % event['status'] }}   |
+| {{ "%29s" % event['name'] }}      | {{ "%29s" % event['start_str'] }}      | {{ "%29s" % event['end_str'] }}      |           |
 +------------------------------------+------------------------------------+------------------------------------+-----------+
 {% endfor %}
diff --git a/doc/source/_exts/events.py b/doc/source/_exts/events.py
index 278a7446..cd6b3932 100644
--- a/doc/source/_exts/events.py
+++ b/doc/source/_exts/events.py
@@ -13,40 +13,15 @@
 """Add election timer data
 """
 
-import datetime
 import jinja2
 import jinja2.environment
 import os
-import pytz
 
 from openstack_election import utils
 
 
 def build_timer(app):
     app.add_javascript("event_timer.js")
-    now = datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
-    first_event = True
-    for ev in utils.conf['timeline']:
-        if ev['start'] > now:
-            ev['status'] = 'future'
-        elif ev['end'] > now:
-            ev['status'] = 'current'
-        else:
-            ev['status'] = 'past'
-
-        if first_event and ev['status'] == 'future':
-            ev['status'] = 'next'
-            first_event = False
-
-        mark = ''
-        if ev['status'] == 'current':
-            mark = '**'
-        elif ev['status'] == 'past':
-            mark = '*'
-
-        ev['start_iso'] = ev['start'].strftime("%Y-%m-%dT%H:%M")
-        ev['end_iso'] = ev['end'].strftime("%Y-%m-%dT%H:%M")
-        ev['name_str'] = "%s%s%s" % (mark, ev['name'], mark)
     output_file = os.path.join(".", "doc", "source", "events.rst")
     with open(output_file, "w") as out:
         template_dir = os.path.join(".", "doc", "source", "_exts")
diff --git a/doc/source/_static/event_timer.js b/doc/source/_static/event_timer.js
index f58eedf2..06d4e241 100644
--- a/doc/source/_static/event_timer.js
+++ b/doc/source/_static/event_timer.js
@@ -1,7 +1,6 @@
 /* Licensed under the Apache License, Version 2.0
  */
 var event_date;
-var now = parseInt((new Date).getTime() / 1000);
 
 function startTime() {
     var delta = parseInt(event_date - (new Date).getTime() / 1000);
@@ -13,20 +12,37 @@ function startTime() {
     var t = setTimeout(startTime, 500);
 }
 
+function set_event_status(event_name, event_status) {
+    var td = $("td:contains('"+event_name+"')");
+    if (event_status == 'Next' || event_status == 'Current') {
+        td.css("font-weight", "bold")
+    }
+    td.next().next().next().html(event_status);
+}
+
 function setup_timeline() {
+    var now = parseInt((new Date).getTime() / 1000);
     for (i = 0; i < events_timeline.length; i++) {
         var current_event = events_timeline[i];
-        event_date = Date.parse(current_event.start) / 1000;
-        if (event_date > now) {
-            document.getElementById('eventname').innerHTML = current_event.name+' starts in';
-            startTime();
-            break;
+        var current_event_start = Date.parse(current_event.start) / 1000;
+        var current_event_end = Date.parse(current_event.end) / 1000;
+        if (now > current_event_end) {
+            set_event_status(current_event.name, 'Past');
         }
-        event_date = Date.parse(current_event.end) / 1000;
-        if (event_date > now) {
-            document.getElementById('eventname').innerHTML = current_event.name+' ends in';
+        else if (event_date == undefined && now < current_event_start) {
+            document.getElementById('eventname').innerHTML = current_event.name+' starts in';
+            set_event_status(current_event.name, 'Next');
+            event_date = current_event_start;
             startTime();
-            break;
+        }
+        else if (event_date == undefined && now < current_event_end) {
+            document.getElementById('eventname').innerHTML = current_event.name+' ends in';
+            set_event_status(current_event.name, 'Current');
+            event_date = current_event_end;
+            startTime();
+        }
+        else if (now < current_event_start) {
+            set_event_status(current_event.name, 'Future');
         }
     }
 }
diff --git a/openstack_election/config.py b/openstack_election/config.py
index 2116cc89..203d3a0d 100644
--- a/openstack_election/config.py
+++ b/openstack_election/config.py
@@ -16,11 +16,12 @@ import yaml
 
 
 TIME_FMT = "%b %d, %Y %H:%M %Z"
+ISO_FMT = "%Y-%m-%dT%H:%M"
 
 
 # Load configuration.yaml and create datetime objects
 def parse_datetime(iso_format):
-    date = datetime.datetime.strptime(iso_format, "%Y-%m-%dT%H:%M")
+    date = datetime.datetime.strptime(iso_format, ISO_FMT)
     return date.replace(tzinfo=pytz.utc)
 
 
@@ -34,5 +35,6 @@ def load_conf():
         for key in ('start', 'end'):
             date = parse_datetime(event[key])
             event[key] = date
+            event[key+'_iso'] = date.strftime(ISO_FMT)
             event[key+'_str'] = date.strftime(TIME_FMT)
     return conf
diff --git a/openstack_election/utils.py b/openstack_election/utils.py
index a67dcdb3..7ffd4e6c 100644
--- a/openstack_election/utils.py
+++ b/openstack_election/utils.py
@@ -21,7 +21,6 @@ import pickle
 import pytz
 import re
 import requests
-import six
 import subprocess
 import time
 import yaml