diff --git a/xos/configurations/frontend/docker-compose.yml b/xos/configurations/frontend/docker-compose.yml
index dc05a94..fae13ab 100644
--- a/xos/configurations/frontend/docker-compose.yml
+++ b/xos/configurations/frontend/docker-compose.yml
@@ -22,6 +22,7 @@
       - ../common/xos_common_config:/opt/xos/xos_configuration/xos_common_config
       - ../../core/xoslib:/opt/xos/core/xoslib
       - ../../core/static:/opt/xos/core/static
+      - ../../core/dashboard:/opt/xos/core/dashboard
       - ../../core/templatetags:/opt/xos/core/templatetags
       - ../../templates/admin:/opt/xos/templates/admin
       - ../../configurations:/opt/xos/configurations
diff --git a/xos/core/dashboard/views/home.py b/xos/core/dashboard/views/home.py
index e67fb03..baf0435 100644
--- a/xos/core/dashboard/views/home.py
+++ b/xos/core/dashboard/views/home.py
@@ -1,5 +1,6 @@
 from view_common import *
 from django.http import HttpResponseRedirect
+import sys
 
 class LoggedInView(TemplateView):
     def get(self, request, name="root", *args, **kwargs):
@@ -26,7 +27,11 @@
         context = getDashboardContext(request.user, context)
 
         if name=="root":
-            return self.multiDashboardView(request, context)
+            # maybe it is a bit hacky, didn't want to mess up everything @teone
+            user_dashboards = request.user.get_dashboards()
+            first_dasboard_name = user_dashboards[0].name.lower();
+            return self.singleDashboardView(request, first_dasboard_name, context)
+            # return self.multiDashboardView(request, context)
         elif kwargs.get("wholePage",None):
             return self.singleFullView(request, name, context)
         else:
diff --git a/xos/core/static/xos.bak.css b/xos/core/static/xos.bak.css
deleted file mode 100644
index 85541d2..0000000
--- a/xos/core/static/xos.bak.css
+++ /dev/null
@@ -1,1405 +0,0 @@
-/************************
-colors:
-    tab - active/focus color
-    background-color: #105E9E !important;
-
-ONLab darker blue select :: background-color: #004775;
-#0170BB
-    left-nav
-    background-color: #448CCA;
-    background-color // normal: #B4CADF
-91BFE4
-
-*************************/
-
-html, body, body.login {
-  height: 100%;
-  min-height: 100%;
-  margin: 0;
-}
-
-body{
-  max-width: 100%;
-  overflow-x: hidden;
-}
-
-#wrap {
-  min-height: 100%;
-}
-
-/* ************************* LOGIN PAGE ************************* */
-
-body.login img.logo{
-   width: 250px;
-   display: block;
-   margin: 20px auto;
-   padding-top: 20px;
-}
-
-/* ************************* SIDENAV TOGGLE ************************* */
-
-#wrapper {
-    padding-left: 0;
-    -webkit-transition: all 0.5s ease;
-    -moz-transition: all 0.5s ease;
-    -o-transition: all 0.5s ease;
-    transition: all 0.5s ease;
-    min-height: 900px;
-}
-
-#wrapper.toggled {
-    padding-left: 250px;
-}
-
-#sidebar-wrapper {
-  z-index: 1000;
-  position: fixed;
-  left: 250px;
-  width: 0;
-  height: 100%;
-  margin-left: -250px;
-  overflow-y: auto;
-  -webkit-transition: all 0.5s ease;
-  -moz-transition: all 0.5s ease;
-  -o-transition: all 0.5s ease;
-  transition: all 0.5s ease;
-  background: white;
-}
-
-#wrapper.toggled #sidebar-wrapper {
-  width: 250px;
-  padding: 10px;
-}
-
-#page-content-wrapper {
-    width: 100%;
-    position: absolute;
-    padding: 15px;
-    min-height: 900px;
-}
-
-#page-content-wrapper .container-fluid {
-  min-height: 900px;
-}
-
-.ui-tabs-panel {
-    min-height: 700px;
-}
-
-#wrapper.toggled #page-content-wrapper {
-    position: absolute;
-    margin-right: -250px;
-}
-
-@media(min-width:768px) {
-    #wrapper {
-        padding-left: 250px;
-    }
-
-    #wrapper.toggled {
-        padding-left: 0;
-    }
-
-    #sidebar-wrapper {
-      width: 250px;
-      padding: 10px;
-    }
-
-    #wrapper.toggled #sidebar-wrapper {
-        width: 0;
-    }
-
-    #page-content-wrapper {
-        padding: 20px;
-        position: relative;
-    }
-
-    #wrapper.toggled #page-content-wrapper {
-        position: relative;
-        margin-right: 0;
-    }
-}
-
-.navbar-toggle{
-  border: 1px solid #08C;
-}
-
-.navbar-toggle .icon-bar{
-  background: #08C;
-}
-/* ************************* END SIDENAV TOGGLE ************************* */
-
-/* ************************* HEADER STYLE ************************* */
-
-.header{
-  background-color: #ffffff !important;
-  border-bottom: 3px solid #C5CCD4;
-  margin-bottom: 14px;
-  height: 85px;
-}
-
-.header .logo{
-  max-height: 80px;
-}
-
-.nav-quick-search{
-  margin: 30px -10px 0px 0px !important;
-  padding:0 25px 0 0 !important;
-  float:right !important;
-}
-
-.nav-quick-search .search-query{
-  border-radius:5px;
-  border:none;
-  box-shadow:0px;
-  background-color:lightGrey;
-  padding-left: 27px;
-}
-
-
-.header #branding {
-  width: 100%;
-  height:60px;
-  border-right:none;
-}
-
-.header a {
-  color: #08C;
-  font-weight: bold;
-  /*border-bottom: 1px solid #C5CCD4;*/
-}
-a {
-  color: #08C;
-  font-weight: bold;
-  /*border-bottom: 1px solid #C5CCD4;*/
-}
-
-
-#branding2{
-height:20px;
-width:100%;
-color: #333;
-/*background-color: #000000;*/
-margin-bottom: 10px;
-}
-
-.header #user-tools {
-    padding: 12px 20px 0px 0px;
-    float: right;
-    margin-top: -5px;
-}
-
-.header .header-content .date{
-padding-left:10px;
-}
-
-.header .header-content .time {
-font-weight: normal;
-}
-.header .header-content.header-content-first{
-height: 15px;
-padding-bottom: 0px;
-}
-
-.header .header-content {
-padding-bottom: 0px;
-padding: 7px 0 0 0px;
-}
-
-/************************* END HEADER *************************/
-
-/************************* FOOTER *************************/
-
-.footer{
-  z-index: 1001;
-  position: fixed;
-}
-
-/* FIXME */
-@media(max-width:768px) {
-  .footer{
-    display: none;
-  }
-
-  #page-content-wrapper{
-    padding-bottom: 60px;
-  }
-}
-
-.footer .content .statusMsg {
-    float: right;
-    padding: 15px 20px 0 0;
-    display: block;
-}
-/************************* END FOOTER *************************/
-
-/************************* NAV *************************/
-
-#sidebar-wrapper {
-  -webkit-box-shadow: 3px 0px 5px 0px rgba(50, 50, 50, 0.75);
-  -moz-box-shadow:    3px 0px 5px 0px rgba(50, 50, 50, 0.75);
-  box-shadow:         3px 0px 5px 0px rgba(50, 50, 50, 0.75);
-}
-
-#sidebar-wrapper .logo{
-  max-width: 100%;
-}
-
-.icon-home ,.icon-deployment ,.icon-site ,.icon-slice ,.icon-user, .icon-reservation, .icon-app, .icon-cog {
-  background-position: left center;
-  width:22px;
-  height:22px;
-  display: inline-block;
-  margin-right: 10px;
-  position: relative;
-  top: 5px;
-}
-
-.icon-app {
-background-image: url("opencloudApp.png");
-}
-.icon-home {
-/*  Going with darker standard color nav -- so using over png's background-image: url("Home.png"); */
-background-image: url("Home.png");
-}
-.icon-deployment{
-background-image: url("Deployments.png");
-}
-.icon-site{
-background-image: url("Sites.png");
-}
-.icon-slice{
-background-image: url("Slices.png");
-}
-.icon-user{
-background-image: url("Users.png");
-}
-.icon-reservation{
-background-image: url("Reservations.png");
-}
-.icon-cog{
-background-image: url("Services.png");
-}
-
-#sidebar-wrapper>ul>li.active>a>.icon-home ,
-/*#sidebar-wrapper>ul>li:hover>a>.icon-home ,*/
-#sidebar-wrapper>ul>li.focus>a>.icon-home{
-  background-image: url("Home_over.png");
-}
-
-#sidebar-wrapper>ul>li.active>a>.icon-deployment,
-/*#sidebar-wrapper>ul>li:hover>a>.icon-deployment,*/
-#sidebar-wrapper>ul>li.focus>a>.icon-deployment{
-  background-image: url("Deployments_over.png");
-}
-#sidebar-wrapper>ul>li.active>a>.icon-site,
-/*#sidebar-wrapper>ul>li:hover>a>.icon-site,*/
-#sidebar-wrapper>ul>li.focus>a>.icon-site{
-  background-image: url("Sites_over.png");
-}
-#sidebar-wrapper>ul>li.active>a>.icon-slice,
-/*#sidebar-wrapper>ul>li:hover>a>.icon-slice,*/
-#sidebar-wrapper>ul>li.focus>a>.icon-slice{
-  background-image: url("Slices_over.png");
-}
-#sidebar-wrapper>ul>li.active>a>.icon-user,
-/*#sidebar-wrapper>ul>li:hover>a>.icon-user,*/
-#sidebar-wrapper>ul>li.focus>a>.icon-user{
-  background-image: url("Users_over.png");
-}
-#sidebar-wrapper>ul>li.active>a>.icon-reservation,
-/*#sidebar-wrapper>ul>li:hover>a>.icon-reservation,*/
-#sidebar-wrapper>ul>li.focus>a>.icon-reservation{
-  background-image: url("Reservations_over.png");
-}
-
-#sidebar-wrapper>ul>li.active>a>.icon-cog,
-/*#sidebar-wrapper>ul>li:hover>a>.icon-cog,*/
-#sidebar-wrapper>ul>li.focus>a>.icon-cog{
-  background-image: url("Services_over.png");
-}
-/************************* END NAV *************************/
-
-/************************* FORM TWEAKS *************************/
-@media (min-width: 992px){
-    .form-column.col-lg-4 {
-        width: 66.66666667%;
-    }
-}
-/************************* FORM TWEAKS *************************/
-
-/*   CSS for jquery Tabs */
-#hometabs {
-border-bottom: 1px solid #105E9E;
-font-size: 12px;
-border: 0px;
-}
-
-.ui-tabs .ui-tabs-nav {
-  padding: 0 !important;
-}
-
-.ui-tabs-active {
-    color: #ffffff;
-    background-color: #105E9E;
-    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
-    font-weight: normal;
-}
-.nav > li > a:active {
-    color: #ffffff;
-    background-color: #105E9E;
-    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
-    
-}
-.nav > li > a:focus {
-    color: #ffffff;
-    background-color: #105E9E;
-    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
-    
-}
-.ui-state-focus a,
-.ui-state-focus a:link{
-    color: #ffffff;
-    background-color: #105E9E;
-    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
-}
-
-.ui-state-default a {
-    padding: 20px !important;
-    line-height: 20px !important;
-    transition: all .5s ease-in-out;
-}
-
-.ui-state-active a,
-.ui-state-active a:link{
-    color: #ffffff !important;
-    background-color: #105E9E !important;
-    text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
-    font-weight: normal;
-    font-size: 20px;
-}
-
-
-.alignCenter {
-    text-align: center !important;
-    align: center !important;
-}
-table.dataTable tr.odd {
-background-color: white !important;
-}
-table.dataTable tr.odd td.sorting_1 {
-background-color: white !important;
-}
-table.dataTable tr.even td.sorting_1 {
-background-color: white !important;
-}
-table.dataTable thead th div.DataTables_sort_wrapper {
-    font-weight: bold;
-}
-.dashboard-hpc-instance .ui-widget-header, .dashboard-hpc-instance .ui-dialog-title, .dashboard-hpc-instance .ui-dialog-titlebar{
-}
-.ui-widget-overlay {
-    background: black !important;
-}
-.ui-corner-all {
-border-bottom-left-radius: 0px !important;
-border-bottom-right-radius: 0px !important;
-}
-
-#suit-center {
-  /* min-width: 977px !important; */
-}
-#openCloudTopPage {
-   margin-top: -25px;
-   margin-right: -90;
-   float: right;
-}
-#minDashboard {
-  /*min-width:625px; */
-  display:inline;
-  float: right;
-  border: 2px darkGrey;
-}
-.ui-state-default #hometabs, .ui-widget-content .ui-state-default #hometabs, .ui-widget-header .ui-state-default {
-background: none !important;
-border-top: 0px !important;
-border-left: 0px !important;
-border-right: 0px !important;
-}
-.ui-widget-header {
-background: none !important;
-border-top: 0px !important;
-border-left: 0px !important;
-border-right: 0px !important;
-}
-#suit_form_tabs {
-/*border-bottom: 1px solid #B5D1EA;*/
-border-bottom: 1px solid #105E9E !important;
-border-bottom-width: 5px !important;
-border-bottom-style: solid;
-/*border-bottom-color: rgb(181, 209, 234);*/
-border-bottom-color: #448CCA;
-color:#105E9E;
-}
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
-color: #105E9E ;
-}
-.save-box {
-  background-color: #ffffff;
-  margin: 2px;
-}
-.save-box .btn-info {
-  font-size: 14px;
-  padding: 10px 20px 10px 20px;
-}
-.btn-success {
-  font-size: 12px;
-  font-weight: normal;
-  padding: 5px 10px 5px 10px;
-}
-.btn-success, .save-box .btn-info {
-  background: #27AE5F;
-  background-image: -webkit-linear-gradient(top, #27AE5F, #27ae60);
-  background-image: -moz-linear-gradient(top, #27AE5F, #27ae60);
-  background-image: -ms-linear-gradient(top, #27AE5F, #27ae60);
-  background-image: -o-linear-gradient(top, #27AE5F, #27ae60);
-  background-image: linear-gradient(to bottom, #27AE5F, #27ae60);
-  -webkit-border-radius: 5;
-  -moz-border-radius: 5;
-  border-radius: 5px;
-  text-shadow: 1px 1px 3px #666666;
-  font-family: Arial;
-  color: #ffffff;
-  text-decoration: none;
-  letter-spacing: 1px;
-}
-
-.btn-success:hover, .save-box .btn-info:hover {
-  background: #2ecc71;
-  text-decoration: none;
-}
-
-
-
-.required:after {color: red ! important; font-size: 18px }
-#.btn-success {color:black}
-#suit-center {
-padding: 20px;
-width: 100%;
-/*min-width:650px;*/
-}
-.inner-two-columns .inner-center-column .tab-content {
-overflow-x: auto;
-margin-bottom: 15px;
-/*min-width: auto;*/
-width:100%;
-}
-.inner-two-columns .inner-center-column {
-#margin-right: 200px;
-#background-color: rgb(158, 163, 159);
-}
-label {
-display: block;
-font-weight: bold;
-margin-bottom: 5px;
-}
-
-/*For changing background color of suit center*/
-#suit-center {
-background-color: #ffffff;
-}
-
-.ui-tabs .ui-tabs-panel {
-  position:relative;
-}
-
-
-.nav-tabs-suit li{
-/*background-color: #CDE7FF;*/
-background-color: #FFFFFF;
-border-top-left-radius: 3px;
-border-top-right-radius: 3px;
-border-bottom-left-radius: 0px;
-border-bottom-right-radius: 0px;
-}
-
-.nav-tabs-suit li a {
-background-color: 
-/*background-color: #CDE7FF;*/
-font-weight: normal;
-color: #105E9E;
-/*border-radius: 3px;*/
-border-top-left-radius: 3px;
-border-top-right-radius: 3px;
-border-bottom-left-radius: 0px;
-border-bottom-right-radius: 0px;
-border: none;
-box-shadow: none;
-}
-
-.nav-tabs-suit li.active{
-/*Changed on Dec 11*/
-/*background-color: #448CCA;*/
-     background-position: 50% 100%; 
-background-image:url('down_arrow.png');
-}
-
-.nav-tabs-suit li.hover{
-/*Changed on Dec 11*/
-/*background-color: #448CCA;*/
-color:#ffffff;
-/*font-size: 1.2em;*/
-font-weight: bold;
-}
-
-.nav-tabs-suit li.active a {
-background-color: #ffffff;
-/*background-color: #448CCA;*/
-background-color: #105E9E;
-color:#ffffff;
-font-weight:normal;
-padding-top:10px;
-text-decoration:none;
-}
-
-.nav-tabs-suit li.active a:after{ /*arrow added to downarrowdiv DIV*/
-width: 0;
-height: 0;
-border-left: 5px solid transparent;
-border-right: 5px solid transparent;
-border-top: 5px solid #2f2f2f;
-font-size: 0;
-line-height: 0;
-}
-
-.nav-tabs-suit li.active a:hover,
-.nav-tabs-suit li a:hover{
-  background-color: #105E9E;
-  /*background-color: #515151;*/
-  font-weight:normal;
-  /*font-size: 1.2em;*/
-  color:#ffffff;
-  /*padding-top:10px;
-  text-decoration:none;*/
-}
-
-.nav-tabs>.active>a{
-  border: none;
-}
-
-.nav-tabs-suit li a{
-  font-weight: normal;
-}
-
-.nav-tabs-suit li a:hover{
-  border: none;
-  color: #ffffff;
-  padding-top:10px;
-  /*border: 1px solid;*/
-  /*letter-spacing: 1px;*/
-  /*text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;*/
-}
-
-.nav-tabs-suit li.active a:hover{
-  /*border: none;*/
-}
-
-.nav-tabs-suit > li.active > a:focus {
-  background-color: #105E9E;
-  font-weight: normal;
-}
-
-.breadcrumb li a {
-/*font-weight:bold;*/
-}
-
-.nav-tabs {
-/*
-border-bottom: 1px solid #B5D1EA;*/
-}
-
-.nav-tabs>li {
-margin-bottom: 0px;
-}
-
-/*.icon-home {
-background-image: url('home.png');
-background-repeat: no-repeat;
-background-position: 85%;
-}*/
-
-/*Changed Dec11*/
-
-/*
-.icon-home {
-background-image: url('home.png');
-background-repeat: no-repeat;
-background-position: 40%;
-width: 25px;
-height: 25px;
-vertical-align: middle;
-}
-*/
-
-
-.left-nav>ul>li.active>a:after {
-content: none;
-
-}
-
-/**
-* login page
-*/
-
-
-/*.login #wrap {
-background-color: #ffffff;
-}*/
-
-.login #content-main {
-width: 280px !important;
-min-width: 180px;
-height: 265px;
-  -webkit-border-radius: 5;
-  -moz-border-radius: 5;
-  border-radius: 5px;
-/*background: #EBF0F2;*/
-background: rgba(255,255,255,0.85);
-/*background: rgba(235,240,242,0.6);*/
-overflow: visible !important;
-}
-
-.login #content-main h1 {
-/*background: #EBF0F2;*/
-/*background: url("open-cloud-login-themed-light.png") no-repeat scroll 40% center / 89% auto rgba(235, 240, 242, 0);*/
-/*background: url("cord_logo_3.png") no-repeat scroll 40% center / 89% auto rgba(235, 240, 242, 0);*/
-/*background-position: 40%;*/
-height: 55px;
-background-repeat: no-repeat;
-font-size: 0px;
-padding-top: 70px;
-}
-.login #content-main h1 i {
-display:none;
-}
-
-.login #content-main h1 img{
-padding-left: 8px;
-}
-
-.login #content-main .control-group .control-label{
-display:none;
-}
-
-.login #content-main form input[type=text], .requestDialog.ui-widget input{
-width: 94%;
-padding:4px 6px;
-border-radius: 0px;
-height: 30px;
-background-color: rgb(250, 255, 189);
-/*background-image: url('name.png');*/
-background-repeat: no-repeat;
-background-position: 95%;
-font-size: 12px;
-}
-
-.login #content-main form input[type=password] {
-  width: 94%;
-padding:4px 6px;
-font-size: 12px;
-border-radius: 0px;
-height: 30px;
-background-color: #E5E5E5;
-background-image: url('password.png');
-background-repeat: no-repeat;
-background-position: 95%;
-}
-
-.login #content-main .submit-row{
-background: #EBF0F215px;
-background: rgba(235,240,242,0.0);
-border-top:none;
-padding-top:0px;
-box-shadow: none;
-}
-
-.login #content-main .submit-row .btn-info {
-background-color : #448CCA;
-background-image: none;
-height: 40px;
-border-radius: 0px;
-width: 100%;
-margin-bottom: 4px;
-}
-#forgot_pwd{
-font-size: 11px;
-font-style: normal;
-text-decoration: none;
-}
-
-#create_acct{
-font-size: 11px;
-font-style: normal;
-text-decoration: none;
-padding-left: 45px;
-}
-
-/*Dec 11 2013*/
-
-.nav-tabs-suit li.active a{
-letter-spacing: 1px;
-text-shadow: rgb(46, 43, 43) 0.1em 0.1em 0.2em;
-/*text-shadow: none;
--webkit-box-shadow: none;
--moz-box-shadow: none;
-box-shadow: none;
-*/
-}
-
-/*.nav-tabs-suit li.active {*/
- /*background: transparent url('home.png') no-repeat scroll center bottom;*/
-  /*border-left: 5px solid transparent;
-border-right: 5px solid transparent;
-border-top: 5px solid #2f2f2f;
-font-size: 0;
-line-height: 0;
-width: 0;;
-height: 0;
-   margin: 0;
-}*/
-
-.login {
-  background-image: url('bg.jpg');
-  background-size: cover;
-  background-position: center; 
-  background-repeat: no-repeat;
-}
-
-
-.login #content-main {
-	float: none;
-    height: 330px;
-    margin: 100px auto 0;
-    width: 265px;
-}
-
-/** Leave room for scroll bar now that contents can be appropriately scrolled **/
-.form-horizontal .inline-group .add-row {
-    margin: -1px -1px 15px 0px;
-}
-
-/** Setting overflow and 1kpx to deal with inlines/forms overlapping on 
-    browser resizes **/
-#content-main {
-    overflow-x:auto;
-    /*min-width: 1000px;*/
-}
-
-.tab-content tab-content-main {
-    overflow-x: auto !important;
-}
-
-#wrap{
-background:none;
-}
-
-.noclearfix {
-    display:block; clear:left; width:0px; height:0px;
-}
-
-body{
-background-color:#ffffff;
-}
-
-.suit-column{
-background-color:#ffffff;
-}
-/*Added on 13th*/
-
-/*.input-icon {
-margin-right: 30px;
-}
-
-.icon-search{
-
-margin-left: -165px;
-}*/
-
-.login #content-main form {
-margin: 5px 15px 0;
-}
-
-.login {
-height: 84.5%;
-}
-
-
-.login #wrap {
-    background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
-    overflow: hidden;
-    padding: 0f;
-}
-#wrap {
-    background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
-}
-#wrap {
-    padding-bottom: 60px;
-}
-
-.forgotLink {
-	width: 45%;
-	text-align: left;
-	float: left;
-}
-
-#request-account-form{
-	display:none;
-}
-
-#requestAccountLink {
-	width: 55%;
-	text-align: right;
-	float: left;
-	padding-left: 21%;
-	cursor: pointer;
-	color: #448CCA;
-	text-decoration: underline;	
-}
-
-.login .btn-info {
-	color: #FFF;
-}
-
-.nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus {
-	/*background-color: #448CCA;*/
-	background-color: #105E9E;
-	color: #FFF;
-	border: none;
-}
-
-/*Added by Beena for adding the three components in dashboard*/
-.breadcrumb{
-	display:inline-block;
-	background-color: #fff;
-
-}
-
-.nodetextbox{
-	/*background-color: #ededed;*/
-	line-height: 25px;
-	width: 150px; 
-	text-align: center;
-	font-weight: bold;
-	margin-left:0px;
-	display:inline-block;
-	border:none;
-	font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
-	font-size: 8px;
-}
-
-.nodelabel{
-width: 20px;
-display: inline-block;
-border-radius: 0px;
-border:1px solid #000;
-/*line-height: 23px;*/
-text-align: center;
-font-weight: normal;
-}
-
-#user-tools {
-  font-weight: bold;
-}
-.header-content .header-column {
-	display: none;
-}
-.header .input-icon {
-    background-image: url("Search.png");
-    background-repeat: no-repeat;
-background-position:left center;
-opacity:1;
-    background-size: 100%;
-    vertical-align:middle;
-	margin-right: -30px;
-    /*margin-top: 5px;*/
-    position: relative;
-    height: 22px;
-    width: 22px;
-}
-
-.header .icon-search {
-	/*background-image: url("search.png") !important;
-    background-repeat: no-repeat !important;
-    background-size: 120% auto !important;
-    background-position: 0;*/
-}
-
-#dashboardHPC {
-    padding-bottom: 10px;
-}
-.summary-attr {
-    padding-right: 20px;
-}
-.summary-attr-util {
-    padding-right: 20px;
-    color: green;
-}
-.SiteDetail {
-color: darkBlue;
-    font-size: 1.5em;
-}
-#addInstances {
- color: green;
-text-decoration: underline;
-    padding-right: 20px;
-}
-#remInstances {
- color: red;
- text-decoration: underline;
-}
-#map-us {
-    padding-top: 10px;
-    width: 700px;
-    height: 400px;
-}
-
-.minidashbutton {
-	-moz-box-shadow:inset 0px 1px 0px 0px #ffffff;
-	-webkit-box-shadow:inset 0px 1px 0px 0px #ffffff;
-	box-shadow:inset 0px 1px 0px 0px #ffffff;
-	background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ffffff), color-stop(1, #f6f6f6));
-	background:-moz-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);
-	background:-webkit-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);
-	background:-o-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);
-	background:-ms-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);
-	background:linear-gradient(to bottom, #ffffff 5%, #f6f6f6 100%);
-	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f6f6f6',GradientType=0);
-	background-color:#ffffff;
-	-moz-border-radius:6px;
-	-webkit-border-radius:6px;
-	border-radius:6px;
-	border:1px solid #dcdcdc;
-	display:inline-block;
-	cursor:pointer;
-	color:#666666;
-	font-family:arial;
-	font-size:15px;
-	font-weight:bold;
-	padding:6px 24px;
-	text-decoration:none;
-	text-shadow:0px 1px 0px #ffffff;
-}
-.minidashbutton:hover {
-	background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #f6f6f6), color-stop(1, #ffffff));
-	background:-moz-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
-	background:-webkit-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
-	background:-o-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
-	background:-ms-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
-	background:linear-gradient(to bottom, #f6f6f6 5%, #ffffff 100%);
-	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f6f6f6', endColorstr='#ffffff',GradientType=0);
-	background-color:#f6f6f6;
-}
-
-.newMiniDashboard {
-    border: 1px solid green;
-    width: auto;
-}
-
-.endDashPair {
-    clear: left;
-}
-.miniDashPair {
-    float: left;
-    width: auto;
-    margin-left: 20px;
-}
-
-.miniDashPair label {
- text-align: center;
-}
-/* Charts CSS */
-p.numeral
-{
-	font-size:32pt;
-	color:#ffffff;
-	opacity: 0.7;
-	font-family:Helvetica Neue;
-	font-weight:100;
-	text-align:center;
-	line-height:75%;
-}
-
-.helper-text
-{
-	border: 1px solid #fff;
-	padding: 7px;
-	border-radius: 18px;
-	font-size:13pt;
-	color:#ffffff;
-	opacity: 0.7;
-	font-family:Helvetica Neue;
-	font-weight:200;
-	text-align:center;
-	line-height:100%;
-}
-p.osobject
-{
-	font-size:12pt;
-	color:#ffffff;
-	opacity: 0.7;
-	font-family:Helvetica Neue;
-	font-weight:200;
-	text-align:center;
-	line-height:100%;
-}
-
-p.heading
-{
-	font-size:20px;
-        letter-spacing: 1px;
-	color: black;
-	font-family:Arial;
-	font-weight:bold;
-	text-align:center;
-}
-
-/*p.heading
-{
-	font-size:32pt;
-	color:#ffffff;
-	opacity: 0.7;
-	font-family:Helvetica Neue;
-	font-weight:200;
-	text-align:center;
-}*/
-
-div.graph 
-{
-	height:340px;
-}
-
-div.numeral 
-{
-	height:120px;
-}
-
-div.heading 
-{
-	height:10px;
-}
-
-div.padding 
-{
-	height:20px;
-}
-
-div.chartContainer
-{
-	/*background-image:url('chartsBg.jpg');*/
-	width:527px;
-	height:400px;
-	border:1px;
-}
-
-/* D3 */
-
-.axis path,
-.axis line {
-  fill: none;
-  stroke: #ffffff;
-  opacity: 0.7;
-  shape-rendering: crispEdges;
-}
-
-
-.x.axis path {
-  display: none;
-}
-
-.x.axis text {
-  fill: white;
-  opacity: 0.5;
-}
-
-.y.axis text {
-  opacity: 0.5;
-  fill: white;
-}
-
-.y.axis text.legend {
-  opacity: 1.0;
-  fill: white;
-  font-size:8pt;
-}
-
-.line {
-  fill: none;
-  stroke: white;
-  stroke-width: 3px;
-  opacity: 0.6;
-}
-
-
-/******  Added in so that we can have a loader show as charts get ready to render ***/
-.loading {
-    //background-color: orange;
-    background-image: url(spinner.gif) no-repeat center middle;
-    text-align: center;
-    font-size: 20px;
-    height: 100%
-/*    width: auto;*/
-    float: left;
-    padding: 10px;
-}
-/* Charts CSS */
-
-#tabs-4 {
-    margin: 40px;
-    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%;
-}
-
-
-#adv-slice-image-value{
-margin-right: 0.5%;
-}
-
-#adv-network-value {
-margin-right: 0.3%;
-}
-
-#network-dropdown,#adv-network-dropdown,#adv-network-value{
- 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%;
-}
-#adv-dataset-dropdown{
-margin-left: 3.7%;
-}
-#advanced-tenant,#basic-tenant,#instance-btn,#save-btn{
-  float:right;
-}
- #delete-slice-btn,#download-details,#add-user-btn{
-	margin-left:1%;
-}
-
-#instance-btn,#save-btn,#create-slice-btn,#delete-slice-btn,#add-user-btn,#download-details{
-  margin-top:1%;
-}
-
-.tenantDialog.ui-widget input{
-        border-radius: 0px !important;
-	height: 12px !important;
-	width: 180px !important;
-	margin-right: 10% !important;
-	float: right;
-}
-
-.tenantDialog .ui-dialog-buttonset .ui-button{
-border-radius: 0 !important;
-background-color: grey !important;
-font-weight: bold !important;
-font-size: 0.9em; !important
-}
-
-.tenantDialog .ui-dialog-titlebar{
-border-radius: 0 !important;
-background-color: grey !important;
-}
-
-.create-slice-row{
-	margin-bottom: 4%;
-	clear: both;
-	height: 25px;
-}
-
-.create-slice-row label, .tenantDialog label{
-   margin-right:1%;
-   float:left;
-}
-
-.create-slice-row select{
-   height:24px;
-   width: 196px;
-   font-size: 0.9em !important;
-}
-
-.tenant-create-slice{
-	float:right;
-	margin-right: 10% !important;
-}
-
-#delete-slice{
-float: right;
-}
-
-#tooltip,#adv-tooltip,#basic-tooltip{
-font-size:0.7em;
-color:red;
-display:none;
-}
-
-#tenantSliceDataWrapper {
-	padding: 1% 0;
-}
-
-#advancedTenantSliceDataWrapper .help-inline{
-	font-size: 11px;
-	color: #999;
-	padding-bottom: 1%;
-}
-
-.create-slice-row label{
-	clear:both;
-	margin-right: 1%;
-}
-
-#advNumOfInstances{
-        margin-right: 1% !important;
-}
-
-#private-vol-checkbox{
-margin: 0 0 1% 1%;
-}
-
-.public-key-warning{
-text-align: center;
-display:none;
-}
-
-#private-vol{
-margin-right: 15% !important;
-}
-.customize_row {
-  display: table;
-}
-.customize_column {
-  display: table-cell;
-  padding: 10px;
-}
-
-.request-form-row{
-padding:1% 8%;
-}
-
-.requestDialog{
-background-color: white;
-border-radius: 8px;
-width: 30% !important;
-height: 40% !important;
-margin-top: -16%;
-top: -103.703125px !important;
-}
-
-.request-form-row label{
-	float: left;
-}
-
-
-.requestDialog .ui-dialog-buttonset .ui-button{
-border-radius: 0 !important;
-background-color: grey !important;
-font-weight: bold !important;
-font-size: 0.9em; !important
-}
-
-.requestDialog .ui-dialog-titlebar-close{
-float:right;
-}
-
-#request-signup{
-height: 40px !important;
-margin: 0 14%;
-float: left;
-background-color: #448CCA;
-background-image: none;
-width: 70% !important;
-}
-
-.requestDialog .ui-dialog-titlebar{
-border-radius: 0 !important;
-height: 25px;
-padding-top: 2%;
-}
-
-.requestDialog #ui-id-1{
-padding-left: 28%;
-font-size: medium;
-}
-
-#request-site-name{
-	width: 98%;
-}
-
-/* SUIT CHANGES */
-
-.form-buttons {
-    margin-top: 20px;
-    padding: 10px;
-    border-top: 1px solid #cccccc;
-}
-
-.form-buttons a.deletelink {
-  color: #fff;
-  background-color: #d9534f;
-  border-color: #d43f3a;
-
-  display: inline-block;
-  margin-bottom: 0;
-  font-weight: normal;
-  text-align: center;
-  vertical-align: middle;
-  -ms-touch-action: manipulation;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-image: none;
-  border: 1px solid transparent;
-  white-space: nowrap;
-  padding: 5px 12px;
-  font-size: 12px;
-  line-height: 1.42857143;
-  border-radius: 4px;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-
-/* MODAL */
-.ui-dialog{
-  z-index: 4000 !important;
-}
-
-button.ui-dialog-titlebar-close{
-  font-family: 'Glyphicons Halflings' !important;
-  display: inline-block;
-}
-
-button.ui-dialog-titlebar-close:after {
-    content: "\e014";
-}
-/* VCPe ADMIN FIX */
-/*form#vcpeservice_form ul li {
-    display: inline-block;
-    background: red;
-    margin-top: 10px;
-    width: auto;
-    padding: 10px;
-    border-radius: 5px;
-}
diff --git a/xos/core/templatetags/core_tags.py b/xos/core/templatetags/core_tags.py
index d3c2133..369cd71 100644
--- a/xos/core/templatetags/core_tags.py
+++ b/xos/core/templatetags/core_tags.py
@@ -1,5 +1,5 @@
 from django import template
-import sys
+# import sys
 from core.models import DashboardView
 from itertools import chain
 
@@ -10,7 +10,6 @@
     request = context['request']
     dashboards = request.user.get_dashboards()
     customize = DashboardView.objects.filter(name="Customize")
-    # debug = DashboardView.objects.filter(name="Customize").values()
-    print >>sys.stderr, request.user.get_dashboards()
+    # print >>sys.stderr, request.user.get_dashboards()
     result_list = list(chain(dashboards, customize))
     return {'dashboards': result_list}
\ No newline at end of file
