diff --git a/services/allocator/allocator.vdl.go b/services/allocator/allocator.vdl.go
index a3f2312..2e37a22 100644
--- a/services/allocator/allocator.vdl.go
+++ b/services/allocator/allocator.vdl.go
@@ -8,26 +8,187 @@
 package allocator
 
 import (
+	"time"
 	"v.io/v23"
 	"v.io/v23/context"
 	"v.io/v23/rpc"
+	"v.io/v23/vdl"
+	vdltime "v.io/v23/vdlroot/time"
 )
 
 var _ = __VDLInit() // Must be first; see __VDLInit comments for details.
 
 //////////////////////////////////////////////////
+// Type definitions
+
+// Instance describes a service instance.
+type Instance struct {
+	Handle        string
+	MountName     string
+	BlessingNames []string
+	CreationTime  time.Time
+}
+
+func (Instance) __VDLReflect(struct {
+	Name string `vdl:"v.io/x/ref/services/allocator.Instance"`
+}) {
+}
+
+func (x Instance) VDLIsZero() bool {
+	if x.Handle != "" {
+		return false
+	}
+	if x.MountName != "" {
+		return false
+	}
+	if len(x.BlessingNames) != 0 {
+		return false
+	}
+	if !x.CreationTime.IsZero() {
+		return false
+	}
+	return true
+}
+
+func (x Instance) VDLWrite(enc vdl.Encoder) error {
+	if err := enc.StartValue(__VDLType_struct_1); err != nil {
+		return err
+	}
+	if x.Handle != "" {
+		if err := enc.NextFieldValueString("Handle", vdl.StringType, x.Handle); err != nil {
+			return err
+		}
+	}
+	if x.MountName != "" {
+		if err := enc.NextFieldValueString("MountName", vdl.StringType, x.MountName); err != nil {
+			return err
+		}
+	}
+	if len(x.BlessingNames) != 0 {
+		if err := enc.NextField("BlessingNames"); err != nil {
+			return err
+		}
+		if err := __VDLWriteAnon_list_1(enc, x.BlessingNames); err != nil {
+			return err
+		}
+	}
+	if !x.CreationTime.IsZero() {
+		if err := enc.NextField("CreationTime"); err != nil {
+			return err
+		}
+		var wire vdltime.Time
+		if err := vdltime.TimeFromNative(&wire, x.CreationTime); err != nil {
+			return err
+		}
+		if err := wire.VDLWrite(enc); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextField(""); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func __VDLWriteAnon_list_1(enc vdl.Encoder, x []string) error {
+	if err := enc.StartValue(__VDLType_list_2); err != nil {
+		return err
+	}
+	if err := enc.SetLenHint(len(x)); err != nil {
+		return err
+	}
+	for _, elem := range x {
+		if err := enc.NextEntryValueString(vdl.StringType, elem); err != nil {
+			return err
+		}
+	}
+	if err := enc.NextEntry(true); err != nil {
+		return err
+	}
+	return enc.FinishValue()
+}
+
+func (x *Instance) VDLRead(dec vdl.Decoder) error {
+	*x = Instance{}
+	if err := dec.StartValue(__VDLType_struct_1); err != nil {
+		return err
+	}
+	for {
+		f, err := dec.NextField()
+		if err != nil {
+			return err
+		}
+		switch f {
+		case "":
+			return dec.FinishValue()
+		case "Handle":
+			switch value, err := dec.ReadValueString(); {
+			case err != nil:
+				return err
+			default:
+				x.Handle = value
+			}
+		case "MountName":
+			switch value, err := dec.ReadValueString(); {
+			case err != nil:
+				return err
+			default:
+				x.MountName = value
+			}
+		case "BlessingNames":
+			if err := __VDLReadAnon_list_1(dec, &x.BlessingNames); err != nil {
+				return err
+			}
+		case "CreationTime":
+			var wire vdltime.Time
+			if err := wire.VDLRead(dec); err != nil {
+				return err
+			}
+			if err := vdltime.TimeToNative(wire, &x.CreationTime); err != nil {
+				return err
+			}
+		default:
+			if err := dec.SkipValue(); err != nil {
+				return err
+			}
+		}
+	}
+}
+
+func __VDLReadAnon_list_1(dec vdl.Decoder, x *[]string) error {
+	if err := dec.StartValue(__VDLType_list_2); err != nil {
+		return err
+	}
+	if len := dec.LenHint(); len > 0 {
+		*x = make([]string, 0, len)
+	} else {
+		*x = nil
+	}
+	for {
+		switch done, elem, err := dec.NextEntryValueString(); {
+		case err != nil:
+			return err
+		case done:
+			return dec.FinishValue()
+		default:
+			*x = append(*x, elem)
+		}
+	}
+}
+
+//////////////////////////////////////////////////
 // Interface definitions
 
 // AllocatorClientMethods is the client interface
 // containing Allocator methods.
 type AllocatorClientMethods interface {
 	// Create creates a new instance of the service.
-	// It returns the object name of the new instance.
-	Create(*context.T, ...rpc.CallOpt) (name string, _ error)
-	// Destroy destroys the instance with the given name.
-	Destroy(_ *context.T, name string, _ ...rpc.CallOpt) error
+	// It returns a handle for the new instance.
+	Create(*context.T, ...rpc.CallOpt) (handle string, _ error)
+	// Destroy destroys the instance with the given handle.
+	Destroy(_ *context.T, handle string, _ ...rpc.CallOpt) error
 	// List returns a list of all the instances owned by the caller.
-	List(*context.T, ...rpc.CallOpt) (names []string, _ error)
+	List(*context.T, ...rpc.CallOpt) (instances []Instance, _ error)
 }
 
 // AllocatorClientStub adds universal methods to AllocatorClientMethods.
@@ -55,7 +216,7 @@
 	return
 }
 
-func (c implAllocatorClientStub) List(ctx *context.T, opts ...rpc.CallOpt) (o0 []string, err error) {
+func (c implAllocatorClientStub) List(ctx *context.T, opts ...rpc.CallOpt) (o0 []Instance, err error) {
 	err = v23.GetClient(ctx).Call(ctx, c.name, "List", nil, []interface{}{&o0}, opts...)
 	return
 }
@@ -64,12 +225,12 @@
 // implements for Allocator.
 type AllocatorServerMethods interface {
 	// Create creates a new instance of the service.
-	// It returns the object name of the new instance.
-	Create(*context.T, rpc.ServerCall) (name string, _ error)
-	// Destroy destroys the instance with the given name.
-	Destroy(_ *context.T, _ rpc.ServerCall, name string) error
+	// It returns a handle for the new instance.
+	Create(*context.T, rpc.ServerCall) (handle string, _ error)
+	// Destroy destroys the instance with the given handle.
+	Destroy(_ *context.T, _ rpc.ServerCall, handle string) error
 	// List returns a list of all the instances owned by the caller.
-	List(*context.T, rpc.ServerCall) (names []string, _ error)
+	List(*context.T, rpc.ServerCall) (instances []Instance, _ error)
 }
 
 // AllocatorServerStubMethods is the server interface containing
@@ -115,7 +276,7 @@
 	return s.impl.Destroy(ctx, call, i0)
 }
 
-func (s implAllocatorServerStub) List(ctx *context.T, call rpc.ServerCall) ([]string, error) {
+func (s implAllocatorServerStub) List(ctx *context.T, call rpc.ServerCall) ([]Instance, error) {
 	return s.impl.List(ctx, call)
 }
 
@@ -137,28 +298,35 @@
 	Methods: []rpc.MethodDesc{
 		{
 			Name: "Create",
-			Doc:  "// Create creates a new instance of the service.\n// It returns the object name of the new instance.",
+			Doc:  "// Create creates a new instance of the service.\n// It returns a handle for the new instance.",
 			OutArgs: []rpc.ArgDesc{
-				{"name", ``}, // string
+				{"handle", ``}, // string
 			},
 		},
 		{
 			Name: "Destroy",
-			Doc:  "// Destroy destroys the instance with the given name.",
+			Doc:  "// Destroy destroys the instance with the given handle.",
 			InArgs: []rpc.ArgDesc{
-				{"name", ``}, // string
+				{"handle", ``}, // string
 			},
 		},
 		{
 			Name: "List",
 			Doc:  "// List returns a list of all the instances owned by the caller.",
 			OutArgs: []rpc.ArgDesc{
-				{"names", ``}, // []string
+				{"instances", ``}, // []Instance
 			},
 		},
 	},
 }
 
+// Hold type definitions in package-level variables, for better performance.
+var (
+	__VDLType_struct_1 *vdl.Type
+	__VDLType_list_2   *vdl.Type
+	__VDLType_struct_3 *vdl.Type
+)
+
 var __VDLInitCalled bool
 
 // __VDLInit performs vdl initialization.  It is safe to call multiple times.
@@ -180,5 +348,13 @@
 	}
 	__VDLInitCalled = true
 
+	// Register types.
+	vdl.Register((*Instance)(nil))
+
+	// Initialize type definitions.
+	__VDLType_struct_1 = vdl.TypeOf((*Instance)(nil)).Elem()
+	__VDLType_list_2 = vdl.TypeOf((*[]string)(nil))
+	__VDLType_struct_3 = vdl.TypeOf((*vdltime.Time)(nil)).Elem()
+
 	return struct{}{}
 }
diff --git a/services/allocator/allocator/doc.go b/services/allocator/allocator/doc.go
index 951c5f7..0b5e380 100644
--- a/services/allocator/allocator/doc.go
+++ b/services/allocator/allocator/doc.go
@@ -110,6 +110,9 @@
    allocator list [flags]
 
 The allocator list flags are:
+ -l=false
+   Show details about each instance.
+
  -allocator=syncbase-allocator
    The name or address of the allocator server.
 
diff --git a/services/allocator/allocator/main.go b/services/allocator/allocator/main.go
index f8e3bde..8686172 100644
--- a/services/allocator/allocator/main.go
+++ b/services/allocator/allocator/main.go
@@ -9,6 +9,7 @@
 
 import (
 	"fmt"
+	"text/template"
 
 	"v.io/v23/context"
 	"v.io/x/lib/cmdline"
@@ -20,7 +21,8 @@
 const defaultExtension = "allocator"
 
 var (
-	flagAllocator string
+	flagAllocator   string
+	flagListDetails bool
 
 	cmdRoot = &cmdline.Command{
 		Name:  "allocator",
@@ -34,8 +36,19 @@
 	}
 )
 
+const listDetailsEntry = `Handle: {{.Handle}}
+Created: {{.CreationTime}}
+MountName: {{.MountName}}
+BlessingPatterns: {{.BlessingNames}}
+`
+
+var listTmpl *template.Template
+
 func main() {
+	listTmpl = template.Must(template.New("list").Parse(listDetailsEntry))
+
 	cmdRoot.Flags.StringVar(&flagAllocator, "allocator", "syncbase-allocator", "The name or address of the allocator server.")
+	cmdList.Flags.BoolVar(&flagListDetails, "l", false, "Show details about each instance.")
 	cmdline.HideGlobalFlagsExcept()
 	cmdline.Main(cmdRoot)
 }
@@ -87,15 +100,25 @@
 }
 
 func runList(ctx *context.T, env *cmdline.Env, args []string) error {
-	names, err := allocator.AllocatorClient(flagAllocator).List(ctx)
+	instances, err := allocator.AllocatorClient(flagAllocator).List(ctx)
 	if err != nil {
 		return err
 	}
-	if len(names) == 0 {
+	if len(instances) == 0 {
 		fmt.Fprintln(env.Stderr, "No results")
 	}
-	for _, n := range names {
-		fmt.Fprintln(env.Stdout, n)
+	firstEntry := true
+	for _, instance := range instances {
+		if flagListDetails {
+			if firstEntry {
+				firstEntry = false
+			} else {
+				fmt.Fprintln(env.Stdout)
+			}
+			listTmpl.Execute(env.Stdout, instance)
+		} else {
+			fmt.Fprintln(env.Stdout, instance.Handle)
+		}
 	}
 	return nil
 }
diff --git a/services/allocator/allocatord/assets/assets.go b/services/allocator/allocatord/assets/assets.go
index cdbde6c..c444a50 100644
--- a/services/allocator/allocatord/assets/assets.go
+++ b/services/allocator/allocatord/assets/assets.go
@@ -104,7 +104,7 @@
 	return a, nil
 }
 
-var _dashJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x57\xdd\x53\xdb\x38\x10\x7f\xe7\xaf\xd8\xb6\xdc\xd8\xb9\x0b\x26\xa1\x0c\xed\x84\xe9\x74\x20\x70\x25\x73\xe5\xa3\x24\xf4\x1e\x18\xa6\x23\x2c\x25\x56\x2b\xcb\xae\x24\x03\xe9\x4d\xfe\xf7\x5b\xf9\x53\x26\x0e\x37\xc7\x83\x89\x77\xf7\xb7\xbb\xda\x2f\xad\x77\x77\x61\x9c\xa4\x4b\xc5\x17\x91\x81\xbd\xc1\xf0\x00\x66\x11\x83\xaf\x44\x12\xca\xb3\x18\x8e\x32\x13\x25\x4a\x07\x70\x24\x04\xe4\x42\x1a\x14\xd3\x4c\x3d\x30\x1a\x6c\x21\xf8\x46\x33\x48\xe6\x60\x22\xae\x41\x27\x99\x0a\x19\x84\x09\x65\x80\xaf\x8b\xe4\x81\x29\xc9\x28\xdc\x2f\x81\xc0\xf1\xf4\x64\x47\x9b\xa5\x60\x16\x25\x78\xc8\x24\x22\x4d\x44\x0c\x84\x44\xc2\x3d\x83\x79\x92\x49\x0a\x5c\x22\x91\xc1\xe7\xc9\xf8\xf4\x62\x7a\x0a\x73\x2e\x58\xb0\xb5\xf5\x40\x14\x50\xa2\x23\xf8\x00\xf3\x4c\x86\x86\x27\xd2\xef\xc1\x3f\x5b\x00\xa8\xec\x84\x18\x02\x99\x46\x43\x26\x81\x05\x93\x4c\x11\x83\x5e\x44\x44\x19\x1d\xa0\x88\x05\x8f\xcf\x8e\xae\x67\x53\x84\xdf\x22\x01\x72\xa4\xfd\x33\xdc\x08\x36\x02\xef\x33\x22\x64\xb8\x04\x3f\xd6\x3d\xaf\x5f\x32\x29\xea\xfd\x8b\x2d\x1b\x76\xcd\xe1\x14\x89\xa2\x24\xe6\xb4\x55\xbf\x53\xef\x97\xab\x29\xf8\x8a\xfd\xdc\xed\x54\xfb\x25\xd5\x6d\x95\x3f\x91\xf0\x92\xba\xf1\xd5\x0d\x06\x9c\x2c\x18\xf8\xbf\x75\x29\x9c\x2e\x35\x8a\xe4\x12\x57\xa1\x69\xeb\x0e\xd3\x6c\x27\xb3\x9c\x9d\x14\x59\x2f\x59\x39\x67\x71\xa2\x96\x95\xa1\x4f\xc7\x1b\x2c\xa1\x58\x2e\x72\xbc\x34\xec\xd9\x39\x62\x16\x97\xb6\xee\x5b\x4c\x1d\x12\x6b\x61\xb8\x3b\x1c\xec\xed\x37\x8f\x97\x9c\x39\xe1\xfa\xc7\x7f\xba\x62\x85\x36\xf9\x42\x91\xf7\xff\x9d\xc1\xe7\xdd\xe1\x56\x59\x3c\x27\x37\xd7\x47\xb3\xc9\xe5\xc5\xf4\xdb\xec\xf2\xdb\xf4\x74\x7c\x79\x71\x62\x4b\xa9\x70\xd5\x1b\x46\xde\x08\xde\x1e\x0c\x06\x85\x62\x6f\xaf\x7a\x87\xdf\x61\xaf\xa4\xed\x3b\xb4\xfd\x92\x76\xe0\xd0\x0e\x4a\xda\xd0\x05\x0f\x2b\xf4\x90\x3a\x1a\x2b\xf8\xbb\x16\x11\x1f\xef\x90\xbe\xaa\x7d\xce\x0b\xfe\xdb\xdf\x93\x93\xd9\x19\xba\xfa\x6e\x30\x38\x6c\x31\xce\x4e\x27\x9f\xce\x66\xc8\xd9\x7b\xfb\x8c\x33\xbe\xfc\x7c\x79\x8d\x0c\xef\xcd\x60\xf0\xfe\xed\xfb\x3f\xbd\x5a\x25\xcd\xb0\xb1\xb0\xf3\x26\x72\xca\xc2\x44\x52\x8d\x52\xd6\x81\x0a\x1f\x63\x03\x1b\x46\x2f\x48\xcc\x2c\xbe\x00\x56\xed\x0a\xec\xc9\x28\x12\x9a\x2b\xa2\x90\x6f\x98\xd2\x65\x03\x17\xd8\xed\x4c\x09\x04\x6d\x07\xf8\xdf\xef\x1d\xe6\xf4\xb6\x3e\x2b\x11\xa4\x16\xed\x7b\xd2\x2b\x45\x14\x33\x99\x92\x2d\xc9\x57\x1f\x3e\x00\x0e\x12\x36\xe7\x38\x7a\xac\xd4\x6a\xab\x18\x13\x53\x86\xb3\x2b\x4b\x21\x22\x92\x0a\xb4\x8f\x03\x47\xd9\x29\x21\x17\x5c\x2e\xea\xc3\x05\xae\xcf\x1a\xd5\xa7\x27\x25\x67\x9c\x48\xa3\x12\x81\xd0\xda\xf3\x6d\xdf\x7b\x53\x01\xb5\xd7\x0b\xc2\x88\x0b\xaa\x18\xce\xa6\x20\xc4\x11\xf7\xc3\x7f\x36\xac\xec\x1f\x7a\x82\x31\xc0\xd9\x57\x01\x41\x90\x7b\x26\x00\xbd\xb2\xf6\xd6\xa3\x1c\x54\x15\xdf\x11\xfe\xae\xca\xbc\xdd\xf6\xed\x34\xee\x05\x06\x43\xee\xf7\xee\x0e\x4b\x7c\x96\x62\xcf\x30\x1b\xdc\xc6\x93\x9b\x9c\x06\x37\x93\xca\x08\x9e\x28\xa8\x0c\xed\x70\xc3\xe2\x40\x33\xc1\x42\x0c\x2e\x1e\xcf\x24\x8b\x85\x60\x63\x41\xb4\xf6\xbd\x86\x7e\x58\x63\x4b\xbb\x2f\x89\xad\x7a\x6e\x4e\x3e\xd9\x9c\xd8\x56\xce\x8f\x5f\x78\xa8\x9d\xd1\x5d\x67\xa2\x72\xde\x09\xbc\x48\xf0\x8a\x92\x8b\x9d\x3c\x7c\xe8\x9d\x8e\x92\xc7\xaa\x74\x6c\x49\xe5\xb5\xa2\xeb\x3e\x05\x90\x23\xb7\x50\xea\x41\x32\x5a\x8f\x6c\xe1\xe9\x61\x6d\x8a\x29\x95\xa8\x9d\x58\x2f\xd0\x4c\xc4\x29\xab\xcc\x6c\x07\xe4\x3b\x79\xc2\x43\x1a\x62\xf4\x47\x0f\xfe\x40\x4a\x51\xa2\x85\xf1\x5e\xaf\x34\x02\x10\xd0\x44\xb2\xa6\x1e\xec\x99\x9b\x9a\x68\xd2\x33\xce\x8f\x5e\xb0\x0f\x6b\xee\xca\xd1\x33\x27\x5c\x38\x75\xe5\xaa\x78\xee\xaa\x1b\x91\xe7\x6a\xc2\x24\x4e\x05\xf6\x61\x57\x89\x6e\x8a\xb0\x7b\xf4\xf5\x5c\xde\x94\xd9\x23\xb8\x29\x6c\xcc\xa0\x7b\xbe\xd2\x5e\x71\x35\x07\xd8\x8d\xa7\x24\x8c\x1a\x7f\x72\x1d\x8d\x53\x36\xa5\x21\x66\x53\xb2\x47\xc7\xcd\x45\x92\x60\xad\x05\x0f\x5c\x67\x44\xf0\x5f\x45\x0b\x1f\x29\x46\x72\x43\x3e\x4d\xc2\x2c\x66\xd2\x04\x0b\x66\x4e\x05\xb3\x3f\x8f\x97\x13\x5a\xe8\x0e\x38\xed\xd5\xa7\xb1\xea\x93\x34\x6f\x64\xa7\x64\xea\x7b\xa8\x00\xe4\x2f\xfd\x36\x6f\x86\x5d\x36\xb5\x7b\xcd\xa8\x15\xbf\x39\x4e\x8b\x29\xff\x65\x2f\x98\xfd\x06\xb1\x6a\x7e\x3e\x72\x6a\xa2\x91\x3b\xa7\x1b\x5e\xc4\xec\xa6\x35\x6a\xcd\xea\x86\x2b\x18\x2e\x39\xb4\x6d\x2e\x4d\x34\xb7\xce\xe3\x85\x27\xb1\xd0\xbc\x2e\x8b\xb8\xb5\x71\xa6\xdb\xb8\x41\xfb\x15\x70\x79\x13\x89\x1a\xb9\x77\x81\xc3\x5e\x75\xa9\x7d\x38\x7a\xe2\x56\x6b\xcc\xe5\x57\x22\x32\x3c\xf1\xc0\xe1\x46\x25\xd7\xd1\xd2\x08\x62\x2e\xed\xf6\xc6\xf2\x7a\x08\xce\xb9\x9c\x71\x9c\xe0\x78\xf3\x0d\x06\x83\x5e\xdf\x85\x90\xa7\x6e\x08\x79\xda\x04\x59\x28\x4e\x05\xde\x01\x7a\xfd\x84\x38\x03\x46\xb0\x33\xec\xb7\xc8\x99\xe4\x66\x4d\xd6\xee\x19\x4b\x4b\xc5\xea\x8c\x09\xa2\x6e\xbd\xf3\xf3\x73\xa0\xd4\xbb\x5b\xf5\x9f\x49\x46\xb8\xfd\xb6\x45\xa3\x51\x1c\x03\xf1\xfa\xe0\x45\xf8\x6f\x1d\x11\x73\x21\xb8\x2e\x46\x4e\x17\xf0\x6e\xd5\x02\xb4\xf0\x4e\x2a\xca\x5f\xab\xaa\x94\xc3\x80\x2a\xf2\xe8\x63\x91\xd8\xcd\x78\x46\xee\x45\x11\xad\xdb\xa2\x88\xcb\xcd\xe9\xae\x5f\x16\x75\xbe\x07\xf5\xfa\x55\xf5\x6f\x98\xd3\xc5\x56\xad\xa1\x56\x09\xc9\xfd\x77\x9c\xec\x30\x57\x49\x9c\xaf\xec\x0b\xfe\xc0\x24\x16\x22\x97\xcf\x3a\xbf\xe5\x48\xc1\xef\x17\xdb\x97\xbb\x01\x50\x03\x45\x77\x77\xf7\x74\xa3\xa1\x74\x90\x9a\x80\x50\x3a\x4e\x44\x16\x4b\xdf\xb3\xb3\xc5\x60\x25\xd8\x60\x7b\x9d\x12\x32\x8b\xef\x99\x72\xf9\x7c\x0e\xa5\x3b\xcd\x94\x29\x30\xd7\xc9\xa3\x2e\x59\x41\x4c\xd2\x66\x26\xa5\xc6\x9d\x92\xe5\xf6\x71\xdb\xca\x52\x5d\xa0\xa9\x09\x6c\x6d\xe2\xdd\x10\xa7\x5d\x05\x5a\x6e\xa0\xf0\x11\x50\x32\xaf\x6e\x94\x2a\x48\xa3\x9a\x54\xcb\xd7\xd7\xf8\xaa\x9a\x59\x2b\x60\x02\xd7\x88\x35\xcf\xfd\xdb\xda\x05\xcc\xea\xe0\xae\x12\x77\x17\x26\x6a\xea\xec\xd6\x69\xe2\xd8\x00\xf5\x25\x60\x63\xf3\xaa\x63\x65\x6b\x8e\x8f\x7e\xe2\x80\xf5\x5e\xcb\xd7\xf6\x5b\x0f\xbf\x71\x32\xae\xf0\x13\xcc\x2e\x55\x5c\xe2\xa1\x25\x7e\x09\x96\xd7\x2d\x48\xc4\x37\x7b\x42\xe1\x83\xe3\xd4\x76\xd7\x25\xb4\x71\xf7\x5a\xdf\x67\x8a\xf7\x66\x9d\x61\xf8\xdd\xb9\xb4\x63\x26\x33\x2c\x68\xd4\x4d\xd0\x17\xf5\x40\x84\x5f\x20\xfb\x80\xbb\x2b\xe6\x64\xad\xde\xcb\x18\x95\x81\xc0\xa8\x8c\xf2\x67\xb1\x5e\xaf\xac\xc1\x7f\x03\x00\x00\xff\xff\x1d\x60\x87\x6b\x35\x0f\x00\x00")
+var _dashJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x57\x5f\x53\xdb\xba\x12\x7f\xe7\x53\x6c\x5b\xee\xd8\xb9\x37\x98\x84\x32\xb4\x13\xa6\xd3\x81\xc0\x2d\x99\x53\x0a\x25\xa1\xe7\x81\x61\x3a\xc2\x52\x62\xb5\xb2\x94\x4a\x32\x90\x9e\xc9\x77\x3f\x2b\xff\x95\x89\xe1\xcc\xe1\x21\xd8\xbb\xfb\xdb\xfd\x69\xb5\x5a\xad\x77\x77\x61\xac\x96\x2b\xcd\x17\x89\x85\xbd\xc1\xf0\x00\x66\x09\x83\x6f\x44\x12\xca\xb3\x14\x8e\x32\x9b\x28\x6d\x22\x38\x12\x02\x72\x23\x03\x9a\x19\xa6\xef\x19\x8d\xb6\x10\x7c\x6d\x18\xa8\x39\xd8\x84\x1b\x30\x2a\xd3\x31\x83\x58\x51\x06\xf8\xba\x50\xf7\x4c\x4b\x46\xe1\x6e\x05\x04\x8e\xa7\x27\x3b\xc6\xae\x04\x73\x28\xc1\x63\x26\x11\x69\x13\x62\x21\x26\x12\xee\x18\xcc\x55\x26\x29\x70\x89\x42\x06\x9f\x27\xe3\xd3\x2f\xd3\x53\x98\x73\xc1\xa2\xad\xad\x7b\xa2\x81\x12\x93\xc0\x07\x98\x67\x32\xb6\x5c\xc9\xb0\x07\x7f\x6d\x01\xa0\xb3\x13\x62\x09\x64\x06\x03\x59\x05\x0b\x26\x99\x26\x16\x59\x24\x44\x5b\x13\xa1\x89\x03\x8f\xcf\x8e\xae\x66\x53\x84\xdf\xa0\x00\x72\xa4\xfb\xb3\xdc\x0a\x36\x82\xe0\x33\x22\x64\xbc\x82\x30\x35\xbd\xa0\x5f\x2a\x29\xfa\xfd\x83\xad\x1a\x75\xad\xe1\x14\x85\xa2\x14\xe6\xb2\x75\xbf\xd3\xef\xd7\xcb\x29\x84\x9a\xfd\xda\xed\x74\xfb\x75\x69\xda\x2e\x7f\xa1\xe0\x25\x77\xe3\xcb\x6b\x4c\x38\x59\x30\x08\xff\xd3\xe5\x70\xba\x32\x68\x92\x5b\x5c\xc6\xb6\xed\x3b\x5e\x66\x3b\x99\xd3\xec\x2c\x51\xf5\x52\x94\x73\x96\x2a\xbd\xaa\x02\x7d\x3a\x7e\x26\x12\x9a\xe5\x26\xc7\x2b\xcb\x9e\xac\x23\x65\x69\x19\xeb\xae\xa5\x34\x31\x71\x11\x86\xbb\xc3\xc1\xde\x7e\xf3\xf3\x12\x99\x13\x6e\x7e\xfe\x23\x15\x67\xf4\x1c\x17\x8a\xba\x7f\x4f\x06\x7f\x6f\x0f\xb7\xca\xe2\x39\xb9\xbe\x3a\x9a\x4d\x2e\xbe\x4c\xbf\xcf\x2e\xbe\x4f\x4f\xc7\x17\x5f\x4e\x5c\x29\x15\x54\x83\x61\x12\x8c\xe0\xed\xc1\x60\x50\x38\x0e\xf6\xaa\x77\xf8\x2f\xec\x95\xb2\x7d\x4f\xb6\x5f\xca\x0e\x3c\xd9\x41\x29\x1b\xfa\xe0\x61\x85\x1e\x52\xcf\x63\x05\x7f\xd7\x12\xe2\xcf\x3b\x94\xaf\x6b\xce\x79\xc1\x7f\xff\x73\x72\x32\x3b\x43\xaa\xef\x06\x83\xc3\x96\xe2\xec\x74\xf2\xe9\x6c\x86\x9a\xbd\xb7\x4f\x34\xe3\x8b\xcf\x17\x57\xa8\x08\xde\x0c\x06\xef\xdf\xbe\xff\x7f\x50\xbb\xa4\x19\x1e\x2c\x3c\x79\x13\x39\x65\xb1\x92\xd4\xa0\x95\x23\x50\xe1\xb9\x34\x96\x48\x6c\x00\x08\x2e\x50\xd5\x59\x05\xf6\x68\x35\x89\xed\x25\xd1\x24\x65\x96\x69\x53\x9e\xde\x02\xb8\x9d\x69\x81\xa0\xed\x08\xff\x87\xbd\xc3\x5c\xee\x39\x73\xea\x68\xe9\xa0\x61\x50\x89\x83\xd2\x4c\x33\x9b\x69\xd9\x58\xbf\xfa\xf0\x01\xb0\x8d\xb0\x39\xc7\xc6\xe3\x4c\xd6\x5b\x45\x93\x98\x32\xec\x5c\xd9\x12\x12\x22\xa9\x40\x02\xd8\x6e\xb4\xeb\x11\x72\xc1\xe5\xa2\x5e\x5a\xe4\x93\x36\xe8\x7b\x79\x52\x6a\xc6\x4a\x5a\xad\x04\x42\x6b\xea\xdb\x61\xf0\xa6\x02\x9a\xa0\x17\xc5\x09\x17\x54\x33\xec\x4c\x51\x8c\x0d\xee\x67\xf8\xa4\x55\xb9\x3f\x64\x82\x49\xc0\xce\x57\x01\x41\x90\x3b\x26\x00\x59\xb9\x78\x9b\x39\x8e\xaa\x7a\xef\x48\x7e\x57\x5d\xde\x6c\x87\xae\x17\xf7\x22\x8b\x39\x0f\x7b\xb7\x87\x25\x3e\x5b\xe2\x89\x61\x2e\xbb\x0d\x93\xeb\x5c\x06\xd7\x93\x2a\x08\xae\x28\xaa\x02\xed\x70\xcb\xd2\xc8\x30\xc1\x62\xcb\x28\x2e\xcf\xaa\xc5\x42\xb0\xb1\x20\xc6\x84\x41\x23\x3f\xac\xb1\x65\xdc\x97\xcc\xd6\x3d\x7f\x4f\x3e\xb9\x3d\x71\x07\x39\x5f\x7e\xc1\xd0\x78\x8d\xbb\xde\x89\x8a\xbc\x97\x78\xa1\xf0\x82\x92\x8b\x9d\x3c\x7d\xc8\xce\x24\xea\xa1\xaa\x1d\x57\x53\x79\xbd\x98\xfa\x94\x36\x05\x35\xaa\x9f\xea\x56\x32\xda\xcc\x6e\xc1\xf6\xb0\x0e\xc7\xb4\x56\x7a\x27\x35\x0b\x0c\x95\x70\xca\xaa\x50\xdb\x11\xf9\x41\x1e\x71\xa1\x96\x58\xf3\x31\x80\xff\xa1\xa4\x28\xd5\x82\x40\xaf\x57\x06\x01\x88\xa8\x92\xac\xa9\x09\xb7\xee\xa6\x2e\x9a\x2d\x1a\xe7\xcb\x2f\xd4\x87\xb5\x76\xed\xf9\x99\x13\x2e\xbc\xda\xf2\x5d\x3c\xa5\xea\x67\xe5\xa9\x9b\x58\xa5\x4b\x81\x87\xb1\xab\x4c\x9f\xcb\xb2\xbf\xf4\xcd\xfd\xbc\x2e\x77\x90\xe0\xac\xf0\xec\x2e\xfa\xeb\x2b\xe3\x15\x97\x73\x84\x27\xf2\x94\xc4\x49\xc3\x27\xf7\xd1\x90\x72\xdb\x1a\xe3\x8e\x4a\xf6\xe0\xd1\x5c\x28\x85\xf5\x16\xdd\x73\x93\x11\xc1\x7f\x17\xc7\xf8\x48\x33\x92\x07\x0a\xa9\x8a\xb3\x94\x49\x1b\x2d\x98\x3d\x15\xcc\x3d\x1e\xaf\x26\xb4\xf0\x1d\x71\xda\xab\x57\xe3\xdc\xab\x65\x7e\x98\xbd\xb2\xa9\x6f\xa2\x02\x90\xbf\xf4\xdb\xba\x19\x9e\xb4\xa9\x9b\x6c\x46\xad\xfc\xcd\xb1\x63\x4c\xf9\x6f\x77\xc5\xec\x37\x88\x75\xf3\xf8\xc0\xa9\x4d\x46\x7e\xa7\x6e\x74\x09\x73\xb3\xd6\xa8\xd5\xad\x1b\xad\x60\x38\xe6\xd0\x76\xb8\xa5\x32\xdc\x91\xc7\x2b\x4f\x62\xa1\x05\x5d\x11\x71\x6e\xe3\xcc\xb4\x71\x83\xf6\x2b\xe0\xf8\x26\x94\x1e\xf9\xb7\x81\xa7\x5e\x77\xb9\xbd\x3f\x7a\xe4\xce\x6b\xca\xe5\x37\x22\x32\x5c\xf1\xc0\xd3\x26\xa5\xd6\xf3\xd2\x18\xe2\x5e\xba\xf9\x8d\xe5\xf5\x10\x9d\x73\x39\xe3\x29\x73\x77\xdf\x60\x30\xe8\xf5\x7d\x08\x79\xec\x86\x90\xc7\xe7\x20\x0b\xcd\xa9\xc0\x7b\xc0\x6c\xae\x30\x93\x98\xdb\x9d\x61\xbf\x25\xce\x24\xb7\x1b\xb6\x6e\xd2\x58\x39\x29\x56\x67\x4a\x10\x75\x13\x9c\x9f\x9f\x03\xa5\xc1\xed\xba\xff\xc4\x32\xc1\xf9\xb7\x6d\x9a\x8c\xd2\x14\x48\xd0\x87\x20\xc1\x7f\x9b\x88\x94\x0b\xc1\x4d\xd1\x72\xba\x80\xb7\xeb\x16\xa0\x85\xf7\xb6\xa2\x7c\x5a\x57\xa5\x1c\x47\x54\x93\x87\x10\x8b\xc4\xcd\xc6\x33\x72\x27\x8a\x6c\xdd\x14\x45\x5c\xce\x4e\xb7\xfd\xb2\xa8\xf3\x49\xa8\xd7\xaf\xaa\xff\x99\x5e\x5d\xcc\xd5\x06\x6a\x97\xa0\xee\x7e\x60\x77\x87\xb9\x56\x69\x3e\xb4\x2f\xf8\x3d\x93\x58\x88\x5c\x3e\x39\xf9\x2d\x22\x85\xbe\x5f\xcc\x5f\xfe\x18\x40\x2d\x14\xa7\xbb\xfb\x4c\x37\x1e\x4a\x82\xd4\x46\x84\xd2\xb1\x12\x59\x2a\xc3\xc0\xf5\x16\x8b\x95\xe0\x92\x1d\x74\x5a\xc8\x2c\xbd\x63\xda\xd7\xf3\x39\x94\x74\x9a\x2e\x53\x60\xae\xd4\x83\x29\x55\x51\x4a\x96\x4d\x4f\x5a\x5a\xbf\x4b\x96\xe3\xc7\x4d\x6b\x97\xea\x02\x5d\xda\xc8\xd5\x26\xde\x0d\xe9\xb2\xab\x40\xcb\x19\x14\x3e\x02\x5a\xe6\xd5\x8d\x56\x85\x68\x54\x8b\x6a\xfb\xfa\x2a\x5f\x57\x3d\x6b\x0d\x4c\xe0\x28\xb1\xc1\x3c\xbc\xa9\x29\xe0\xae\x0e\x6e\x2b\x73\x7f\x62\xa2\xb6\xde\xdd\x7a\x9b\x38\x1e\x80\xfa\x12\x70\xb9\x79\xd5\x31\xb7\x35\xcb\x47\x9e\xd8\x60\x83\xd7\xf2\xb5\xfb\xda\xc3\xaf\x9c\x8c\x6b\xfc\x08\x73\x83\x55\x3d\x8f\xa5\xee\xa8\xa1\x50\x22\xbe\x99\x15\x0a\x0e\x1e\xa9\xed\xae\x4b\xe8\xd9\xf9\x6b\x73\xa6\x29\xde\x9b\x91\x86\xe1\x97\xe7\xca\xb5\x99\xcc\xb2\xa8\x71\x37\x41\x2e\xfa\x9e\x88\xb0\x40\xf6\x01\xa7\x57\xdc\x93\x8d\x7a\x2f\x73\x54\x26\x02\xb3\x32\xca\x7f\x8b\x01\x7b\xed\x02\xfe\x1d\x00\x00\xff\xff\x2e\x60\xcc\x2a\x37\x0f\x00\x00")
 
 func dashJsBytes() ([]byte, error) {
 	return bindataRead(
@@ -124,7 +124,7 @@
 	return a, nil
 }
 
-var _dashboardTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x56\x4d\x4f\x1b\x3d\x10\xbe\xf3\x2b\xfc\xee\x65\x79\x45\xd6\x4e\x80\xb6\x52\xba\x49\x55\x01\xad\x90\x10\xa0\xd2\x4b\x55\xf5\xe0\xd8\x93\xac\x13\xef\x7a\xb1\x67\x03\x2b\xca\x7f\xaf\xf7\x23\x21\x81\x10\x11\xa9\x87\x2a\x87\x8c\xc7\xcf\x3c\xf3\xed\x24\xfe\xef\xf4\xea\xe4\xfb\x8f\xeb\x33\x92\x60\xaa\x87\x7b\x71\xf3\x45\x48\x9c\x00\x97\x95\xe0\x45\x54\xa8\x61\xf8\xf0\x40\x6f\xc0\xce\xc1\x5e\xf2\x14\x1e\x1f\xc9\x29\x77\xc9\xc8\x70\x2b\x63\xd6\x00\xf6\x1a\xb4\x56\xd9\x8c\x24\x16\xc6\x83\x90\xb1\xb1\xc9\xd0\xd1\x89\x31\x13\x0d\x3c\x57\x8e\x0a\x93\x32\xe1\xdc\xa7\x31\x4f\x95\x2e\x07\x37\xa6\xb0\x02\x0e\x4e\x8c\x84\x83\x6b\x6b\xfa\xc7\xdd\x6e\xe7\x5d\xb7\xfb\xfb\x9b\x19\x19\x34\x7d\x2f\x76\xbc\x4a\x21\xd7\x4a\x74\x8e\x9a\xcb\xa7\x53\x2b\x79\x44\x58\xfb\x26\xc4\x82\x1e\x84\x0e\x4b\x0d\x2e\x01\xc0\x85\x1a\xcb\x1c\x06\x21\xc2\x3d\x56\xce\xc3\x36\x2f\x27\xac\xca\x91\x38\x2b\x06\x41\x82\x98\xbb\x3e\x63\x7c\xca\xef\x9f\xc7\x5b\xe9\x98\x56\x23\xc7\xa6\xb7\x05\xd8\x92\x1d\x52\xff\x69\x0f\x34\x55\x19\x9d\xba\x60\x18\xb3\x86\x6f\x0b\xb9\x90\xd9\xd4\x53\x6a\x53\xc8\xb1\xe6\x16\x36\xb2\x47\x85\xd5\x51\xce\xad\x03\xeb\x1d\x1d\xd1\x1e\xcb\xbd\xe6\xef\xbb\x11\xc6\xcc\x14\xb0\x1e\x3d\xf6\x2e\xda\x5c\x1a\xdd\x6b\xbe\x9e\x3a\x1b\x38\xe4\xa8\x04\xab\x2b\x4d\x7d\x49\x83\xba\xf2\xc1\x53\xe5\x83\x0d\xf1\xb5\x46\xd2\x0f\xce\x96\x54\xea\x5e\x05\x75\xaf\xa6\x7c\xce\x1b\x6d\xb0\x9e\xe1\xdd\xdd\x1d\x9d\x34\x74\xcd\x44\x25\xdc\xa2\x63\xda\x70\x09\x76\x67\xee\x61\x3b\x25\x4d\xdb\x69\x43\x46\x2b\xb2\xfd\x50\x14\xd6\x42\x86\x61\x87\x3c\xe4\x5c\xcc\xf8\x04\x5c\x9f\xfc\x0c\x85\xb1\x50\xe3\xc2\x5f\x8f\xff\x7f\xdc\x68\xef\x00\xaf\xb2\x0b\x4f\x72\xc2\xb5\x1e\x79\xdb\xfd\x3a\x71\x95\x29\x6c\x2d\x56\x63\x8c\xd9\x62\xe1\xe2\x91\x91\x65\x1b\xb6\x54\x73\xa2\xe4\x20\x10\x7e\x8d\xb8\xca\xc0\x2e\x63\x5d\x5e\x55\x66\x2b\xfa\x95\x9b\x7a\x2b\x83\x6d\x7b\xeb\x91\xeb\x76\x15\xf8\x3c\xf3\x85\xcd\x84\x87\x6e\x00\xd4\xc4\x90\x72\xa5\x6b\xe2\xb3\x4a\x7a\x06\x5c\x3f\x2c\x33\xa8\x8b\xf2\x3c\x4c\xa1\xb9\x73\xed\x65\x50\xe3\x34\x47\xc8\x44\x59\x35\xf0\xa5\xf3\x97\xf0\xdb\xdc\xbd\x15\x2a\xf2\x22\x2a\x9c\x6f\x60\x94\x0b\x7c\xab\x51\x0a\x69\x6b\x34\x2a\x11\xde\xec\x4b\x2a\x37\xdb\xcd\x8e\x8c\x95\xd6\x55\x1f\xff\x15\xe0\xca\x61\x55\x5c\xf4\x53\x16\xd6\x6f\x9f\xc9\x5c\xb4\x65\x36\xab\x15\x52\xd9\x24\xd2\x7c\x04\x7e\x60\x2e\xae\x3e\x9f\x9e\x5f\x7e\xa5\x94\x6e\x9e\x91\x25\xe7\x2b\x63\xb2\xb8\x8f\x14\x42\x4a\x1c\x68\x10\x08\x32\x18\xf6\x92\x2d\x29\xae\x19\x05\xc3\xc3\x1d\xb0\xc7\x3b\x60\xdf\xef\x80\xed\xed\x12\x44\x6f\xd3\x9e\xbe\x82\xfd\x20\x77\x69\x21\x58\x6b\x6c\x94\xba\xc9\xb2\xdc\x5f\xfc\x36\x83\x24\x68\xfc\x6b\x8e\x56\xc1\x1c\x88\xe4\xc8\x29\xb9\xf6\xbf\x86\x0e\x08\xda\x92\xf0\x89\x6f\x36\xa9\xd6\xd4\xd2\x75\xea\x98\x35\x2f\x97\x7f\xca\xea\x3f\x11\x7f\x02\x00\x00\xff\xff\x2f\xfc\x99\xc7\x5c\x08\x00\x00")
+var _dashboardTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x56\x4f\x4f\x1b\x39\x14\xbf\xf3\x29\xbc\x73\x19\x56\x64\xec\x04\xd8\x5d\x29\x3b\x49\x55\x01\xad\x90\x10\xa0\xd2\x4b\x55\xf5\xe0\xd8\x2f\x19\x27\x9e\xf1\x60\xbf\x09\x8c\x28\xdf\xbd\x9e\x3f\x09\x09\x24\x11\x91\x7a\xa8\x72\xc8\xf3\xf3\xef\xfd\xde\x7f\x27\xf1\x5f\xe7\x37\x67\x5f\xbf\xdd\x5e\x90\x04\x53\x3d\x3c\x88\x9b\x2f\x42\xe2\x04\xb8\xac\x04\x2f\xa2\x42\x0d\xc3\xa7\x27\x7a\x07\x76\x0e\xf6\x9a\xa7\xf0\xfc\x4c\xce\xb9\x4b\x46\x86\x5b\x19\xb3\x06\x70\xd0\xa0\xb5\xca\x66\x24\xb1\x30\x1e\x84\x8c\x8d\x4d\x86\x8e\x4e\x8c\x99\x68\xe0\xb9\x72\x54\x98\x94\x09\xe7\x3e\x8c\x79\xaa\x74\x39\xb8\x33\x85\x15\x70\x74\x66\x24\x1c\xdd\x5a\xd3\x3f\xed\x76\x3b\xff\x74\xbb\x3f\xbf\x98\x91\x41\xd3\xf7\x62\xc7\xab\x14\x72\xad\x44\xe7\xa4\xb9\x7c\x39\xb5\x92\x47\x84\xb5\x6f\x42\x2c\xe8\x41\xe8\xb0\xd4\xe0\x12\x00\x5c\xa8\xb1\xcc\x61\x10\x22\x3c\x62\xe5\x3c\x6c\xf3\x72\xc2\xaa\x1c\x89\xb3\x62\x10\x24\x88\xb9\xeb\x33\xc6\xa7\xfc\xf1\x75\xbc\x95\x8e\x69\x35\x72\x6c\x7a\x5f\x80\x2d\xd9\x31\xf5\x9f\xf6\x40\x53\x95\xd1\xa9\x0b\x86\x31\x6b\xf8\x76\x90\x0b\x99\x4d\x3d\xa5\x36\x85\x1c\x6b\x6e\x61\x23\x7b\x54\x58\x1d\xe5\xdc\x3a\xb0\xde\xd1\x09\xed\xb1\xdc\x6b\x7e\xbf\x1b\x61\xcc\x4c\x01\xeb\xd1\x53\xef\xa2\xcd\xa5\xd1\x6d\xf3\xf5\xd2\xd9\xc0\x21\x47\x25\x58\x5d\x69\xea\x4b\x1a\xd4\x95\x0f\x5e\x2a\x1f\x6c\x88\xaf\x35\x92\x7e\x70\x76\xa4\x52\xf7\x2a\xa8\x7b\x35\xe5\x73\xde\x68\x83\xf5\x0c\x1f\x1e\x1e\xe8\xa4\xa1\x6b\x26\x2a\xe1\x16\x1d\xd3\x86\x4b\xb0\x7b\x73\x0f\xdb\x29\x69\xda\x4e\x1b\x32\x5a\x91\x1d\x86\xa2\xb0\x16\x32\x0c\x3b\xe4\x29\xe7\x62\xc6\x27\xe0\xfa\xe4\x7b\x28\x8c\x85\x1a\x17\xfe\x78\xfe\xfb\xff\x8d\xf6\x0e\xf0\x26\xbb\xf2\x24\x67\x5c\xeb\x91\xb7\x3d\xac\x13\x57\x99\xc2\xd6\x62\x35\xc6\x98\x2d\x16\x2e\x1e\x19\x59\xb6\x61\x4b\x35\x27\x4a\x0e\x02\xe1\xd7\x88\xab\x0c\xec\x32\xd6\xe5\x55\x65\xb6\xa2\x5f\xb9\xa9\xb7\x32\xf0\x7b\x5b\x0b\x64\xeb\xf6\x7a\xfc\xba\x75\xb5\xea\x97\x99\x2f\x6f\x26\x3c\x74\x03\xa0\xa6\x87\x94\x2b\x5d\xd1\xd3\x8b\x4a\x7a\x05\x5c\x3f\x2c\xf3\xa8\x4b\xf3\x3a\x58\xa1\xb9\x73\xed\x65\x50\xe3\x34\x47\xc8\x44\x59\xb5\xf1\xad\xf3\xb7\xf0\xfb\xdc\xbd\x17\x2a\xf2\x22\x2a\x9c\x6f\x63\x94\x0b\x7c\xaf\x51\x0a\x69\x6b\x34\x2a\x11\xde\xed\x4b\x2a\x37\xdb\xcf\x8e\x8c\x95\xd6\x55\x37\xff\x14\xe0\xca\x61\x55\x5c\xf4\x53\x16\xd6\xef\xa0\xc9\x5c\xb4\x63\x42\xab\x45\x52\xd9\x24\xd2\x7c\x04\x7e\x60\xae\x6e\x3e\x9e\x5f\x5e\x7f\xa6\x94\x6e\x9e\x91\x25\xe7\x96\x31\x59\xdc\x47\x0a\x21\x25\x0e\x34\x08\x04\x19\x0c\x7b\xc9\x8e\x14\xd7\x8c\x82\xe1\xf1\x1e\xd8\xd3\x3d\xb0\xff\xee\x81\xed\xed\x13\x44\x6f\xd3\x9e\x6e\xc1\xfe\x27\xf7\x69\x21\x58\x6b\x6c\x94\xba\xc9\xb2\xdc\x9f\xfc\x36\x83\x24\x68\xfc\x9b\x8e\x56\xc1\x1c\x88\xe4\xc8\x29\xb9\xf5\xbf\x89\x0e\x08\xda\x92\xf0\x89\x6f\x36\xa9\xd6\xd4\xd2\x75\xea\x98\x35\xef\x97\x7f\xd0\xea\xbf\x12\xbf\x02\x00\x00\xff\xff\x78\x46\x06\x18\x62\x08\x00\x00")
 
 func dashboardTmplHtmlBytes() ([]byte, error) {
 	return bindataRead(
@@ -204,7 +204,7 @@
 	return a, nil
 }
 
-var _homeTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x57\xdd\x6e\xdb\x38\x13\xbd\xf7\x53\x4c\xf5\x05\xb0\xfc\xc5\xa2\x52\xf4\x2e\x91\x0d\x34\xdb\x02\x5b\xa0\xce\x16\x6d\xba\x40\xaf\x16\xb4\x44\x5b\x6c\x24\xd2\x4b\x52\x76\x05\x43\xef\xbe\x33\xfa\xb3\x95\xd8\xd9\x06\xdd\x02\xb5\x4d\xf2\xf0\xf0\xcc\x0f\x87\x93\xe8\x55\xa2\x63\x57\x6e\x04\xa4\x2e\xcf\xe6\xa3\xa8\xfb\x12\x3c\x99\x8f\x00\x22\x27\x5d\x26\xe6\x7f\x72\xc5\x13\x59\xe4\xb0\xdf\xd7\x13\xc0\xbe\x08\xb3\x15\xe6\x8e\xe7\xa2\xaa\xe0\x6d\x96\xe9\x98\x3b\x6d\xa2\xb0\xc1\xe3\x4e\x44\x8a\x7c\x93\x71\x27\xc0\x23\x36\x0f\x58\x55\x8d\xa2\xb0\x61\x8e\x5e\x05\x01\xdc\xfd\x71\xff\xfe\x1a\x76\x02\xc6\x4b\x6d\x8c\xde\x8d\x81\x43\xa6\x1d\xe8\x15\xb8\x54\x80\x75\x65\x26\xd5\x9a\x86\x32\x11\x0a\x99\xcb\x64\x0a\xa9\x50\xb1\xa0\xf5\x91\x15\x71\x61\x70\x32\x30\x82\x8e\x49\xc0\x09\x93\x4b\xa5\x33\xbd\x2e\x41\xaa\x9e\x43\x80\xc8\x44\x8e\x04\x76\x0a\x99\x7c\x10\x3d\x1b\x70\x95\x8c\x96\x99\xb0\x16\x8f\x61\x10\x04\xa8\x6b\xa9\x93\x12\xe2\x8c\x5b\x3b\xf3\x3a\xdc\xc6\xe8\x2d\xfe\x36\x41\xc6\x4b\x5d\x38\xe0\x9d\xb9\x89\x77\xca\x52\x61\x1a\x5b\xd1\x7b\x36\x36\x72\xe3\x08\x04\xb0\x2a\x54\xec\xa4\x56\x10\xa7\x5c\xad\xc5\xad\x53\xbe\x44\x7b\x94\xd8\xfd\x7e\xbf\xf8\x38\x81\x7d\x8d\x02\xc0\x80\x14\xa4\x96\xad\x85\x7b\xdf\x08\xbf\x2d\x3f\x24\x08\x9e\x30\xa9\x94\x30\x04\x87\x19\x78\xd1\x4a\x2b\x07\x31\xda\x6b\x66\xe3\xb5\xe1\xe5\x78\xee\x5d\xb6\x74\x97\x5e\x14\xd2\xf2\xdc\xbb\xa9\x69\x6b\x35\xe1\x41\x4e\x94\xc8\x6d\x67\x66\xce\xa5\xf2\x1a\x8d\x51\xfa\xba\x9b\xdd\xf0\xb5\x08\xea\xc0\xcd\x7f\x33\x82\x8c\x43\x6f\xc1\x02\x13\x61\x2d\xe0\x83\xb2\x8e\x63\x1c\x2c\x05\xe7\x64\x4e\x60\xa0\x5f\xb7\x9c\x47\x47\x75\xce\xb6\x41\x26\xad\x6b\x0f\x3d\x07\x69\x7d\xd9\x81\x6a\x75\xf3\x6f\xba\x30\x18\xdc\xf6\xf8\xc3\x29\x64\x1e\xb2\x34\x83\xfd\xde\x90\x8b\xe1\x42\xaa\x44\xfc\x98\xc2\x45\x9b\x00\x70\x3d\x03\xd6\x6b\xaf\x43\x74\xfe\x78\x89\x51\x3d\x3e\xfc\x04\x28\x48\x84\xe3\x32\xb3\x47\x30\x52\xf9\x66\xbe\xdf\x3f\x14\x4b\x41\x9e\x00\xd6\xfb\xe3\xcd\x00\xb5\x79\x42\x16\xf3\x2d\xfa\x79\x48\x46\x39\xb4\xe1\xaa\x09\x01\x25\xcf\xbd\xcc\x05\x06\x92\xe6\xa2\xa5\x09\x4f\x60\x3b\xde\x42\xc9\x1f\x0e\xd1\x1e\x24\xdc\xf1\xa0\x1b\xce\xf6\x7b\xd6\xb1\x11\x19\xfb\x8a\x0b\x55\x35\x7f\x3c\xfd\xc5\x19\x14\x45\xc2\xeb\xc3\x8e\xa5\x87\x9b\x5f\xb0\x64\xa1\x0b\x0c\x04\x39\xe5\xbc\x19\x92\xd4\x10\xe4\xb3\xd6\xae\xaa\xc2\x28\x94\xf3\x68\x47\x38\x8c\x2c\x5d\x76\xb9\x1d\x38\xf7\x3f\x13\x77\xdb\x82\xe0\x13\x77\x58\x4d\x94\x3d\xab\xb1\x4b\x31\xd6\x6d\xe9\x76\x0c\xd4\x34\x48\x2c\x06\xa7\x08\x84\x4a\xce\x4b\x3f\xca\xe6\x7a\x78\x9c\x7d\x4e\xd9\x00\xaf\xfd\x30\xeb\x86\x80\xc7\xd6\x71\x48\x8d\x58\xcd\x3c\x14\xf3\x8e\xdb\x74\xa9\xb9\x49\xbe\x7e\xfe\x58\x55\x5e\xbf\xa9\x70\x4e\xab\x60\x83\x03\xf4\xae\x07\x8e\x1b\x2c\x40\x33\xef\xaf\x65\xc6\xd5\x83\x37\xef\xb7\x45\x21\x1f\x66\xc3\x40\xe8\x8b\x94\x88\x65\xb1\x7e\xa1\x0a\xda\xf2\x42\x05\x80\xff\xf1\xa6\x5a\x67\x74\xe9\x61\xf1\x9f\x79\xed\x00\x4b\xf0\x7e\xdf\xd4\x08\x94\xf0\x9c\xce\x1a\xfe\xbc\x52\xad\xe2\x4c\xc6\x0f\x33\xef\x50\xde\xc7\xa7\xce\x19\x4f\x61\xdc\x12\x52\xa2\xf9\x8e\x3f\x60\x19\xe5\xb0\x12\x3b\xc0\x17\x4d\xab\xc4\x4e\x80\x31\x36\x9e\x90\xb5\x35\xee\x79\x7b\x07\xc3\x41\x11\x14\x99\x3d\x5c\x8e\x3b\xad\x04\xac\xf0\xf2\x25\x6c\xf4\x38\xff\x6a\x87\x91\x63\xe2\xba\xd2\xdf\x52\xd4\x8e\x1d\xd0\x3c\x00\x2f\xb7\xbf\xa7\x23\xa3\x9b\xea\xf2\x6f\x26\xb7\x6f\xcd\x9d\xd8\x91\xd5\x03\x73\x76\xd2\xa5\xc0\x16\x78\xdd\xe8\x09\x0a\x1e\x6b\xcf\x9b\x85\x3e\x8e\xf5\xbd\x1b\x3d\x75\xca\xc1\xea\xe6\x85\x1c\x1d\x01\xda\x07\x1b\xac\x89\x6b\xc3\xdf\x5a\x2b\x9c\xfd\x84\x7e\xa0\x1a\x19\x76\x0d\x41\x98\xeb\xfa\x85\xfe\x8e\x55\x64\xf0\xaa\xfe\xe4\xf6\xef\x7f\x17\xc2\x94\xe7\xb6\xd3\xcf\xbe\x59\x40\x02\x2a\xc7\xf7\xe2\x87\xf3\xe9\x15\xeb\xfa\x84\x2d\x37\x40\xe5\x1c\xdf\xb2\x7c\x83\xdd\x00\xad\x31\x2a\xf4\xfe\xa1\xf0\x4f\x6e\x7a\x68\x8e\x90\x46\xb4\xdf\xef\xfa\xff\xeb\xab\xab\x2b\x76\x75\x84\x6a\xba\xa5\x01\x59\x3d\xd5\x31\xc9\x15\xf8\x2d\x66\x86\x0d\x08\x5f\x5a\x9d\x15\x0e\x97\xfb\xe6\xa5\xde\x49\x3d\xa4\xef\x75\x09\x34\xfe\xdf\xb8\x4f\x8e\xb1\x11\xae\x30\x0a\x56\x1c\x53\xf3\x06\xfb\x15\xb8\x84\x9c\xad\xb4\xc9\xb9\xf3\xbd\xc5\x62\x01\xef\xde\x4d\xe1\x1b\xfe\x83\xf4\x3a\xcf\xaf\x2d\xa6\x09\xb2\x5f\x62\xb3\x83\xd9\xd0\xc9\x80\xa7\x02\xa7\xe0\xad\x8c\xce\xef\xf4\xae\x03\x55\x40\xe9\xff\x8b\xc2\x1a\x4a\xff\x27\x15\x1c\xfc\x71\x68\xba\xaa\x11\x7e\x5c\xf8\x5d\x53\x37\x61\x98\xdf\x49\xe9\x77\xf1\xf5\x3b\xd7\x5d\xf8\x1e\x3b\x04\x8e\x09\x1e\xa7\x4f\x41\x00\x61\x08\xb5\x60\xba\x47\xd4\xdf\x1e\x52\xc0\xa6\xba\xc8\xb0\x07\xd6\xeb\x75\x56\xf7\xc7\x90\x48\x8b\x5d\x69\x09\x8d\x7b\x59\xcb\x70\xe1\xbb\x54\xda\x09\xab\x69\x06\x47\x0c\x72\xad\x85\x4d\x6e\xa0\xea\x6d\x3e\xb9\xde\x58\x5a\x7f\x37\x9f\x87\x8c\x8e\x42\xea\xa6\xe9\xbb\xf9\xab\xe2\x9f\x00\x00\x00\xff\xff\x57\x95\x4e\xc2\x6d\x0c\x00\x00")
+var _homeTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x57\xdf\x6f\xdb\x36\x10\x7e\xf7\x5f\x71\xd5\x02\x58\x5e\x2c\x29\x41\xdf\x12\xd9\x40\xb3\x14\x68\x81\x3a\x2b\xd6\x74\x40\x9f\x06\x5a\xa2\x2d\x36\x12\xe9\x91\x94\x1d\xc1\xd0\xff\xbe\x23\xa9\x1f\x96\xe3\x64\x0d\xda\x02\xb5\x2d\xf1\xe3\xdd\xf7\xdd\x1d\x8f\x97\xf8\x4d\x2a\x12\x5d\x6d\x28\x64\xba\xc8\xe7\xa3\xb8\xfd\xa2\x24\x9d\x8f\x00\x62\xcd\x74\x4e\xe7\x7f\x13\x4e\x52\x56\x16\xb0\xdf\xdb\x17\x10\x7e\xa1\x72\x4b\xe5\x1d\x29\x68\x5d\xc3\xbb\x3c\x17\x09\xd1\x42\xc6\x91\xc3\xe3\x4e\x44\xd2\x62\x93\x13\x4d\xc1\x33\xd6\x3c\x08\xeb\x7a\x14\x47\xce\x72\xfc\x26\x08\xe0\xee\xcf\xfb\xf7\x57\xb0\xa3\x30\x5e\x0a\x29\xc5\x6e\x0c\x04\x72\xa1\x41\xac\x40\x67\x14\x94\xae\x72\xc6\xd7\xe6\x91\xa5\x94\xa3\xe5\x2a\x9d\x42\x46\x79\x42\xcd\xfa\x48\xd1\xa4\x94\xf8\x32\x90\xd4\xb8\x49\x41\x53\x59\x30\x2e\x72\xb1\xae\x80\xf1\xce\x06\x05\x9a\xd3\x02\x0d\xa8\x29\xe4\xec\x81\x76\xd6\x80\xf0\x74\xb4\xcc\xa9\x52\xe8\x26\x84\x20\x40\x5e\x4b\x91\x56\x90\xe4\x44\xa9\x99\xd7\xe2\x36\x52\x6c\xf1\xb7\x0c\x72\x52\x89\x52\x03\x69\xe5\xa6\xde\x29\xa5\x54\x3a\xad\x18\x3d\x95\x48\xb6\xd1\x06\x04\xb0\x2a\x79\xa2\x99\xe0\x90\x64\x84\xaf\xe9\x8d\xe6\x3e\x43\x3d\x9c\xee\x3e\xdc\x2f\x3e\x4d\x60\x6f\x51\x00\x98\x90\xd2\xb0\x0d\xd7\x54\xbf\x77\xc4\x6f\xaa\x8f\x29\x82\x27\x21\xe3\x9c\x4a\x03\x87\x19\x78\xf1\x4a\x70\x0d\x09\xea\x95\xb3\xf1\x5a\x92\x6a\x3c\xf7\xce\x1b\x73\xe7\x5e\x1c\x99\xe5\xb9\x77\x6d\xcd\x5a\x36\x51\x4f\x27\x4e\xd9\xb6\x95\x59\x10\xc6\x3d\xc7\x31\xce\x2e\xdb\xb7\x1b\xb2\xa6\x81\x4d\xdc\xfc\x0f\x49\x8d\x38\x8c\x16\x2c\xb0\x10\xd6\x14\x3e\x72\xa5\x09\xe6\x41\x99\xe4\x9c\xac\x09\x4c\xf4\x65\x63\xf3\xc0\x55\x1b\x6c\x15\xe4\x4c\xe9\xc6\xe9\x73\x90\x26\x96\x2d\xc8\xb2\x9b\x7f\x13\xa5\xc4\xe4\x36\xee\x7b\x2f\x46\x1e\x5a\x71\x0f\xfb\xbd\x34\x21\x86\x33\xc6\x53\xfa\x38\x85\xb3\xa6\x00\xe0\x6a\x06\x61\xc7\xdd\xa6\xe8\x79\xf7\x0c\xb3\x7a\xe8\xfc\x04\x28\x48\xa9\x26\x2c\x57\x07\x30\xe3\x7c\xc7\x74\xd6\xfb\xe9\xdc\x38\x09\x6f\xe7\xfb\x7d\xf8\x01\x63\x99\xbb\x28\xbd\x3d\xdc\x1b\x6f\x9e\xb8\x48\xc8\x16\xa3\x3f\x74\x61\x2a\x6b\x43\xb8\x4b\x8c\x29\xa9\x7b\x56\x50\x4c\xaf\x79\x17\x2f\x65\x74\x02\xdb\xda\x2d\x39\x7b\xd4\x88\xf6\x20\x25\x9a\x04\xed\xe3\x0c\x49\xb5\xd6\x8c\xb1\xf0\x2b\x2e\xd4\xf5\xfc\xf8\xf5\x17\x2d\x91\x94\x21\x6e\x9d\x1d\x52\x8f\x36\x3f\xa1\x64\x21\x4a\x4c\x8f\x29\x9d\x67\x65\x20\x15\x8b\x72\xf5\xf5\xcb\x3c\xdf\x34\x20\xf8\x4c\x34\x36\x10\xae\x5e\x20\xe0\xaa\x2a\x6c\xb7\x18\x26\x6a\x40\xa5\xe1\x89\xf1\x39\xb1\x9b\xf2\xf4\x25\xde\xc7\x80\x83\x7a\xb6\x8f\x87\xf5\xa7\xb9\x0a\xf0\xe0\x0f\x04\x1d\x01\x8e\xc5\x12\xc8\x24\x5d\xcd\x3c\xa4\x77\x4b\x54\xb6\x14\x44\xa6\x5f\xff\xfa\x54\xd7\x5e\xb7\xa9\xd4\x5a\xf0\x60\x83\x0f\x6c\x8b\x05\xa2\x89\xc4\x16\x34\xf3\xfe\x59\xe6\x84\x3f\x78\xf3\x6e\x5b\x1c\x91\x61\xe6\x07\x44\x5f\xc5\x84\x2e\xcb\xf5\x2b\x59\x98\x2d\xaf\x64\x00\xf8\x1f\xcf\xaa\xd2\x52\x54\x1e\xb6\xff\x99\xd7\x3c\x60\x13\xde\xef\x5d\x97\x40\x0a\x2f\xf1\xb4\xf0\x97\x99\x0a\x9e\xe4\x2c\x79\x98\x79\x7d\x83\x1f\x9f\xf2\x33\x9e\xc2\xb8\x31\x68\xea\xce\xd7\xe4\x01\x1b\x29\x81\x15\xdd\x01\xde\x69\x82\xa7\x6a\x02\x61\x18\x8e\x27\x46\xad\xc5\xbd\xac\x77\xf0\x38\x68\x83\x34\x57\xfd\x59\xb9\x13\x9c\xc2\x0a\x8f\x50\x1a\x8e\x8e\x0b\xce\x06\xcc\x04\x26\xb1\xbd\xfe\xc6\x64\xed\x30\x00\xee\x0a\x78\xbd\xfe\xce\x9c\x11\xed\x3a\xc9\xff\x49\x6e\x6e\x9b\x3b\xba\x33\xaa\x07\x72\x5c\x63\x5d\xe0\xe9\x33\x97\x50\x70\xcc\xbd\x70\x0b\x5d\x1e\xed\x49\x1c\x3d\x0d\x4a\xaf\xda\xdd\x91\xa3\x03\x40\x73\x65\x83\x92\x89\x15\xfe\x4e\x29\xaa\xd5\x67\x8c\x83\xe9\x87\x51\x3b\x12\x44\x85\xb0\x77\xf4\x77\x6c\x2a\x83\x7b\xf5\x07\xb7\x7f\xff\xb7\xa4\xb2\x7a\x6e\xbb\xf9\xd9\x8d\x0b\x68\xc0\xb4\xde\x7b\xfa\xa8\x7d\x73\x8f\xb5\x93\xc2\x96\x48\x30\xad\x1b\x6f\x99\x62\x83\xf3\x80\x59\x0b\x4d\x53\xf7\xfb\x26\x3f\xb9\xee\xa0\x05\x42\x1c\x69\xbf\xdb\xf5\xfb\xe5\xc5\xc5\x45\x78\x71\x80\x72\xf3\xd2\xc0\x98\x7d\xd5\x5a\x62\x2b\xf0\x1b\xcc\x0c\x47\x10\xb2\x54\x22\x2f\x35\x2e\x77\xe3\x8b\xdd\x69\xa6\x48\xdf\x6b\x0b\x68\xfc\xdb\xb8\x2b\x8e\xb1\xa4\xba\x94\x1c\x56\x04\x4b\xf3\x1a\x27\x16\x38\x87\x22\x5c\x09\x59\x10\xed\x7b\x8b\xc5\x02\x6e\x6f\xa7\xf0\x0d\xff\x41\x76\x55\x14\x57\x0a\xcb\x04\xad\x9f\xe3\xb8\x83\xd5\xd0\xd2\x80\xa7\x04\xa7\xe0\xad\xa4\x28\xee\xc4\xae\x05\xd5\x60\xca\xff\x27\x89\x39\x93\xfe\x0f\x32\xe8\xe3\xd1\x8f\x5d\xf5\x08\x3f\xce\xfc\x76\xac\x9b\x84\x58\xdf\x69\xe5\xb7\xf9\xf5\xdb\xd0\x9d\xf9\x5e\xd8\x27\x2e\xa4\x24\xc9\x9e\x82\x00\xa2\x08\x2c\x61\x73\x8e\xcc\x84\xdb\x97\x80\xca\x44\x99\xe3\x14\x2c\xd6\xeb\xdc\x4e\xc8\x90\x32\x85\x73\x69\x05\x2e\xbc\x61\x63\xe1\xcc\xd7\x19\x53\x93\xd0\x9a\x19\xb8\x18\xd4\x5a\x03\x9b\x5c\x43\xdd\x69\x3e\xb9\xee\x94\xda\x6f\xf7\xd9\x57\x74\x1c\x99\x79\xda\x7c\xbb\xbf\x2b\xfe\x0b\x00\x00\xff\xff\x98\x33\x7b\xbe\x6f\x0c\x00\x00")
 
 func homeTmplHtmlBytes() ([]byte, error) {
 	return bindataRead(
diff --git a/services/allocator/allocatord/assets/dash.js b/services/allocator/allocatord/assets/dash.js
index 4a9ea40..6651f97 100644
--- a/services/allocator/allocatord/assets/dash.js
+++ b/services/allocator/allocatord/assets/dash.js
@@ -49,12 +49,12 @@
   var CHART_COLOR = '#00838F';
 
   var durationInSeconds = 3600;
-  var mountedName = '';
+  var instance = '';
 
   function extractParameters() {
     var $url = $.url();
-    mountedName = $url.param('n');
-    return mountedName !== undefined;
+    instance = $url.param('instance');
+    return instance !== undefined;
   }
 
   // Sets up handlers for changing duration.
@@ -74,7 +74,7 @@
   function update() {
     $('#loading-label').show();
     var params = {
-      n: mountedName,
+      instance: instance,
       d: durationInSeconds
     };
     $('#error-msg').hide();
diff --git a/services/allocator/allocatord/assets/dashboard.tmpl.html b/services/allocator/allocatord/assets/dashboard.tmpl.html
index 0f1ca93..468bc0b 100644
--- a/services/allocator/allocatord/assets/dashboard.tmpl.html
+++ b/services/allocator/allocatord/assets/dashboard.tmpl.html
@@ -20,7 +20,7 @@
   <body>
     <div id="container">
       <div id="header">
-        <div id="title">{{.ServerName}} Dashboard</div>
+        <div id="title">{{title .ServerName}} Dashboard</div>
         <div>{{.Instance}}</div>
         <div id="email">{{.Email}}</div>
       </div>
diff --git a/services/allocator/allocatord/assets/home.tmpl.html b/services/allocator/allocatord/assets/home.tmpl.html
index 863b358..fd12675 100644
--- a/services/allocator/allocatord/assets/home.tmpl.html
+++ b/services/allocator/allocatord/assets/home.tmpl.html
@@ -23,21 +23,23 @@
     {{range $index, $element := .Instances}}
       <div class="blessings-item">
         <div class="blessing-details">
-          <h3>{{kubeName .Name}}</h3>
+          {{with .Instance}}
+          <h3>{{.Handle}}</h3>
           <p class="blessing-caveats">
             <span>Creation Time</span><br/>
             <span class="unixtime" data-unixtime={{.CreationTime.Unix}}>{{.CreationTime.String}}</span>
           </p>
           <p class="blessing-caveats">
             <span>Mount Name</span><br/>
-            <i>{{.NameRoot}}/</i><wbr/>{{relativeName .Name}}
+            {{.MountName}}
           </p>
           <p class="blessing-caveats">
             <span>Blessing Patterns</span><br/>
-            {{range .BlessingPatterns}}
+            {{range .BlessingNames}}
               {{.}}<br/>
             {{end}}
           </p>
+          {{end}}
         </div>
         <div class="btns-col">
           <div class="btn">
diff --git a/services/allocator/allocatord/assets_helper.go b/services/allocator/allocatord/assets_helper.go
index 12ef337..aedf59f 100644
--- a/services/allocator/allocatord/assets_helper.go
+++ b/services/allocator/allocatord/assets_helper.go
@@ -106,9 +106,7 @@
 		return nil, err
 	}
 	t, err := template.New(name).Funcs(template.FuncMap{
-		"title":        strings.Title,
-		"kubeName":     kubeNameFromMountName,
-		"relativeName": relativeMountName,
+		"title": strings.Title,
 	}).Parse(string(data))
 	if err != nil {
 		return nil, err
diff --git a/services/allocator/allocatord/cookie.go b/services/allocator/allocatord/cookie.go
index 2c160fa..4c56399 100644
--- a/services/allocator/allocatord/cookie.go
+++ b/services/allocator/allocatord/cookie.go
@@ -42,18 +42,18 @@
 	CSRFToken string `'json:"csrfToken"`
 }
 
-func (c *signedCookie) computeHMAC(name, signKey string) []byte {
+func computeHMAC(signKey string, fields ...string) []byte {
 	mac := hmac.New(sha256.New, []byte(signKey))
-	put := func(data string) {
-		fmt.Fprintf(mac, "%08x%s", len(data), data)
+	for _, f := range fields {
+		fmt.Fprintf(mac, "%08x%s", len(f), f)
 	}
-	put(name)
-	put(c.Payload)
-	put(c.Expiry.String())
-	put(c.CSRFToken)
 	return mac.Sum(nil)
 }
 
+func (c *signedCookie) computeHMAC(name, signKey string) []byte {
+	return computeHMAC(signKey, name, c.Payload, c.Expiry.String(), c.CSRFToken)
+}
+
 func (c *signedCookie) verifyHMAC(name, signKey string) bool {
 	return hmac.Equal(c.HMAC, c.computeHMAC(name, signKey))
 }
diff --git a/services/allocator/allocatord/dashboard.go b/services/allocator/allocatord/dashboard.go
index b8dd17c..087f5c5 100644
--- a/services/allocator/allocatord/dashboard.go
+++ b/services/allocator/allocatord/dashboard.go
@@ -13,7 +13,7 @@
 	"strings"
 	"time"
 
-	"google.golang.org/api/monitoring/v3"
+	monitoring "google.golang.org/api/monitoring/v3"
 
 	"v.io/x/lib/gcm"
 )
@@ -57,11 +57,11 @@
 
 func handleDashboard(ss *serverState, rs *requestState) error {
 	ctx := ss.ctx
-	instance := rs.r.FormValue(paramDashboardName)
+	instance := rs.r.FormValue(paramInstance)
 	if instance == "" {
-		return fmt.Errorf("parameter %q required for instance name", paramDashboardName)
+		return fmt.Errorf("parameter %q required for instance name", paramInstance)
 	}
-	if err := checkOwner(ctx, rs.email, kubeNameFromMountName(instance)); err != nil {
+	if err := checkOwner(ctx, rs.email, instance); err != nil {
 		return err
 	}
 
@@ -106,11 +106,11 @@
 		return writeResult()
 	}
 
-	mountedName := rs.r.FormValue(paramDashboardName)
-	if mountedName == "" {
-		return fmt.Errorf("parameter %q required for instance name", paramDashboardName)
+	instance := rs.r.FormValue(paramInstance)
+	if instance == "" {
+		return fmt.Errorf("parameter %q required for instance name", paramInstance)
 	}
-	if err := checkOwner(ctx, rs.email, kubeNameFromMountName(mountedName)); err != nil {
+	if err := checkOwner(ctx, rs.email, instance); err != nil {
 		return err
 	}
 
@@ -141,7 +141,9 @@
 	}
 	filters := []string{
 		fmt.Sprintf("metric.type=%q", md.Type),
-		fmt.Sprintf("metric.label.mounted_name=%q", mountedName),
+		// TODO(jingjin): Can we make the key be just the instance name
+		// (without sb/ prefix)?
+		fmt.Sprintf("metric.label.mounted_name=%q", relativeMountName(instance)),
 	}
 	nextPageToken := ""
 	tsMap := map[string]points{}
diff --git a/services/allocator/allocatord/handlers.go b/services/allocator/allocatord/handlers.go
index 25e5ff6..e844b1b 100644
--- a/services/allocator/allocatord/handlers.go
+++ b/services/allocator/allocatord/handlers.go
@@ -5,28 +5,26 @@
 package main
 
 import (
+	"crypto/hmac"
+	"encoding/base64"
+	"errors"
 	"fmt"
 	"net/http"
-	"strings"
-	"time"
 
-	"v.io/v23/security"
+	"v.io/x/ref/services/allocator"
 )
 
 func handleHome(ss *serverState, rs *requestState) error {
 	ctx := ss.ctx
-	instances, err := list(ctx, rs.email)
+	instances, err := serverInstances(ctx, rs.email)
 	if err != nil {
 		return fmt.Errorf("list error: %v", err)
 	}
 	type instanceArg struct {
-		Name,
-		NameRoot,
+		Instance allocator.Instance
 		DestroyURL,
 		DebugURL,
 		DashboardURL string
-		BlessingPatterns []string
-		CreationTime     time.Time
 	}
 	tmplArgs := struct {
 		AssetsPrefix,
@@ -43,24 +41,17 @@
 		Message:      rs.r.FormValue(paramMessage),
 	}
 	for _, instance := range instances {
-		if len(instance.blessingNames) == 0 {
-			// TODO(rthellend): Remove when all instances have the new
-			// creatorInfo annotations.
-			ctx.Info("blessingNames missing from creatorInfo")
-			for _, b := range ss.args.baseBlessingNames {
-				bName := strings.Join([]string{b, instance.name}, security.ChainSeparator)
-				instance.blessingNames = append(instance.blessingNames, bName)
-			}
-		}
-
 		tmplArgs.Instances = append(tmplArgs.Instances, instanceArg{
-			Name:             instance.mountName,
-			NameRoot:         nameRoot(ctx),
-			CreationTime:     instance.creationTime,
-			BlessingPatterns: instance.blessingNames,
-			DestroyURL:       makeURL(ctx, routeDestroy, params{paramName: instance.mountName, paramCSRF: rs.csrfToken}),
-			DashboardURL:     makeURL(ctx, routeDashboard, params{paramDashboardName: relativeMountName(instance.mountName)}),
-			DebugURL:         makeURL(ctx, routeDebug+"/", params{paramName: instance.mountName}),
+			Instance:     instance,
+			DestroyURL:   makeURL(ctx, routeDestroy, params{paramInstance: instance.Handle, paramCSRF: rs.csrfToken}),
+			DashboardURL: makeURL(ctx, routeDashboard, params{paramInstance: instance.Handle}),
+			DebugURL: makeURL(
+				ctx,
+				routeDebug+"/",
+				params{
+					paramInstance:  instance.Handle,
+					paramMountName: instance.MountName,
+					paramHMAC:      base64.URLEncoding.EncodeToString(computeHMAC(instance.Handle, instance.MountName))}),
 		})
 	}
 	if err := ss.args.assets.executeTemplate(rs.w, homeTmpl, tmplArgs); err != nil {
@@ -71,32 +62,50 @@
 
 func handleCreate(ss *serverState, rs *requestState) error {
 	ctx := ss.ctx
-	name, err := create(ctx, rs.email, ss.args.baseBlessings, ss.args.baseBlessingNames)
+	instance, err := create(ctx, rs.email, ss.args.baseBlessings, ss.args.baseBlessingNames)
 	if err != nil {
 		return fmt.Errorf("create failed: %v", err)
 	}
-	redirectTo := makeURL(ctx, routeHome, params{paramMessage: "created " + name})
+	redirectTo := makeURL(ctx, routeHome, params{paramMessage: "created " + instance})
 	http.Redirect(rs.w, rs.r, redirectTo, http.StatusFound)
 	return nil
 }
 
 func handleDestroy(ss *serverState, rs *requestState) error {
 	ctx := ss.ctx
-	name := rs.r.FormValue(paramName)
-	if err := destroy(ctx, rs.email, name); err != nil {
+	instance := rs.r.FormValue(paramInstance)
+	if instance == "" {
+		return fmt.Errorf("parameter %q required for instance name", paramInstance)
+	}
+	if err := destroy(ctx, rs.email, instance); err != nil {
 		return fmt.Errorf("destroy failed: %v", err)
 	}
-	redirectTo := makeURL(ctx, routeHome, params{paramMessage: "destroyed " + name})
+	redirectTo := makeURL(ctx, routeHome, params{paramMessage: "destroyed " + instance})
 	http.Redirect(rs.w, rs.r, redirectTo, http.StatusFound)
 	return nil
 }
 
 func handleDebug(ss *serverState, rs *requestState, debugBrowserServeMux *http.ServeMux) error {
-	instance := rs.r.FormValue(paramName)
+	instance := rs.r.FormValue(paramInstance)
 	if instance == "" {
-		return fmt.Errorf("parameter %q required for instance name", paramDashboardName)
+		return fmt.Errorf("parameter %q required for instance name", paramInstance)
 	}
-	if err := checkOwner(ss.ctx, rs.email, kubeNameFromMountName(instance)); err != nil {
+	mountName := rs.r.FormValue(paramMountName)
+	if mountName == "" {
+		return fmt.Errorf("parameter %q required for instance mount name", paramMountName)
+	}
+	hmacBase64 := rs.r.FormValue(paramHMAC)
+	if hmacBase64 == "" {
+		return fmt.Errorf("parameter %q required for name signature", paramHMAC)
+	}
+	hmacSignature, err := base64.URLEncoding.DecodeString(hmacBase64)
+	if err != nil {
+		return fmt.Errorf("invalid signature: %v", err)
+	}
+	if !hmac.Equal(hmacSignature, computeHMAC(instance, mountName)) {
+		return errors.New("mismatching signature")
+	}
+	if err := checkOwner(ss.ctx, rs.email, instance); err != nil {
 		return err
 	}
 	http.StripPrefix(routeDebug, debugBrowserServeMux).ServeHTTP(rs.w, rs.r)
diff --git a/services/allocator/allocatord/http.go b/services/allocator/allocatord/http.go
index d56df93..da5e1ec 100644
--- a/services/allocator/allocatord/http.go
+++ b/services/allocator/allocatord/http.go
@@ -30,12 +30,13 @@
 	routeHealth    = "/health"
 
 	paramMessage = "message"
-	// paramName has to match the name parameter in debug browser.
-	paramName = "n"
-	// The following parameter names are hardcorded in static/dash.js,
-	// and should be changed in tandem.
-	paramDashboardName    = "n"
+	paramHMAC    = "hmac"
+	// The following parameter names are hardcorded in static/dash.js, and
+	// should be changed in tandem.
+	paramInstance         = "instance"
 	paramDashbordDuration = "d"
+	// paramMountName has to match the name parameter in debug browser.
+	paramMountName = "n"
 
 	cookieValidity = 10 * time.Minute
 )
diff --git a/services/allocator/allocatord/names.go b/services/allocator/allocatord/names.go
index 4a5567e..2c0e843 100644
--- a/services/allocator/allocatord/names.go
+++ b/services/allocator/allocatord/names.go
@@ -22,9 +22,9 @@
 	serverMountPrefix = "sb"
 )
 
-// newKubeName returns a new kubernetes name.
+// newKubeName returns a new kubernetes name.  This is used as the handle for
+// the instance created by allocatord.
 func newKubeName() (string, error) {
-	// Kubernetes names/labels are at most 63 characters long.
 	b := make([]byte, 4)
 	if _, err := rand.Read(b); err != nil {
 		return "", err
@@ -43,19 +43,11 @@
 }
 
 func mountNameFromKubeName(ctx *context.T, kName string) string {
-	return naming.Join(nameRoot(ctx), serverMountPrefix, kName)
+	return naming.Join(nameRoot(ctx), relativeMountName(kName))
 }
 
-func kubeNameFromMountName(mName string) string {
-	if mName == "" {
-		return ""
-	}
-	p := strings.Split(mName, "/")
-	return p[len(p)-1]
-}
-
-func relativeMountName(mName string) string {
-	return naming.Join(serverMountPrefix, kubeNameFromMountName(mName))
+func relativeMountName(kName string) string {
+	return naming.Join(serverMountPrefix, kName)
 }
 
 func emailFromBlessingNames(blessingNames []string) string {
diff --git a/services/allocator/allocatord/oauth.go b/services/allocator/allocatord/oauth.go
index 6887ff3..e8dcce4 100644
--- a/services/allocator/allocatord/oauth.go
+++ b/services/allocator/allocatord/oauth.go
@@ -73,7 +73,7 @@
 type oauthCredentials struct {
 	ClientID     string `json:"clientId"`
 	ClientSecret string `json:"clientSecret"`
-	// HashKey is not stricly part of the OAuth credentials, but for
+	// HashKey is not strictly part of the OAuth credentials, but for
 	// convenience we put it in the same object.
 	//
 	// TODO(caprita): Consider signing cookies with the server's private key
diff --git a/services/allocator/allocatord/service.go b/services/allocator/allocatord/service.go
index 2c038e6..9b731ec 100644
--- a/services/allocator/allocatord/service.go
+++ b/services/allocator/allocatord/service.go
@@ -24,6 +24,7 @@
 	"v.io/v23/security/access"
 	"v.io/v23/verror"
 	"v.io/v23/vom"
+	"v.io/x/ref/services/allocator"
 )
 
 const pkgPath = "v.io/x/ref/services/allocator/allocatord"
@@ -39,7 +40,7 @@
 }
 
 // Create creates a new instance of the service.
-// It returns the object name of the new instance.
+// It returns a handle for the new instance.
 func (i *allocatorImpl) Create(ctx *context.T, call rpc.ServerCall) (string, error) {
 	b, _ := security.RemoteBlessingNames(ctx, call.Security())
 	ctx.Infof("Create() called by %v", b)
@@ -51,20 +52,20 @@
 	return create(ctx, email, i.baseBlessings, i.baseBlessingNames)
 }
 
-// Destroy destroys the instance with the given name.
-func (i *allocatorImpl) Destroy(ctx *context.T, call rpc.ServerCall, mName string) error {
+// Destroy destroys the instance with the given handle.
+func (i *allocatorImpl) Destroy(ctx *context.T, call rpc.ServerCall, kName string) error {
 	b, _ := security.RemoteBlessingNames(ctx, call.Security())
-	ctx.Infof("Destroy(%q) called by %v", mName, b)
+	ctx.Infof("Destroy(%q) called by %v", kName, b)
 
 	email := emailFromBlessingNames(b)
 	if email == "" {
 		return verror.New(verror.ErrNoAccess, ctx, "unable to determine caller's email address")
 	}
-	return destroy(ctx, email, mName)
+	return destroy(ctx, email, kName)
 }
 
 // List returns a list of all the instances owned by the caller.
-func (i *allocatorImpl) List(ctx *context.T, call rpc.ServerCall) ([]string, error) {
+func (i *allocatorImpl) List(ctx *context.T, call rpc.ServerCall) ([]allocator.Instance, error) {
 	b, _ := security.RemoteBlessingNames(ctx, call.Security())
 	ctx.Infof("List() called by %v", b)
 
@@ -72,15 +73,7 @@
 	if email == "" {
 		return nil, verror.New(verror.ErrNoAccess, ctx, "unable to determine caller's email address")
 	}
-	instances, err := list(ctx, email)
-	if err != nil {
-		return nil, err
-	}
-	mNames := make([]string, len(instances))
-	for i, instance := range instances {
-		mNames[i] = instance.mountName
-	}
-	return mNames, nil
+	return serverInstances(ctx, email)
 }
 
 func create(ctx *context.T, email string, baseBlessings security.Blessings, baseBlessingNames []string) (string, error) {
@@ -131,17 +124,15 @@
 		deletePersistentDisk(ctx, kName)
 		return "", verror.New(verror.ErrInternal, ctx, err)
 	}
-	return mName, nil
+	return kName, nil
 }
 
-func destroy(ctx *context.T, email, mName string) error {
-	kName := kubeNameFromMountName(mName)
-
+func destroy(ctx *context.T, email, kName string) error {
 	if err := isOwnerOfInstance(ctx, email, kName); err != nil {
 		return err
 	}
 
-	cfg, cleanup, err := createDeploymentConfig(ctx, email, kName, mName, nil)
+	cfg, cleanup, err := createDeploymentConfig(ctx, email, kName, "", nil)
 	defer cleanup()
 	if err != nil {
 		return err
@@ -158,21 +149,6 @@
 	return nil
 }
 
-func list(ctx *context.T, email string) ([]serverInstance, error) {
-	instances, err := serverInstances(ctx, email)
-	if err != nil {
-		return nil, err
-	}
-	for i, instance := range instances {
-		// TODO(rthellend): Remove when all instances have the new
-		// creatorInfo annotations.
-		if instances[i].mountName == "" {
-			instances[i].mountName = mountNameFromKubeName(ctx, instance.name)
-		}
-	}
-	return instances, err
-}
-
 func createDeploymentConfig(ctx *context.T, email, deploymentName, mountName string, baseBlessingNames []string) (string, func(), error) {
 	cleanup := func() {}
 	acl, err := accessList(ctx, email)
@@ -286,14 +262,7 @@
 	return hex.EncodeToString(h[:])
 }
 
-type serverInstance struct {
-	name          string
-	mountName     string
-	blessingNames []string
-	creationTime  time.Time
-}
-
-func serverInstances(ctx *context.T, email string) ([]serverInstance, error) {
+func serverInstances(ctx *context.T, email string) ([]allocator.Instance, error) {
 	args := []string{"kubectl", "get", "deployments", "-o", "json"}
 	if email != "" {
 		args = append(args, "-l", "ownerHash="+emailHash(email))
@@ -323,7 +292,7 @@
 	if err := json.Unmarshal(out, &list); err != nil {
 		return nil, err
 	}
-	instances := []serverInstance{}
+	instances := []allocator.Instance{}
 	for _, l := range list.Items {
 		if !strings.HasPrefix(l.Metadata.Name, serverNameFlag+"-") {
 			continue
@@ -333,11 +302,11 @@
 			ctx.Errorf("decodeCreatorInfo failed: %v", err)
 			continue
 		}
-		instances = append(instances, serverInstance{
-			name:          l.Metadata.Name,
-			mountName:     cInfo.MountName,
-			blessingNames: cInfo.BlessingNames,
-			creationTime:  l.Metadata.CreationTime,
+		instances = append(instances, allocator.Instance{
+			Handle:        l.Metadata.Name,
+			MountName:     cInfo.MountName,
+			BlessingNames: cInfo.BlessingNames,
+			CreationTime:  l.Metadata.CreationTime,
 		})
 	}
 	return instances, nil
@@ -349,7 +318,7 @@
 		return err
 	}
 	for _, i := range instances {
-		if i.name == kName {
+		if i.Handle == kName {
 			return nil
 		}
 	}
diff --git a/services/allocator/service.vdl b/services/allocator/service.vdl
index 802a366..c5cfe6e 100644
--- a/services/allocator/service.vdl
+++ b/services/allocator/service.vdl
@@ -4,14 +4,24 @@
 
 package allocator
 
+import "time"
+
+// Instance describes a service instance.
+type Instance struct {
+     Handle string
+     MountName string
+     BlessingNames []string
+     CreationTime time.Time
+}
+
 type Allocator interface {
 	// Create creates a new instance of the service.
-	// It returns the object name of the new instance.
-	Create() (name string | error)
+	// It returns a handle for the new instance.
+	Create() (handle string | error)
 
-	// Destroy destroys the instance with the given name.
-	Destroy(name string) error
+	// Destroy destroys the instance with the given handle.
+	Destroy(handle string) error
 
 	// List returns a list of all the instances owned by the caller.
-	List() (names []string | error)
+	List() (instances []Instance | error)
 }
