diff --git a/xos/core/admin.py b/xos/core/admin.py
index 9d473da..70df867 100644
--- a/xos/core/admin.py
+++ b/xos/core/admin.py
@@ -684,7 +684,7 @@
 class ServiceAdmin(XOSBaseAdmin):
     list_display = ("backend_status_icon","name","description","versionNumber","enabled","published")
     list_display_links = ('backend_status_icon', 'name', )
-    fieldList = ["backend_status_text","name","description","versionNumber","enabled","published"]
+    fieldList = ["backend_status_text","name","description","versionNumber","enabled","published","view_url","icon_url"]
     fieldsets = [(None, {'fields': fieldList, 'classes':['suit-tab suit-tab-general']})]
     inlines = [ServiceAttrAsTabInline,SliceInline]
     readonly_fields = ('backend_status_text', )
diff --git a/xos/core/models/service.py b/xos/core/models/service.py
index 289c7ff..f26bf06 100644
--- a/xos/core/models/service.py
+++ b/xos/core/models/service.py
@@ -7,6 +7,8 @@
     name = models.CharField(max_length=30, help_text="Service Name")
     versionNumber = models.CharField(max_length=30, help_text="Version of Service Definition")
     published = models.BooleanField(default=True)
+    view_url = models.CharField(blank=True, null=True, max_length=1024)
+    icon_url = models.CharField(blank=True, null=True, max_length=1024)
 
     def __unicode__(self): return u'%s' % (self.name)
 
diff --git a/xos/core/static/primarycons_blue/License.txt b/xos/core/static/primarycons_blue/License.txt
new file mode 100644
index 0000000..da57598
--- /dev/null
+++ b/xos/core/static/primarycons_blue/License.txt
@@ -0,0 +1,21 @@
+Thank you for downloading these graphics from MouseRunner.com. 
+
+While I want you to enjoy these free graphics (free as in free of monetary charge, not entirely free usage), I ask that you please abide by the terms that they are licensed under.
+
+-------------------------------------------------------------------------
+
+The graphics contained in these files are being released under a Creative Commons
+Attribution-NonCommercial-ShareAlike 3.0 Unported license.
+
+Furthermore;
+You may not claim the works as your own.
+You must provide a link back to www.MouseRunner.com when using on a website, blog, etc. 
+You may not redistribute these as a package as-is.
+You must seek approval for commercial purposes, and for applications.
+
+Visit the address below to learn more about the Creative Commons license.
+http://creativecommons.org/licenses/by-nc-sa/3.0/
+
+-------------------------------------------------------------------------
+Questions? Contact:
+KenSaunders@MouseRunner.com
diff --git a/xos/core/static/primarycons_blue/folder_1.png b/xos/core/static/primarycons_blue/folder_1.png
new file mode 100644
index 0000000..2c7dc1f
--- /dev/null
+++ b/xos/core/static/primarycons_blue/folder_1.png
Binary files differ
diff --git a/xos/core/static/primarycons_blue/gear_2.png b/xos/core/static/primarycons_blue/gear_2.png
new file mode 100644
index 0000000..4a9e9d0
--- /dev/null
+++ b/xos/core/static/primarycons_blue/gear_2.png
Binary files differ
diff --git a/xos/core/static/primarycons_blue/internet.png b/xos/core/static/primarycons_blue/internet.png
new file mode 100644
index 0000000..89e0de4
--- /dev/null
+++ b/xos/core/static/primarycons_blue/internet.png
Binary files differ
diff --git a/xos/core/static/primarycons_blue/network.png b/xos/core/static/primarycons_blue/network.png
new file mode 100644
index 0000000..37d2241
--- /dev/null
+++ b/xos/core/static/primarycons_blue/network.png
Binary files differ
diff --git a/xos/core/views/services.py b/xos/core/views/services.py
new file mode 100644
index 0000000..76180e7
--- /dev/null
+++ b/xos/core/views/services.py
@@ -0,0 +1,53 @@
+from django.http import HttpResponse
+from django.views.generic import TemplateView, View
+from django import template
+from monitor import driver
+from core.models import *
+import json
+import os
+import time
+
+class ServiceGridView(TemplateView):
+    head_template = r"""{% extends "admin/dashboard/dashboard_base.html" %}
+       {% load admin_static %}
+       {% block content %}
+    """
+
+    tail_template = r"{% endblock %}"
+
+    def get(self, request, name="root", *args, **kwargs):
+        head_template = self.head_template
+        tail_template = self.tail_template
+
+        html = '<table><tr>'
+
+        i=0
+        for service in Service.objects.all():
+            if (i%4) == 0:
+                html = html + '</tr><tr>'
+
+            view_url = service.view_url
+            if (not view_url):
+                view_url = "/admin/core/service/$id$/"
+            view_url = view_url.replace("$id$", str(service.id))
+
+            image_url = service.icon_url
+            if (not image_url):
+                image_url = "/static/primarycons_blue/gear_2.png"
+
+            html = html + '<td width=96 height=128 valign=top align=center><a href="%s"><img src="%s" height=64 width=64></img></a>' % (view_url, image_url)
+            html = html + '<p><a href="%s">%s</a></p></td>' % (view_url, service.name)
+            i=i+1
+
+        html = html + '</tr></table>'
+
+        t = template.Template(head_template + html + self.tail_template)
+
+        response_kwargs = {}
+        response_kwargs.setdefault('content_type', self.content_type)
+        return self.response_class(
+            request = request,
+            template = t,
+            **response_kwargs)
+
+
diff --git a/xos/xos/settings.py b/xos/xos/settings.py
index f1f4885..5dffb7e 100644
--- a/xos/xos/settings.py
+++ b/xos/xos/settings.py
@@ -208,9 +208,10 @@
         {'label': 'Sites', 'icon':'icon-site', 'url': '/admin/core/site/'},
         {'label': 'Slices', 'icon':'icon-slice', 'url': '/admin/core/slice/'},
         {'label': 'Users', 'icon':'icon-user', 'url': '/admin/core/user/'},
-        {'label': 'RequestRouter', 'icon':'icon-cog', 'app': 'requestrouter'},
-        {'label': 'HyperCache', 'icon':'icon-cog', 'app': 'hpc'},
-        {'label': 'Syndicate', 'icon':'icon-cog', 'app': 'syndicate_storage'},
+        {'label': 'Services', 'icon':'icon-cog', 'url': '/serviceGrid/'},
+#        {'label': 'RequestRouter', 'icon':'icon-cog', 'app': 'requestrouter'},
+#        {'label': 'HyperCache', 'icon':'icon-cog', 'app': 'hpc'},
+#        {'label': 'Syndicate', 'icon':'icon-cog', 'app': 'syndicate_storage'},
 #       {'label': 'URL Filter', 'icon': 'icon-cog', 'app': 'urlfilter'},
 #       {'label': 'Service Comp', 'icon': 'icon-cog', 'app': 'servcomp'},
 
diff --git a/xos/xos/urls.py b/xos/xos/urls.py
index 10d1fe8..f5b1e78 100644
--- a/xos/xos/urls.py
+++ b/xos/xos/urls.py
@@ -7,6 +7,7 @@
 from xosapi import *
 
 from core.views.legacyapi import LegacyXMLRPC
+from core.views.services import ServiceGridView
 #from core.views.analytics import AnalyticsAjaxView
 from core.models import *
 from rest_framework import generics
@@ -26,6 +27,7 @@
     # Examples:
     url(r'^stats', 'core.views.stats.Stats', name='stats'),
     url(r'^observer', 'core.views.observer.Observer', name='observer'),
+    url(r'^serviceGrid', ServiceGridView.as_view(), name='serviceGrid'),
 
     url(r'^docs/', include('rest_framework_swagger.urls')),
 
