diff --git a/planetstack/core/xoslib/static/js/xosAdminSite.js b/planetstack/core/xoslib/static/js/xosAdminSite.js
index d265630..b9068b5 100644
--- a/planetstack/core/xoslib/static/js/xosAdminSite.js
+++ b/planetstack/core/xoslib/static/js/xosAdminSite.js
@@ -61,21 +61,44 @@
 };
 
 XOSAdminApp.buildViews = function() {
+     genericAddChildClass = XOSDetailView.extend({template: "#xos-add-template",
+                                                        app: XOSAdminApp});
+     XOSAdminApp["genericAddChildView"] = genericAddChildClass;
+
+     genericDetailClass = XOSDetailView.extend({template: "#xos-detail-template",
+                                                           app: XOSAdminApp});
+     XOSAdminApp["genericDetailView"] = genericDetailClass;
+
      for (var index in OBJS) {
          name = OBJS[index];
          tr_template = '#xosAdmin-' + name + '-listitem-template';
          table_template = '#xosAdmin-' + name + '-list-template';
          detail_template = '#xosAdmin-' + name + '-detail-template';
+         add_child_template = '#xosAdmin-' + name + '-add-child-template';
          collection_name = name + "s";
          region_name = name + "List";
          detailNavLink = collection_name;
 
-         detailClass = XOSDetailView.extend({
-            template: detail_template,
-            app: XOSAdminApp,
-         });
+         if ($(detail_template).length) {
+             detailClass = XOSDetailView.extend({
+                template: detail_template,
+                app: XOSAdminApp,
+             });
+         } else {
+             detailClass = genericDetailClass;
+         }
          XOSAdminApp[collection_name + "DetailView"] = detailClass;
-
+
+         if ($(add_child_template).length) {
+             addClass = XOSDetailView.extend({
+                template: add_child_template,
+                app: XOSAdminApp,
+             });
+         } else {
+             addClass = genericAddChildClass;
+         }
+         XOSAdminApp[collection_name + "AddChildView"] = addClass;
+
          itemViewClass = XOSItemView.extend({
              detailClass: detailClass,
              template: tr_template,
@@ -109,6 +132,7 @@
         api_command = "list" + firstCharUpper(collection_name);
         listViewName = collection_name + "ListView";
         detailViewName = collection_name + "DetailView";
+        addChildViewName = collection_name + "AddChildView";
 
         api[api_command] = XOSAdminApp.createListHandler(listViewName, collection_name, "detail", collection_name);
         routes[nav_url] = api_command;
@@ -126,7 +150,7 @@
 
         nav_url = "addChild" + firstCharUpper(name) + "/:parentModel/:parentField/:parentId";
         api_command = "addChild" + firstCharUpper(name);
-        api[api_command] = XOSAdminApp.createAddChildHandler(detailViewName, collection_name);
+        api[api_command] = XOSAdminApp.createAddChildHandler(addChildViewName, collection_name);
         routes[nav_url] = api_command;
 
         nav_url = "delete" + firstCharUpper(name) + "/:id";
diff --git a/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js
index de03ddf..1f4ca5b 100644
--- a/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js
+++ b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js
@@ -301,6 +301,18 @@
         modelClassName = modelName;
         collectionClassName = modelName + "Collection";
 
+        if (!attrs.addFields) {
+            attrs.addFields = attrs.detailFields;
+        }
+
+        if (!attrs.inputType) {
+            attrs.inputType = {};
+        }
+
+        if (!attrs.foreignFields) {
+            attrs.foreignFields = {};
+        }
+
         if (!attrs.collectionName) {
             attrs.collectionName = modelName + "s";
         }
@@ -311,12 +323,13 @@
 
         for (key in attrs) {
             value = attrs[key];
-            if ($.inArray(key, ["urlRoot", "modelName", "collectionName", "validate"])>=0) {
+            if ($.inArray(key, ["urlRoot", "modelName", "collectionName", "addFields", "detailFields", "foreignFields", "inputType", "relatedCollections", "foreignCollections"])>=0) {
                 modelAttrs[key] = value;
-            }
-            if ($.inArray(key, ["urlRoot", "modelName", "collectionName", "relatedCollections", "foreignCollections"])>=0) {
                 collectionAttrs[key] = value;
             }
+            if ($.inArray(key, ["validate"])) {
+                modelAttrs[key] = value;
+            }
         }
 
         if (xosdefaults && xosdefaults[modelName]) {
@@ -345,11 +358,18 @@
         define_model(this, {urlRoot: SLIVER_API,
                             relatedCollections: {"networkSlivers": "sliver"},
                             foreignCollections: ["slices", "deployments", "images", "nodes", "users"],
-                            modelName: "sliver"});
+                            foreignFields: {"creator": "users", "image": "images", "node": "nodes", "deploymentNetwork": "deployments", "slice": "slices"},
+                            modelName: "sliver",
+                            addFields: ["slice", "deploymentNetwork", "image", "node"],
+                            detailFields: ["name", "instance_id", "instance_name", "slice", "deploymentNetwork", "image", "node", "creator"],
+                            });
 
         define_model(this, {urlRoot: SLICE_API,
                            relatedCollections: {"slivers": "slice", "sliceDeployments": "slice", "slicePrivileges": "slice", "networks": "owner"},
                            foreignCollections: ["services", "sites"],
+                           foreignFields: {"service": "services", "site": "sites"},
+                           detailFields: ["name", "site", "enabled", "description", "url", "max_slivers"],
+                           inputType: {"enabled": "checkbox"},
                            modelName: "slice",
                            xosValidate: function(attrs, options) {
                                errors = XOSModel.prototype.xosValidate(this, attrs, options);
@@ -368,56 +388,93 @@
 
         define_model(this, {urlRoot: SLICEDEPLOYMENT_API,
                            foreignCollections: ["slices", "deployments"],
-                           modelName: "sliceDeployment"});
+                           modelName: "sliceDeployment",
+                           foreignFields: {"slice": "slices", "deployment": "deployments"},
+                           detailFields: ["slice", "deployment", "tenant_id"],
+                           });
 
         define_model(this, {urlRoot: SLICEPRIVILEGE_API,
                             foreignCollections: ["slices", "users", "sliceRoles"],
-                            modelName: "slicePrivilege"});
+                            modelName: "slicePrivilege",
+                            foreignFields: {"user": "users", "slice": "slices", "role": "sliceRoles"},
+                            detailFields: ["user", "slice", "role"],
+                            });
 
         define_model(this, {urlRoot: SLICEROLE_API,
-                            modelName: "sliceRole"});
+                            modelName: "sliceRole",
+                            detailFields: ["role"],
+                            });
 
         define_model(this, {urlRoot: NODE_API,
                             foreignCollections: ["sites", "deployments"],
-                            modelName: "node"});
+                            modelName: "node",
+                            foreignFields: {"site": "sites", "deployment": "deployments"},
+                            detailFields: ["name", "site", "deployment"],
+                            });
 
         define_model(this, {urlRoot: SITE_API,
                             relatedCollections: {"users": "site", "slices": "site", "nodes": "site"},
-                            modelName: "site"});
+                            modelName: "site",
+                            detailFields: ["name", "abbreviated_name", "url", "enabled", "is_public", "login_base"],
+                            inputType: {"enabled": "checkbox", "is_public": "checkbox"},
+                            });
 
         define_model(this, {urlRoot: USER_API,
                             relatedCollections: {"slicePrivileges": "user", "slices": "owner", "userDeployments": "user"},
                             foreignCollections: ["sites"],
-                            modelName: "user"});
+                            modelName: "user",
+                            foreignFields: {"site": "sites"},
+                            detailFields: ["username", "firstname", "lastname", "phone", "user_url", "site"],
+                            });
 
         define_model(this, {urlRoot: USERDEPLOYMENT_API,
                             foreignCollections: ["users","deployments"],
-                            modelName: "userDeployment"});
+                            modelName: "userDeployment",
+                            foreignFields: {"deployment": "deployments", "user": "users"},
+                            detailFields: ["user", "deployment", "kuser_id"],
+                            });
 
         define_model(this, { urlRoot: DEPLOYMENT_API,
                              relatedCollections: {"nodes": "deployment", "slivers": "deploymentNetwork", "networkDeployments": "deployment", "userDeployments": "deployment"},
-                             modelName: "deployment"});
+                             modelName: "deployment",
+                             detailFields: ["name", "backend_type", "admin_tenant"],
+                             });
 
         define_model(this, {urlRoot: IMAGE_API,
                             model: this.image,
-                            modelName: "image"});
+                            modelName: "image",
+                            detailFields: ["name", "disk_format", "admin_tenant"],
+                            });
 
         define_model(this, {urlRoot: NETWORKTEMPLATE_API,
-                            modelName: "networkTemplate"});
+                            modelName: "networkTemplate",
+                            detailFields: ["name", "description", "visibility", "translation", "sharedNetworkName", "sharedNetworkId"],
+                            });
 
         define_model(this, {urlRoot: NETWORK_API,
                             relatedCollections: {"networkDeployments": "network", "networkSlivers": "network"},
                             foreignCollections: ["slices", "networkTemplates"],
-                            modelName: "network"});
+                            modelName: "network",
+                            foreignFields: {"template": "networkTemplates", "owner": "slices"},
+                            detailFields: ["name", "template", "ports", "labels", "owner"],
+                            });
 
         define_model(this, {urlRoot: NETWORKSLIVER_API,
-                            modelName: "networkSliver"});
+                            modelName: "networkSliver",
+                            foreignFields: {"network": "networks", "sliver": "slivers"},
+                            detailFields: ["network", "sliver", "ip", "port_id"],
+                            });
 
         define_model(this, {urlRoot: NETWORKDEPLOYMENT_API,
-                            modelName: "networkDeployment"});
+                            modelName: "networkDeployment",
+                            foreignFields: {"network": "networks", "deployment": "deployments"},
+                            detailFields: ["network", "deployment", "net_id"],
+                            });
 
         define_model(this, {urlRoot: SERVICE_API,
-                            modelName: "service"});
+                            modelName: "service",
+                            detailFields: ["name", "description", "versionNumber"],
+                            });
 
         // enhanced REST
         define_model(this, {urlRoot: SLICEPLUS_API,
diff --git a/planetstack/core/xoslib/static/js/xoslib/xosHelper.js b/planetstack/core/xoslib/static/js/xoslib/xosHelper.js
index d2af0aa..8e45267 100644
--- a/planetstack/core/xoslib/static/js/xoslib/xosHelper.js
+++ b/planetstack/core/xoslib/static/js/xoslib/xosHelper.js
@@ -116,7 +116,7 @@
         }
     },
 
-    createAddChildHandler: function(detailName, collection_name) {
+    createAddChildHandler: function(addChildName, collection_name) {
         var app=this;
         return function(parent_modelName, parent_fieldName, parent_id) {
             app.Router.showPreviousURL();
@@ -126,7 +126,7 @@
             console.log(parent_id);
             model = new xos[collection_name].model();
             model.attributes[parent_fieldName] = parent_id;
-            detailViewClass = app[detailName];
+            detailViewClass = app[addChildName];
             var detailView = new detailViewClass({model: model, collection:xos[collection_name]});
             detailView.dialog = $("xos-addchild-dialog");
             app["addChildDetail"].show(detailView);
@@ -136,10 +136,12 @@
                width: 640,
                buttons : {
                     "Save" : function() {
+                      var addDialog = this;
+                      detailView.synchronous = true;
+                      detailView.afterSave = function() { $(addDialog).dialog("close"); }
                       detailView.save();
 
-                      $(this).dialog("close");
-                      // do something here
+                      //$(this).dialog("close");
                     },
                     "Cancel" : function() {
                       $(this).dialog("close");
@@ -503,6 +505,14 @@
                 _.each(errors, markErrors);
             },
 
+             templateHelpers: function() { return { modelName: this.model.modelName,
+                                                    collectionName: this.model.collectionName,
+                                                    addFields: this.model.addFields,
+                                                    detailFields: this.model.detailFields,
+                                                    foreignFields: this.model.foreignFields,
+                                                    inputType: this.model.inputType,
+                                         }},
+
 });
 
 /* XOSItemView
@@ -519,6 +529,10 @@
 
              templateHelpers: function() { return { modelName: this.model.modelName,
                                                     collectionName: this.model.collectionName,
+                                                    addFields: this.model.addFields,
+                                                    detailFields: this.model.detailFields,
+                                                    foreignFields: this.model.foreignFields,
+                                                    inputType: this.model.inputType,
                                          }},
 });
 
