diff --git a/app/assets/javascripts/discourse/controllers/discovery/categories.js.es6 b/app/assets/javascripts/discourse/controllers/discovery/categories.js.es6
index 0fff6219a..1e23c9154 100644
--- a/app/assets/javascripts/discourse/controllers/discovery/categories.js.es6
+++ b/app/assets/javascripts/discourse/controllers/discovery/categories.js.es6
@@ -8,7 +8,6 @@ export default DiscoveryController.extend({
 
   actions: {
     refresh: function() {
-      var self = this;
 
       // Don't refresh if we're still loading
       if (this.get('controllers.discovery.loading')) { return; }
@@ -17,7 +16,17 @@ export default DiscoveryController.extend({
       // router and ember throws an error due to missing `handlerInfos`.
       // Lesson learned: Don't call `loading` yourself.
       this.set('controllers.discovery.loading', true);
-      Discourse.CategoryList.list('categories').then(function(list) {
+
+      var parentCategory = this.get('model.parentCategory');
+      var promise;
+      if (parentCategory) {
+        promise = Discourse.CategoryList.listForParent(parentCategory);
+      } else {
+        promise = Discourse.CategoryList.list();
+      }
+
+      var self = this;
+      promise.then(function(list) {
         self.set('model', list);
         self.send('loadingComplete');
       });
diff --git a/app/assets/javascripts/discourse/models/category_list.js b/app/assets/javascripts/discourse/models/category_list.js
index ee8b08c15..bd1e1711f 100644
--- a/app/assets/javascripts/discourse/models/category_list.js
+++ b/app/assets/javascripts/discourse/models/category_list.js
@@ -1,11 +1,3 @@
-/**
-  A data model for containing a list of categories
-
-  @class CategoryList
-  @extends Discourse.Model
-  @namespace Discourse
-  @module Discourse
-**/
 Discourse.CategoryList = Ember.ArrayProxy.extend({
   init: function() {
     this.set('content', []);
@@ -50,7 +42,8 @@ Discourse.CategoryList.reopenClass({
     var self = this;
     return Discourse.ajax('/categories.json?parent_category_id=' + category.get('id')).then(function(result) {
       return Discourse.CategoryList.create({
-        categories: self.categoriesFrom(result)
+        categories: self.categoriesFrom(result),
+        parentCategory: category
       });
     });
   },
diff --git a/app/assets/javascripts/discourse/templates/discovery/categories.hbs b/app/assets/javascripts/discourse/templates/discovery/categories.hbs
index 691b4d047..c3055c93b 100644
--- a/app/assets/javascripts/discourse/templates/discovery/categories.hbs
+++ b/app/assets/javascripts/discourse/templates/discovery/categories.hbs
@@ -10,71 +10,71 @@
       </thead>
       <tbody>
         {{#each c in categories}}
-        <tr data-category_id='{{unbound c.id}}' {{bind-attr class="c.description_excerpt:has-description:no-description c.logo_url:has-logo:no-logo"}}>
-          <td class='category' style="border-color: #{{unbound c.color}}">
-            <div>
-              <div class="pull-left">
-                {{category-title-link category=c}}
-                {{#if c.unreadTopics}}
-                  <a href={{unbound c.unreadUrl}} class='badge new-posts badge-notification' title='{{i18n 'topic.unread_topics' count=c.unreadTopics}}'>{{i18n 'filters.unread.lower_title_with_count' count=c.unreadTopics}}</a>
-                {{/if}}
-                {{#if c.newTopics}}
-                  <a href={{unbound c.newUrl}} class='badge new-posts badge-notification' title='{{i18n 'topic.new_topics' count=c.newTopics}}'>{{i18n 'filters.new.lower_title_with_count' count=c.newTopics}}</a>
-                {{/if}}
-              </div>
-              <div class="clearfix"></div>
-            </div>
-            {{#if c.description_excerpt}}
-              <div class="category-description">
-                {{{c.description_excerpt}}}
-              </div>
-            {{/if}}
-            {{#if c.subcategories}}
-              <div class='subcategories'>
-                {{#each s in c.subcategories}}
-                  {{category-link s showParent="true" onlyStripe="true"}}
-                  {{#if s.unreadTopics}}
-                    <a href={{unbound s.unreadUrl}} class='badge new-posts badge-notification' title='{{i18n 'topic.unread_topics' count=s.unreadTopics}}'>{{unbound s.unreadTopics}}</a>
+          <tr data-category_id='{{unbound c.id}}' {{bind-attr class="c.description_excerpt:has-description:no-description c.logo_url:has-logo:no-logo"}}>
+            <td class='category' style="border-color: #{{unbound c.color}}">
+              <div>
+                <div class="pull-left">
+                  {{category-title-link category=c}}
+                  {{#if c.unreadTopics}}
+                    <a href={{unbound c.unreadUrl}} class='badge new-posts badge-notification' title='{{i18n 'topic.unread_topics' count=c.unreadTopics}}'>{{i18n 'filters.unread.lower_title_with_count' count=c.unreadTopics}}</a>
                   {{/if}}
-                  {{#if s.newTopics}}
-                    <a href={{unbound s.newUrl}} class='badge new-posts badge-notification' title='{{i18n 'topic.new_topics' count=s.newTopics}}'>{{unbound s.newTopics}}</a>
+                  {{#if c.newTopics}}
+                    <a href={{unbound c.newUrl}} class='badge new-posts badge-notification' title='{{i18n 'topic.new_topics' count=c.newTopics}}'>{{i18n 'filters.new.lower_title_with_count' count=c.newTopics}}</a>
                   {{/if}}
-                {{/each}}
+                </div>
+                <div class="clearfix"></div>
               </div>
-            {{/if}}
-          </td>
-          <td {{bind-attr class="c.archived :latest"}}>
-            {{#each f in c.featuredTopics}}
-              <div class="featured-topic">
-                {{topic-status topic=f}}
-                <a class='title' href="{{unbound f.lastUnreadUrl}}">{{{unbound f.fancy_title}}}</a>
-                {{topic-post-badges newPosts=f.totalUnread unseen=f.unseen url=f.lastUnreadUrl}}
+              {{#if c.description_excerpt}}
+                <div class="category-description">
+                  {{{c.description_excerpt}}}
+                </div>
+              {{/if}}
+              {{#if c.subcategories}}
+                <div class='subcategories'>
+                  {{#each s in c.subcategories}}
+                    {{category-link s showParent="true" onlyStripe="true"}}
+                    {{#if s.unreadTopics}}
+                      <a href={{unbound s.unreadUrl}} class='badge new-posts badge-notification' title='{{i18n 'topic.unread_topics' count=s.unreadTopics}}'>{{unbound s.unreadTopics}}</a>
+                    {{/if}}
+                    {{#if s.newTopics}}
+                      <a href={{unbound s.newUrl}} class='badge new-posts badge-notification' title='{{i18n 'topic.new_topics' count=s.newTopics}}'>{{unbound s.newTopics}}</a>
+                    {{/if}}
+                  {{/each}}
+                </div>
+              {{/if}}
+            </td>
+            <td {{bind-attr class="c.archived :latest"}}>
+              {{#each f in c.featuredTopics}}
+                <div class="featured-topic">
+                  {{topic-status topic=f}}
+                  <a class='title' href="{{unbound f.lastUnreadUrl}}">{{{unbound f.fancy_title}}}</a>
+                  {{topic-post-badges newPosts=f.totalUnread unseen=f.unseen url=f.lastUnreadUrl}}
 
-                {{#if controller.latestTopicOnly}}
-                  <div class='last-user-info'>
-                    {{i18n 'categories.latest_by'}} <a href="{{{unbound f.lastPosterUrl}}}">{{unbound f.last_poster.username}}</a>
-                    <a href="{{unbound f.lastPostUrl}}">{{format-age f.last_posted_at}}</a>
-                  </div>
-                {{else}}
-                  &nbsp;
-                  <a href="{{unbound f.lastPostUrl}}" class="last-posted-at">{{format-age f.last_posted_at}}</a>
-                {{/if}}
-              </div>
-            {{/each}}
-          </td>
-          <td class='stats' {{bind-attr title="c.topicStatsTitle"}}>
-            <table class="categoryStats">
-              <tbody>
-              {{#each s in c.topicCountStats}}
-                <tr>
-                  <td class="value">{{s.value}}</td>
-                  <td class="unit"> / {{s.unit}}</td>
-                </tr>
+                  {{#if controller.latestTopicOnly}}
+                    <div class='last-user-info'>
+                      {{i18n 'categories.latest_by'}} <a href="{{{unbound f.lastPosterUrl}}}">{{unbound f.last_poster.username}}</a>
+                      <a href="{{unbound f.lastPostUrl}}">{{format-age f.last_posted_at}}</a>
+                    </div>
+                  {{else}}
+                    &nbsp;
+                    <a href="{{unbound f.lastPostUrl}}" class="last-posted-at">{{format-age f.last_posted_at}}</a>
+                  {{/if}}
+                </div>
               {{/each}}
-              </tbody>
-            </table>
-          </td>
-        </tr>
+            </td>
+            <td class='stats' {{bind-attr title="c.topicStatsTitle"}}>
+              <table class="categoryStats">
+                <tbody>
+                {{#each s in c.topicCountStats}}
+                  <tr>
+                    <td class="value">{{s.value}}</td>
+                    <td class="unit"> / {{s.unit}}</td>
+                  </tr>
+                {{/each}}
+                </tbody>
+              </table>
+            </td>
+          </tr>
         {{/each}}
       </tbody>
     </table>
diff --git a/app/assets/javascripts/discourse/templates/discovery/topics.hbs b/app/assets/javascripts/discourse/templates/discovery/topics.hbs
index b5417dfde..9731eb00f 100644
--- a/app/assets/javascripts/discourse/templates/discovery/topics.hbs
+++ b/app/assets/javascripts/discourse/templates/discovery/topics.hbs
@@ -16,7 +16,7 @@
 
 {{#if selected}}
   <div id='bulk-select'>
-    <button class='btn no-text' {{action "showBulkActions"}}><i class="fa fa-wrench"></i></button>
+    {{d-button action="showBulkActions" icon="wrench" class="no-text"}}
   </div>
 {{/if}}