diff --git a/xos/hpc/admin.py b/xos/hpc/admin.py
index f276165..d171beb 100644
--- a/xos/hpc/admin.py
+++ b/xos/hpc/admin.py
@@ -37,7 +37,7 @@
              return super(FilteredChangeList, self).url_for_result(result)
 
         pk = getattr(result, self.pk_attname)
-        if embedded:
+        if self.embedded:
             return reverse('admin:%s_%s_embeddedfilteredchange' % (self.opts.app_label,
                                                            self.opts.model_name),
                            args=(quote(self.hpcService.id), quote(pk),),
@@ -93,6 +93,7 @@
            url(r'^(.+)/(.+)/filteredchange$', wrap(self.filtered_change_view), name='%s_%s_filteredchange' % info),
            url(r'^(.+)/(.+)/embeddedfilteredchange$', wrap(self.embedded_filtered_change_view), name='%s_%s_embeddedfilteredchange' % info),
            url(r'^(.+)/filteredadd/$', wrap(self.filtered_add_view), name='%s_%s_filteredadd' % info),
+           url(r'^(.+)/embeddedfilteredadd/$', wrap(self.embedded_filtered_add_view), name='%s_%s_embeddedfilteredadd' % info),
        ]
        return my_urls + urls
 
@@ -101,7 +102,10 @@
 
        if getattr(request,"hpcService",None) is not None:
             extra_context["custom_changelist_breadcrumb_url"] = "/admin/hpc/%s/%s/filteredlist/" % (self.model._meta.model_name, str(request.hpcService.id))
-            extra_context["custom_add_url"] = "/admin/hpc/%s/%s/filteredadd/" % (self.model._meta.model_name, str(request.hpcService.id))
+            if getattr(request,"embedded",False):
+                extra_context["custom_add_url"] = "/admin/hpc/%s/%s/embeddedfilteredadd/" % (self.model._meta.model_name, str(request.hpcService.id))
+            else:
+                extra_context["custom_add_url"] = "/admin/hpc/%s/%s/filteredadd/" % (self.model._meta.model_name, str(request.hpcService.id))
 
    def changelist_view(self, *args, **kwargs):
        if "template" in kwargs:
@@ -137,10 +141,23 @@
        request.embedded = True
        return self.change_view(request, object_id, template="admin/change_form_embedded.html", extra_context=extra_context)
 
+   def add_view(self, *args, **kwargs):
+       if "template" in kwargs:
+           _thread_locals.change_form_template = kwargs["template"]
+           del kwargs["template"]
+       else:
+           _thread_locals.change_form_template = "admin/change_form_bc.html"
+       return super(FilteredAdmin, self).add_view(*args, **kwargs)
+
    def filtered_add_view(self, request, hpcServiceId, extra_context=None):
        request.hpcService = HpcService.objects.get(id=hpcServiceId)
        return self.add_view(request, extra_context=extra_context)
 
+   def embedded_filtered_add_view(self, request, hpcServiceId, extra_context=None):
+       request.hpcService = HpcService.objects.get(id=hpcServiceId)
+       request.embedded = True
+       return self.add_view(request, template="admin/change_form_embedded.html", extra_context=extra_context)
+
    def get_queryset(self, request):
        # request.hpcService will be set in filtered_changelist_view so we can
        # use it to filter what will be displayed in the list.
diff --git a/xos/templates/admin/change_form_embedded.html b/xos/templates/admin/change_form_embedded.html
new file mode 100644
index 0000000..e3c2915
--- /dev/null
+++ b/xos/templates/admin/change_form_embedded.html
@@ -0,0 +1,12 @@
+{% extends "admin/change_form.html" %}
+{% load i18n admin_static admin_modify suit_tags admin_urls %}
+{% load url from future %}
+
+{% block container %}
+{% block content %}
+{{ block.super }}
+{% endblock %}
+{% endblock %}
+
+{% block footer %}
+{% endblock %}
diff --git a/xos/templates/admin/change_list_embedded.html b/xos/templates/admin/change_list_embedded.html
new file mode 100644
index 0000000..77b39f3
--- /dev/null
+++ b/xos/templates/admin/change_list_embedded.html
@@ -0,0 +1,12 @@
+{% extends "admin/change_list_bc.html" %}
+{% load i18n admin_static admin_modify suit_tags admin_urls %}
+{% load url from future %}
+
+{% block container %}
+{% block content %}
+{{ block.super }}
+{% endblock %}
+{% endblock %}
+
+{% block footer %}
+{% endblock %}
