diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py
index 296098f..29cecfd 100644
--- a/planetstack/core/admin.py
+++ b/planetstack/core/admin.py
@@ -633,7 +633,7 @@
 
     # nodes no longer direclty connected to deployments
     #suit_form_tabs =(('sites','Deployment Details'),('nodes','Nodes'),('deploymentprivileges','Privileges'),('tags','Tags'),('imagedeployments','Images'))
-    suit_form_tabs =(('sites','Deployment Details'),('deploymentprivileges','Privileges'),('tags','Tags'),('imagedeployments','Images'))
+    suit_form_tabs =(('sites','Deployment Details'),('deploymentprivileges','Privileges'),,('imagedeployments','Images'))
 
     def get_form(self, request, obj=None, **kwargs):
         if request.user.isReadOnlyUser():
@@ -788,7 +788,6 @@
             ('deployments','Deployments'),
             ('slices','Slices'),
             #('nodes','Nodes'),
-            ('tags','Tags'),
         ]
 
         request=getattr(_thread_locals, "request", None)
@@ -922,7 +921,6 @@
           ('slicenetworks','Networks'),
           ('sliceprivileges','Privileges'),
           ('slivers','Slivers'),
-          ('tags','Tags'),
           ('reservations','Reservations'),
           ]
 
@@ -1065,7 +1063,7 @@
     user_readonly_fields = ['name','site_deployment']
     user_readonly_inlines = [TagInline,SliverInline]
 
-    suit_form_tabs =(('details','Node Details'),('slivers','Slivers'),('tags','Tags'))
+    suit_form_tabs =(('details','Node Details'),('slivers','Slivers'))
 
 
 class SliverForm(forms.ModelForm):
@@ -1097,9 +1095,7 @@
     list_display = ['backend_status_icon', 'ip', 'instance_name', 'slice', 'flavor', 'image', 'node', 'deployment']
     list_display_links = ('backend_status_icon', 'ip',)
 
-    suit_form_tabs =(('general', 'Sliver Details'),
-        ('tags','Tags'),
-    )
+    suit_form_tabs =(('general', 'Sliver Details'))
 
     inlines = [TagInline]
 
diff --git a/planetstack/core/views/stats.py b/planetstack/core/views/stats.py
index 421fbfe..58f33e5 100644
--- a/planetstack/core/views/stats.py
+++ b/planetstack/core/views/stats.py
@@ -1,5 +1,6 @@
 from django.http import HttpResponse
 from monitor import driver
+from core.models import *
 import json
 
 def Stats(request):
@@ -8,5 +9,11 @@
     meter = request.GET['meter']
     controller_name = request.GET['controller_name']
     
-    meters = driver.get_meter(meter, model, pk)
+    controller = Controller.objects.filter(name=controller_name)[0]
+    keystone = {'username':controller.admin_user, 'password':controller.admin_password, 'tenant_name':controller.admin_tenant, 'auth_url':controller.auth_url, 'cacert':'/etc/ssl/certs/ca-certificates.crt'}
+
+    for k,v in keystone.items():
+        keystone['os_'+k] = v
+    
+    meters = driver.get_meter(meter, model, pk, keystone)
     return HttpResponse(json.dumps(meters))
diff --git a/planetstack/openstack_observer/ceilometer.py b/planetstack/openstack_observer/ceilometer.py
index 00c1238..e34b000 100644
--- a/planetstack/openstack_observer/ceilometer.py
+++ b/planetstack/openstack_observer/ceilometer.py
@@ -13,9 +13,9 @@
 def object_to_filter(model_name, pk):
     from core.models import *
     filter_dict = {
-            'Slice':[Slice, 'tenant_id', 'project_id'],
+            'ControllerSlice':[ControllerSlice, 'tenant_id', 'project_id'],
             'Sliver':[Sliver, 'instance_id', 'resource_id'],
-            'Site':[Site, 'tenant_id', 'project_id']
+            'ControllerSite':[ControllerSite, 'tenant_id', 'project_id']
     }
 
     mod,field,tag = filter_dict[model_name]
@@ -86,20 +86,21 @@
 
 class CeilometerDriver(MonitorDriver):
     def get_meter(self, meter, obj, pk, keystone=None):
-        keystone = {}
-        keystone['os_username']=env['OS_USERNAME']
-        keystone['os_password']=env['OS_PASSWORD']
-        keystone['os_auth_url']=env['OS_AUTH_URL']
-        keystone['os_tenant_name']=env['OS_TENANT_NAME']
-        keystone['os_cacert']=env['OS_CACERT']
-        keystone['os_region_name']=env['OS_REGION_NAME']
+        if (not keystone):
+                keystone={}
+                keystone['os_username']=env['OS_USERNAME']
+                keystone['os_password']=env['OS_PASSWORD']
+                keystone['os_auth_url']=env['OS_AUTH_URL']
+                keystone['os_tenant_name']=env['OS_TENANT_NAME']
+                keystone['os_cacert']=env['OS_CACERT']
+                keystone['os_region_name']=env['OS_REGION_NAME']
 
-        keystone['username']=env['OS_USERNAME']
-        keystone['password']=env['OS_PASSWORD']
-        keystone['auth_url']=env['OS_AUTH_URL']
-        keystone['tenant_name']=env['OS_TENANT_NAME']
-        keystone['cacert']=env['OS_CACERT']
-        keystone['region_name']=env['OS_REGION_NAME']
+                keystone['username']=env['OS_USERNAME']
+                keystone['password']=env['OS_PASSWORD']
+                keystone['auth_url']=env['OS_AUTH_URL']
+                keystone['tenant_name']=env['OS_TENANT_NAME']
+                keystone['cacert']=env['OS_CACERT']
+                keystone['region_name']=env['OS_REGION_NAME']
 
         keystone['auth_plugin']=client.AuthPlugin(**keystone)
 
