diff --git a/xos/core/admin.py b/xos/core/admin.py
index 79f6d06..e6911be 100644
--- a/xos/core/admin.py
+++ b/xos/core/admin.py
@@ -119,6 +119,10 @@
 
         return actions
 
+    def url_for_model_changelist(self, request, model):
+        # used in add_extra_context
+        return reverse('admin:%s_%s_changelist' % (model._meta.app_label, model._meta.model_name), current_app=model._meta.app_label)
+
     def add_extra_context(self, request, extra_context):
         # allow custom application breadcrumb url and name
         extra_context["custom_app_breadcrumb_url"] = getattr(self, "custom_app_breadcrumb_url", None)
@@ -135,7 +139,7 @@
                     info = {"app": model._meta.app_label,
                             "model": model._meta.model_name,
                             "name": capfirst(model._meta.verbose_name_plural),
-                            "url": reverse('admin:%s_%s_changelist' % (model._meta.app_label, model._meta.model_name), current_app=model._meta.app_label) }
+                            "url": self.url_for_model_changelist(request,model) }
                     admins.append(info)
             extra_context["registered_admins"] = admins
 
@@ -176,6 +180,13 @@
 
         return super(XOSAdminMixin, self).changelist_view(request, extra_context=extra_context)
 
+    def add_view(self, request, extra_context = None):
+        extra_context = extra_context or {}
+
+        self.add_extra_context(request, extra_context)
+
+        return super(XOSAdminMixin, self).add_view(request, extra_context=extra_context)
+
     def __user_is_readonly(self, request):
         return request.user.isReadOnlyUser()
 
diff --git a/xos/templates/admin/change_list_bc.html b/xos/templates/admin/change_list_bc.html
index 8a6ba64..5e5e4c1 100644
--- a/xos/templates/admin/change_list_bc.html
+++ b/xos/templates/admin/change_list_bc.html
@@ -4,6 +4,7 @@
 
 {% if not is_popup %}
   {% block breadcrumbs %}
+    <!-- template: modify the breadcrumbs to support custom_app_breadcrumb -->
     <ul class="breadcrumb">
       <li><a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
         <span class="divider">&raquo;</span></li>
@@ -18,3 +19,22 @@
     </ul>
   {% endblock %}
 {% endif %}
+
+
+{% block object-tools %}
+    <!-- template: modify object-tools to support custom_add_url -->
+    {% if has_add_permission %}
+      <div class="object-tools">
+        {% block object-tools-items %}
+        {% if custom_add_url %}
+          <a href="{{ custom_add_url }}{% if is_popup %}?_popup=1{% endif %}" class="btn btn-success">
+        {% else %}
+          <a href="{% url cl.opts|admin_urlname:'add' %}{% if is_popup %}?_popup=1{% endif %}" class="btn btn-success">
+        {% endif %}
+            <i class="icon-plus-sign icon-white"></i>&nbsp;
+            {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
+          </a>
+        {% endblock %}
+      </div>
+    {% endif %}
+{% endblock %}
