diff --git a/planetstack/core/xoslib/static/js/xosTenant.js b/planetstack/core/xoslib/static/js/xosTenant.js
index 10e70e6..286537d 100644
--- a/planetstack/core/xoslib/static/js/xosTenant.js
+++ b/planetstack/core/xoslib/static/js/xosTenant.js
@@ -102,6 +102,7 @@
     logTableId: "#logTable",
     statusMsgId: "#statusMsg",
     hideTabsByDefault: true,
+    dirty: false,
     varName: "XOSTenantApp",
 });
 
@@ -115,6 +116,7 @@
 });
 
 XOSTenantApp.setDirty = function(dirty) {
+    XOSTenantApp.dirty = dirty;
     if (dirty) {
         $("button.btn-tenant-save").addClass("btn-success");
     } else {
@@ -253,6 +255,9 @@
               var editDialog = this;
               user_ids = all_options($("#tenant-edit-users-dialog").find(".select-picker-to"));
               user_ids = user_ids.map( function(x) { return parseInt(x,10); } );
+              if (!array_same_elements(user_ids, model.usersBuffer)) {
+                  XOSTenantApp.setDirty(true);
+              }
               model.usersBuffer = user_ids;
               $(editDialog).dialog("close");
             },
@@ -270,6 +275,15 @@
 };
 
 XOSTenantApp.viewSlice = function(model) {
+    if (XOSTenantApp.dirty) {
+        if (!confirm("The current sliver has unsaved data -- view new sliver anyway ?")) {
+            $("#tenantSliceSelector select").val(XOSTenantApp.currentSlice.id);
+            return;
+        }
+    }
+
+    XOSTenantApp.setDirty(false);
+
     if (!model && xos.slicesPlus.models.length > 0) {
         model = xos.slicesPlus.models[0];
     }
@@ -303,6 +317,8 @@
 
         XOSTenantApp.tenantButtons.show( new XOSTenantButtonView( { app: XOSTenantApp,
                                                                     linkedView: tenantSummary } ) );
+
+        XOSTenantApp.currentSlice = model;
     } else {
         XOSTenantApp.tenantSliceSelector.show(new HTMLView({html: ""}));
         XOSTenantApp.tenantSummary.show(new HTMLView({html: "You have no slices"}));
diff --git a/planetstack/core/xoslib/static/js/xoslib/xos-util.js b/planetstack/core/xoslib/static/js/xoslib/xos-util.js
index 59fb06e..1c42e26 100644
--- a/planetstack/core/xoslib/static/js/xoslib/xos-util.js
+++ b/planetstack/core/xoslib/static/js/xoslib/xos-util.js
@@ -105,6 +105,12 @@
     return result;
 }
 
+function array_same_elements(arr1, arr2)
+{
+    // return true if arrays have same elements, even if order is different
+    return ($(arr1).not(arr2).length == 0 && $(arr2).not(arr1).length == 0);
+}
+
 function array_pair_lookup(x, names, values)
 {
     for (index in values) {
