diff --git a/gracedb/management/commands/make_histograms.py b/gracedb/management/commands/make_histograms.py
index d1413ff6050debe6f26e939d4f3a39d75c051f52..ccb3e193f678129e2f9df84692490ccea98e9357 100644
--- a/gracedb/management/commands/make_histograms.py
+++ b/gracedb/management/commands/make_histograms.py
@@ -16,8 +16,11 @@ from datetime import datetime, timedelta
 from subprocess import Popen, PIPE, STDOUT
 
 
-DEST_DIR = "/var/www/html/histo/2"
-MAX_X = 1800
+DEST_DIR = settings.LATENCY_REPORT_DEST_DIR
+MAX_X = settings.LATENCY_MAXIMUM_CHARTED
+
+WEB_PAGE_FILE_PATH = settings.LATENCY_REPORT_WEB_PAGE_FILE_PATH
+
 
 
 class Command(NoArgsCommand):
@@ -31,6 +34,12 @@ class Command(NoArgsCommand):
         start_week = now - timedelta(7)
         start_month = now - timedelta(30)
 
+        past = timedelta(100)
+        now -= past
+        start_day -= past
+        start_week -= past
+        start_month -= past
+
         time_ranges =  [(start_day, "day"), (start_week, "week"), (start_month, "month")]
 
         annotations = {}
@@ -60,22 +69,17 @@ class Command(NoArgsCommand):
                     makePlot(data, atype, maxx=MAX_X).savefig(fname)
                 annotations[atype][time_range] = note
 
-        writeIndex(annotations, os.path.join(DEST_DIR, 'index.html'))
+        writeIndex(annotations, WEB_PAGE_FILE_PATH)
 
 
 def writeIndex(notes, fname):
-    template = """<html>
-<head>
-</head>
-<h1>Gracedb Event Reporting Latency</h1>
-Tables generated: %(time)s<br/>
-Maximum charted latency: %(maxx)s seconds
-<body>%(table)s
-</body>
-</html>
-    """
-
-    table = '<table border="1">'
+
+    createdDate = str(datetime.now())
+    maxx = MAX_X
+
+    table = '<table border="1" bgcolor="white">'
+    table += """<caption>Tables generated: %s<br/>
+                      Maximum charted latency: %s seconds</caption>""" % (createdDate, maxx)
     table += "<tr><th>&nbsp;</th>"
     for time_range in ['day', 'week', 'month']:
         table += "<th>last %s</th>" % time_range
@@ -84,7 +88,7 @@ Maximum charted latency: %(maxx)s seconds
         table += "<tr>"
         table += "<td>%s</td>" % atype_name
         for time_range in ['day', 'week', 'month']:
-            table += "<td>"
+            table += '<td align="center" bgcolor="white">'
             n = notes[atype][time_range]
             extra = ""
             if n['fname'] is not None:
@@ -99,12 +103,8 @@ Maximum charted latency: %(maxx)s seconds
         table += "</tr>"
     table += "</table>"
 
-    values = {}
-    values['table'] = table
-    values['time'] = str(datetime.now())
-    values['maxx'] = MAX_X # XXX ugh.
     f = open(fname, "w")
-    f.write(template % values)
+    f.write(table)
     f.close()
 
 def makePlot(data, title, maxx=1800, facecolor='green'):
diff --git a/gracedb/reports.py b/gracedb/reports.py
new file mode 100644
index 0000000000000000000000000000000000000000..3bc74476bb7f2f8296ff3e961e3a1f7d84de1a34
--- /dev/null
+++ b/gracedb/reports.py
@@ -0,0 +1,15 @@
+
+from django.http import HttpResponse
+from django.template import RequestContext
+from django.shortcuts import render_to_response
+from django.conf import settings
+
+
+
+def histo(request):
+    table = open(settings.LATENCY_REPORT_WEB_PAGE_FILE_PATH, "r").read()
+    return render_to_response(
+            'gracedb/histogram.html',
+            {'table': table},
+            context_instance=RequestContext(request))
+
diff --git a/settings.py b/settings.py
index 976821b3b6a8ba93aa60cd9ef316d73053ccaa56..937e8cc4d7c84e79a356c1973cbc12c0768b8f6c 100644
--- a/settings.py
+++ b/settings.py
@@ -43,6 +43,13 @@ DATABASE_PASSWORD = 'redrum4x'
 DATABASE_HOST = ''             # Set to empty string for localhost.
 DATABASE_PORT = ''             # Set to empty string for default.
 
+
+# Latency histograms.  Where they go and max latency to bin.
+LATENCY_REPORT_DEST_DIR = "/home/lars/django/data/latency"
+LATENCY_MAXIMUM_CHARTED = 1800
+LATENCY_REPORT_WEB_PAGE_FILE_PATH = LATENCY_REPORT_DEST_DIR + "/latency.inc"
+
+
 # Local time zone for this installation. Choices can be found here:
 # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
 # although not all choices may be available on all operating systems.
diff --git a/settings_dev.py b/settings_dev.py
index 7e4d3d59e95bd67404ec04c6ede69b64651fe4dd..7e093557d3b831aa90d910506155f6c7eb951031 100644
--- a/settings_dev.py
+++ b/settings_dev.py
@@ -34,6 +34,12 @@ DATABASE_PASSWORD = 'redrum4x'
 DATABASE_HOST = ''             # Set to empty string for localhost.
 DATABASE_PORT = ''             # Set to empty string for default.
 
+# Latency histograms.  Where they go and max latency to bin.
+LATENCY_REPORT_DEST_DIR = "/home/lars/django/data/latency"
+LATENCY_MAXIMUM_CHARTED = 1800
+LATENCY_REPORT_WEB_PAGE_FILE_PATH = LATENCY_REPORT_DEST_DIR + "/latency.inc"
+
+
 # Local time zone for this installation. Choices can be found here:
 # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
 # although not all choices may be available on all operating systems.
diff --git a/static/css/admin-nav.css b/static/css/admin-nav.css
index d19d736a591b16347e8ac48065782f4e5669c838..1a3a77cd4843a8e60bfd0995e7de46096ec6b8f0 100644
--- a/static/css/admin-nav.css
+++ b/static/css/admin-nav.css
@@ -56,6 +56,7 @@
 #home #nav-home a,
 #create #nav-create a,
 #search #nav-search a,
+#reports #nav-reports a,
 #feeds #nav-feeds a,
 #about #nav-about a,
 #archive #nav-archive a,
@@ -70,6 +71,7 @@
 #home #nav-home a:hover,
 #create #nav-create a,
 #search #nav-search a,
+#reports #nav-reports a,
 #feeds #nav-feeds a,
 #about #nav-about a:hover,
 #archive #nav-archive a:hover,
diff --git a/static/css/style.css b/static/css/style.css
index 03bdc0a664d0f5b1c6670287b724fde12a322f19..508a8795070827a7dc3c1089a77d301be1972521 100644
--- a/static/css/style.css
+++ b/static/css/style.css
@@ -131,6 +131,7 @@ a.link, a, a.active {
 #create #nav-create a,
 #search #nav-search a,
 #doc #nav-doc a,
+#reports #nav-reports a,
 #feeds #nav-feeds a,
 #about #nav-about a,
 #archive #nav-archive a,
@@ -146,6 +147,7 @@ a.link, a, a.active {
 #create #nav-create a,
 #search #nav-search a,
 #doc #nav-doc a,
+#reports #nav-reports a,
 #feeds #nav-feeds a,
 #about #nav-about a:hover,
 #archive #nav-archive a:hover,
diff --git a/templates/admin/base_site.html b/templates/admin/base_site.html
index b4103d0fdb5f599af35bd8857eaaaf392dcbfffc..66d5f6d337097d0b1dd9c73cac04ce3daa9e843c 100644
--- a/templates/admin/base_site.html
+++ b/templates/admin/base_site.html
@@ -13,18 +13,13 @@
 {% endblock %}
 
 {% block nav-global %}
-<!--
-    <span id="nav-home"><a href="{% url home %}">Home</a></span>
-    <span id="nav-search"><a href="{% url search %}">Search</a></span>
-    <span id="nav-create"><a href="{% url create %}">Create</a></span>
-    <span id="nav-feeds"><a href="{% url feeds %}">RSS</a></span>
-    {% if ligouser %}<div id="nav-user">Authenticated as: {{ ligouser.name }}</div>{% endif %}
--->
 <ul id="nav">
     <li id="nav-home"><a href="{% url home %}">Home</a></li>
     <li id="nav-search"><a href="{% url search %}">Search</a></li>
     <li id="nav-create"><a href="{% url create %}">Create</a></li>
+    <li id="nav-reports"><a href="{% url reports %}">RSS</a></li>
     <li id="nav-feeds"><a href="{% url feeds %}">RSS</a></li>
+    <li id="nav-userprofile"><a href="{% url userprofile-home %}">Options</a></li>
     {% if ligouser %}<li id="nav-user">Authenticated as: {{ ligouser.name }}</li>{% endif %}
 <ul>
 {% endblock %}
diff --git a/templates/base.html b/templates/base.html
index f5b64acd45a42fd562e6a0715198d68c3d240480..ffa7d202a1be4c4370032dd403fe7557014aee3d 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -33,6 +33,7 @@ function changeTime(obj, label) {
     <li id="nav-home"><a href="{% url home %}">Home</a></li>
     <li id="nav-search"><a href="{% url search %}">Search</a></li>
     <li id="nav-create"><a href="{% url create %}">Create</a></li>
+    <li id="nav-reports"><a href="{% url reports %}">Reports</a></li>
     <li id="nav-feeds"><a href="{% url feeds %}">RSS</a></li>
     <li id="nav-userprofile"><a href="{% url userprofile-home %}">Options</a></li>
     {% if ligouser %}<li id="nav-user">Authenticated as: {{ ligouser.name }}</li>{% endif %}
diff --git a/templates/gracedb/histogram.html b/templates/gracedb/histogram.html
new file mode 100644
index 0000000000000000000000000000000000000000..5419b8f4f122e68ba6a62d555b3ba7f0b01f4a9f
--- /dev/null
+++ b/templates/gracedb/histogram.html
@@ -0,0 +1,11 @@
+{% extends "base.html" %}
+
+{% block title %}Reporting Latency{% endblock %}
+{% block heading %}Reporting Latency{% endblock %}
+{% block pageid %}reports{% endblock %}
+
+{% block content %}
+
+{{ table|safe }}
+
+{% endblock %}
diff --git a/urls.py b/urls.py
index 4a8e866b79eb90658344438998e3fca9d843205f..fea04f409ad965d1bc293d9d3b347f8d0774d4a5 100644
--- a/urls.py
+++ b/urls.py
@@ -1,4 +1,6 @@
+
 from django.conf.urls.defaults import *
+from django.conf import settings
 
 # Uncomment the next two lines to enable the admin:
 from django.contrib import admin
@@ -27,6 +29,10 @@ urlpatterns = patterns('',
         {'feed_dict': feeds}),
     url (r'^feeds/$', feedview, name="feeds"),
 
+    url (r'^reports/$', 'gracedb.gracedb.reports.histo', name="reports"),
+    (r'^reports/(?P<path>.+)$', 'django.views.static.serve',
+            {'document_root': settings.LATENCY_REPORT_DEST_DIR}),
+
     # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
     # to INSTALLED_APPS to enable admin documentation:
     # (r'^admin/doc/', include('django.contrib.admindocs.urls')),