diff --git a/xos/core/admin.py b/xos/core/admin.py
index 5531df4..beeb982 100644
--- a/xos/core/admin.py
+++ b/xos/core/admin.py
@@ -114,6 +114,7 @@
     def save_formset(self, request, form, formset, change):
         instances = formset.save(commit=False)
         for instance in instances:
+            instance.caller = request.user
             instance.save_by_user(request.user)
 
         # BUG in django 1.7? Objects are not deleted by formset.save if
@@ -1072,13 +1073,6 @@
         if object_id:
             self.readonly_fields = ('backend_status_text','site')
 
-        # Ugly hack for CORD
-        self.inlines = self.normal_inlines
-        if object_id:
-            slice = Slice.objects.get(pk=object_id)
-            if slice.name == "mysite_vcpe":
-                self.inlines = [ SlicePrivilegeInline, CordSliverInline, TagInline, ReservationInline,SliceNetworkInline]
-
         return super(SliceAdmin, self).change_view(request, object_id, form_url)
 
     def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
