diff --git a/planetstack/core/models/slice.py b/planetstack/core/models/slice.py
index 7bffe83..d031766 100644
--- a/planetstack/core/models/slice.py
+++ b/planetstack/core/models/slice.py
@@ -24,6 +24,7 @@
     network_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum network")
     router_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum router id")
     subnet_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum subnet id")
+    imagePreference = models.CharField(default="abc",null=True, blank=True, max_length=256)
     service = models.ForeignKey(Service, related_name='service', null=True, blank=True)
 
     tags = generic.GenericRelation(Tag)
diff --git a/planetstack/core/plus/sites.py b/planetstack/core/plus/sites.py
index 6fd278b..c5dde52 100644
--- a/planetstack/core/plus/sites.py
+++ b/planetstack/core/plus/sites.py
@@ -12,13 +12,15 @@
     def get_urls(self):
         """Add our dashboard view to the admin urlconf. Deleted the default index."""
         from django.conf.urls import patterns, url
-        from views import DashboardWelcomeView, DashboardAjaxView, SimulatorView, DashboardSummaryAjaxView, DashboardAddOrRemoveSliverView, DashboardUserSiteView, DashboardAnalyticsAjaxView
+        from views import DashboardWelcomeView, DashboardAjaxView, SimulatorView, DashboardSummaryAjaxView, DashboardAddOrRemoveSliverView, DashboardUserSiteView, DashboardAnalyticsAjaxView, TenantViewData,TenantCreateSlice
 
         urls = super(AdminMixin, self).get_urls()
         del urls[0]
         custom_url = patterns('',
                url(r'^$', self.admin_view(DashboardWelcomeView.as_view()),
                     name="index"),
+               url(r'^test/', self.admin_view(DashboardUserSiteView.as_view()),
+                    name="test"),
                url(r'^hpcdashuserslices/', self.admin_view(DashboardUserSiteView.as_view()),
                     name="hpcdashuserslices"),
                url(r'^hpcdashboard/', self.admin_view(DashboardAjaxView.as_view()),        # DEPRECATED
@@ -30,7 +32,11 @@
                url(r'^analytics/(?P<name>\w+)/$', DashboardAnalyticsAjaxView.as_view(),
                     name="analytics"),
                url(r'^dashboardaddorremsliver/$', self.admin_view(DashboardAddOrRemoveSliverView.as_view()),
-                    name="addorremsliver")
+                    name="addorremsliver"),
+               url(r'^tenantview/$', self.admin_view(TenantViewData.as_view()),
+                    name="tenantview"),
+               url(r'^createnewslice/$', self.admin_view(TenantCreateSlice.as_view()),
+                    name="createnewslice")
         )
 
         return custom_url + urls
diff --git a/planetstack/core/plus/views.py b/planetstack/core/plus/views.py
index a50d946..0078d91 100644
--- a/planetstack/core/plus/views.py
+++ b/planetstack/core/plus/views.py
@@ -5,8 +5,9 @@
 import datetime
 from pprint import pprint
 import json
-from core.models import Slice,SliceRole,SlicePrivilege,Site,Reservation,Sliver
+from core.models import *
 from django.http import HttpResponse
+from django.core import urlresolvers
 import traceback
 
 if os.path.exists("/home/smbaker/projects/vicci/cdn/bigquery"):
@@ -47,6 +48,64 @@
 #        pprint( userDetails)
         return userDetails
 
+class TenantCreateSlice(View):
+    def post(self, request, *args, **kwargs):
+        sliceName = request.POST.get("sliceName", "0")
+        serviceClass = request.POST.get("serviceClass", "0")
+        imageName = request.POST.get("imageName", "0")
+        actionToDo = request.POST.get("actionToDo", "0")
+        print sliceName
+        if (actionToDo == "add"):
+           serviceClass = ServiceClass.objects.get(name=serviceClass)
+           site = request.user.site
+           #image = Image.objects.get(name=imageName)
+           newSlice = Slice(name=sliceName,serviceClass=serviceClass,site=site,imagePreference=imageName)
+           newSlice.save()
+        return newSlice
+
+
+def getTenantSliceInfo(user, tableFormat = False):
+    tenantSliceDetails = {}
+    tenantSliceData = getTenantInfo(user)
+    tenantServiceClassData = getServiceClassInfo(user)
+    if (tableFormat):
+       tenantSliceDetails['userSliceInfo'] = userSliceTableFormatter(tenantSliceData)
+       tenantSliceDetails['sliceServiceClass']=userSliceTableFormatter(tenantServiceClassData)
+    else:
+       tenantSliceDetails['userSliceInfo'] = tenantSliceData
+    tenantSliceDetails['sliceServiceClass']=userSliceTableFormatter(tenantServiceClassData)
+    tenantSliceDetails['image']=userSliceTableFormatter(getImageInfo(user))
+    tenantSliceDetails['network']=userSliceTableFormatter(getNetworkInfo(user))
+    tenantSliceDetails['deploymentSites']=userSliceTableFormatter(getDeploymentSites())
+    tenantSliceDetails['sites'] = userSliceTableFormatter(getTenantSitesInfo());
+    return tenantSliceDetails
+
+
+def getTenantInfo(user):
+    slices =Slice.objects.all()
+    userSliceInfo = []
+    for entry in slices:
+       sliceName = Slice.objects.get(id=entry.id).name
+       slice = Slice.objects.get(name=Slice.objects.get(id=entry.id).name)
+       sliceServiceClass = entry.serviceClass.name
+       preferredImage =  entry.imagePreference
+       numSliver = 0
+       sliceImage=""
+       sliceSite = {}
+       for sliver in slice.slivers.all():
+            numSliver +=sliver.numberCores
+           # sliceSite[sliver.deploymentNetwork.name] =sliceSite.get(sliver.deploymentNetwork.name,0) + 1
+            sliceSite[sliver.node.site.name] = sliceSite.get(sliver.node.site.name,0) + 1
+	    sliceImage = sliver.image.name
+       userSliceInfo.append({'sliceName': sliceName,'sliceServiceClass': sliceServiceClass,'preferredImage':preferredImage, 'sliceSite':sliceSite,'sliceImage':sliceImage,'numOfSlivers':numSliver})
+    return userSliceInfo
+
+def getTenantSitesInfo():
+	tenantSiteInfo=[]
+        for entry in Site.objects.all():
+		tenantSiteInfo.append({'siteName':entry.name})
+	return tenantSiteInfo
+
 def userSliceTableFormatter(data):
 #    pprint(data)
     formattedData = {
@@ -54,6 +113,36 @@
                     }
     return formattedData
 
+def getServiceClassInfo(user):
+    serviceClassList = ServiceClass.objects.all()
+    sliceInfo = []
+    for entry in serviceClassList:
+          sliceInfo.append({'serviceClass':entry.name})
+    return sliceInfo
+
+def getImageInfo(user):
+    imageList = Image.objects.all()
+    imageInfo = []
+    for imageEntry in imageList:
+          imageInfo.append({'Image':imageEntry.name})
+    return imageInfo
+
+def getNetworkInfo(user):
+   #networkList = Network.objects.all()
+    networkList = ['Private Only','Private and Publicly Routable']
+    networkInfo = []
+    for networkEntry in networkList:
+          #networkInfo.append({'Network':networkEntry.name})
+          networkInfo.append({'Network':networkEntry})
+    return networkInfo
+
+def getDeploymentSites():
+    deploymentList = Deployment.objects.all()
+    deploymentInfo = []
+    for entry in deploymentList:
+        deploymentInfo.append({'DeploymentSite':entry.name})
+    return deploymentInfo
+
 def getSliceInfo(user):
     sliceList = Slice.objects.all()
     slicePrivs = SlicePrivilege.objects.filter(user=user)
@@ -61,6 +150,13 @@
     for entry in slicePrivs:
 
         slicename = Slice.objects.get(id=entry.slice.id).name
+        slice = Slice.objects.get(name=Slice.objects.get(id=entry.slice.id).name)
+        sliverList=Sliver.objects.all()
+        sites_used = {}
+        for sliver in slice.slivers.all():
+             #sites_used['deploymentSites'] = sliver.node.deployment.name
+             # sites_used[sliver.image.name] = sliver.image.name
+             sites_used[sliver.node.site.name] = sliver.numberCores
         sliceid = Slice.objects.get(id=entry.slice.id).id
         try:
             sliverList = Sliver.objects.filter(slice=entry.slice.id)
@@ -76,7 +172,10 @@
             sitecount = 0
 
         userSliceInfo.append({'slicename': slicename, 'sliceid':sliceid,
-                           'role': SliceRole.objects.get(id=entry.role.id).role, 'slivercount': slivercount, 'sitecount':sitecount})
+                              'sitesUsed':sites_used,
+                              'role': SliceRole.objects.get(id=entry.role.id).role,
+                              'slivercount': slivercount,
+                              'sitecount':sitecount})
 
     return userSliceInfo
 
@@ -110,6 +209,10 @@
     def get(self, request, **kwargs):
         return HttpResponse(json.dumps(getUserSliceInfo(request.user, True)), mimetype='application/javascript')
 
+class TenantViewData(View):
+    def get(self, request, **kwargs):
+        return HttpResponse(json.dumps(getTenantSliceInfo(request.user, True)), mimetype='application/javascript')
+
 class DashboardSummaryAjaxView(View):
     def get(self, request, **kwargs):
         return HttpResponse(json.dumps(hpc_wizard.get_hpc_wizard().get_summary_for_view()), mimetype='application/javascript')
diff --git a/planetstack/core/serializers.py b/planetstack/core/serializers.py
index b83157b..5bbe7aa 100644
--- a/planetstack/core/serializers.py
+++ b/planetstack/core/serializers.py
@@ -124,6 +124,7 @@
                   'network_id',
                   'router_id',
                   'subnet_id',
+                  'imagePreference',
                   'site',
                   'slivers',
                   'updated',
diff --git a/planetstack/core/static/planetstack.css b/planetstack/core/static/planetstack.css
index c780f5c..18b815e 100644
--- a/planetstack/core/static/planetstack.css
+++ b/planetstack/core/static/planetstack.css
@@ -1023,3 +1023,88 @@
     font-size: 24px;
     font-weight: bold;
 }
+
+.tenant-row{
+   padding-bottom: 0.7%;
+}
+
+
+/***********TENANT VIEW*************/
+
+#image-dropdown,#slice-image-value,#adv-slice-image-value{
+ margin-left: 5%;
+}
+
+#network-dropdown,#adv-network-dropdown{
+ margin-left: 3.7%;
+}
+
+#service-level-dropdown,#service-level-value,#adv-service-level-dropdown,#adv-service-level-value{
+ margin-left: 0.2% !important;
+}
+
+#slice-name-value,#adv-slice-name-value{
+   margin-left: 2%;
+}
+
+#advanced-tenant,#basic-tenant,#sliver-btn,#save-btn{
+  float:right;
+}
+
+#sliver-btn,#save-btn,#create-slice-btn{
+  margin-top:1%;
+}
+
+
+.ui-widget input{
+        border-radius: 0px !important;
+margin: 1.5% 0 0 5% !important;
+height: 20px !important;
+width: 100px !important;
+}
+
+.ui-dialog-buttonset .ui-button{
+border-radius: 0 !important;
+background-color: grey !important;
+font-weight: bold !important;
+font-size: 0.9em; !important
+}
+
+.ui-dialog-titlebar{
+border-radius: 0 !important;
+background-color: grey !important;
+}
+
+.create-slice-row{
+   margin-bottom:3%;
+}
+
+.create-slice-row label{
+   margin-right:1%;
+}
+
+.create-slice-row select{
+   height:24px;
+   width: 196px;
+   font-size: 0.9em !important;
+
+}
+
+#new-slice-name{
+     width: 194px !important;
+     margin-left: 16% !important;
+}
+
+#new-site-name{
+    margin-left: 20%;
+}
+
+#new-image{
+  margin-left: 15%;
+}
+
+#tooltip{
+font-size:0.7em;
+color:red;
+display:none;
+}
