diff --git a/app/assets/javascripts/discourse/models/post.js b/app/assets/javascripts/discourse/models/post.js
index 60713d646..1baf757b5 100644
--- a/app/assets/javascripts/discourse/models/post.js
+++ b/app/assets/javascripts/discourse/models/post.js
@@ -25,6 +25,7 @@ Discourse.Post = Discourse.Model.extend({
   // Posts can show up as deleted if the topic is deleted
   deletedViaTopic: Em.computed.and('firstPost', 'topic.deleted_at'),
   deleted: Em.computed.or('deleted_at', 'deletedViaTopic'),
+  notDeleted: Em.computed.not('deleted'),
 
   postDeletedBy: function() {
     if (this.get('firstPost')) { return this.get('topic.deleted_by'); }
diff --git a/app/assets/javascripts/discourse/templates/post.js.handlebars b/app/assets/javascripts/discourse/templates/post.js.handlebars
index ddb7f55a3..089d83065 100644
--- a/app/assets/javascripts/discourse/templates/post.js.handlebars
+++ b/app/assets/javascripts/discourse/templates/post.js.handlebars
@@ -53,14 +53,7 @@
         {{view Discourse.PostMenuView postBinding="this" postViewBinding="view"}}
       </div>
       {{view Discourse.RepliesView contentBinding="replies" postViewBinding="view"}}
-      {{view Discourse.ActionsHistoryView contentBinding="actionsHistory"}}
-
-      {{#if deleted}}
-        <div class='post-actions'>
-          {{i18n post.deleted_by}} {{avatar postDeletedBy imageSize="tiny"}} {{unboundAge postDeletedAt}}
-        </div>
-      {{/if}}
-
+      {{view Discourse.ActionsHistoryView postBinding="this"}}
       {{view Discourse.TopicSummaryView postBinding="this"}}
     </div>
 
diff --git a/app/assets/javascripts/discourse/views/actions_history_view.js b/app/assets/javascripts/discourse/views/actions_history_view.js
index b27ef958c..f8afd09c2 100644
--- a/app/assets/javascripts/discourse/views/actions_history_view.js
+++ b/app/assets/javascripts/discourse/views/actions_history_view.js
@@ -10,51 +10,67 @@
 Discourse.ActionsHistoryView = Discourse.View.extend({
   tagName: 'section',
   classNameBindings: [':post-actions', 'hidden'],
-  hidden: Em.computed.empty('content'),
-  shouldRerender: Discourse.View.renderIfChanged('content.@each', 'content.users.length'),
+  content: Em.computed.alias('post.actionsHistory'),
+  noContent: Em.computed.empty('content'),
+  hidden: Em.computed.and('noContent', 'post.notDeleted'),
+  shouldRerender: Discourse.View.renderIfChanged('content.@each', 'content.users.length', 'post.deleted'),
 
   // This was creating way too many bound ifs and subviews in the handlebars version.
   render: function(buffer) {
-    if (!this.present('content')) return;
 
-    this.get('content').forEach(function(c) {
-      buffer.push("<div class='post-action'>");
+    var renderAvatar = function() {
 
-      var renderActionIf = function(property, dataAttribute, text) {
-        if (!c.get(property)) { return; }
-        buffer.push(" <a href='#' data-" + dataAttribute + "='" + c.get('id') + "'>" + text + "</a>.");
-      };
+    }
 
-      // TODO multi line expansion for flags
-      var iconsHtml = "";
-      if (c.get('usersExpanded')) {
-        var postUrl;
-        c.get('users').forEach(function(u) {
-          iconsHtml += "<a href=\"" + Discourse.getURL("/users/") + (u.get('username_lower')) + "\">";
-          if (u.post_url) {
-            postUrl = postUrl || u.post_url;
-          }
-          iconsHtml += Discourse.Utilities.avatarImg({
-            size: 'small',
-            username: u.get('username'),
-            avatarTemplate: u.get('avatar_template'),
-            title: u.get('username')
+    if (this.present('content')) {
+      this.get('content').forEach(function(c) {
+        buffer.push("<div class='post-action'>");
+
+        var renderActionIf = function(property, dataAttribute, text) {
+          if (!c.get(property)) { return; }
+          buffer.push(" <a href='#' data-" + dataAttribute + "='" + c.get('id') + "'>" + text + "</a>.");
+        };
+
+        // TODO multi line expansion for flags
+        var iconsHtml = "";
+        if (c.get('usersExpanded')) {
+          var postUrl;
+          c.get('users').forEach(function(u) {
+            iconsHtml += "<a href=\"" + Discourse.getURL("/users/") + (u.get('username_lower')) + "\">";
+            if (u.post_url) {
+              postUrl = postUrl || u.post_url;
+            }
+            iconsHtml += Discourse.Utilities.avatarImg({
+              size: 'small',
+              username: u.get('username'),
+              avatarTemplate: u.get('avatar_template'),
+              title: u.get('username')
+            });
+            iconsHtml += "</a>";
           });
-          iconsHtml += "</a>";
-        });
 
-        var key = 'post.actions.people.' + c.get('actionType.name_key');
-        if (postUrl) { key = key + "_with_url"; }
+          var key = 'post.actions.people.' + c.get('actionType.name_key');
+          if (postUrl) { key = key + "_with_url"; }
 
-        buffer.push(" " + I18n.t(key, { icons: iconsHtml, postUrl: postUrl}) + ".");
-      }
-      renderActionIf('usersCollapsed', 'who-acted', c.get('description'));
-      renderActionIf('canAlsoAction', 'act', I18n.t("post.actions.it_too." + c.get('actionType.name_key')));
-      renderActionIf('can_undo', 'undo', I18n.t("post.actions.undo." + c.get('actionType.name_key')));
-      renderActionIf('can_clear_flags', 'clear-flags', I18n.t("post.actions.clear_flags", { count: c.count }));
+          buffer.push(" " + I18n.t(key, { icons: iconsHtml, postUrl: postUrl}) + ".");
+        }
+        renderActionIf('usersCollapsed', 'who-acted', c.get('description'));
+        renderActionIf('canAlsoAction', 'act', I18n.t("post.actions.it_too." + c.get('actionType.name_key')));
+        renderActionIf('can_undo', 'undo', I18n.t("post.actions.undo." + c.get('actionType.name_key')));
+        renderActionIf('can_clear_flags', 'clear-flags', I18n.t("post.actions.clear_flags", { count: c.count }));
 
-      buffer.push("</div>");
-    });
+        buffer.push("</div>");
+      });
+    }
+
+    var post = this.get('post');
+    if (post.get('deleted')) {
+      buffer.push("<div class='post-action'>" +
+                  I18n.t("post.deleted_by") + " " +
+                  Discourse.Utilities.tinyAvatar(post.get('postDeletedBy.username')) +
+                  Discourse.Formatter.autoUpdatingRelativeAge(new Date(post.get('postDeletedAt'))) +
+                  "</div>");
+    }
   },
 
   actionTypeById: function(actionTypeId) {
@@ -77,12 +93,12 @@ Discourse.ActionsHistoryView = Discourse.View.extend({
     }
 
     if (actionTypeId = $target.data('act')) {
-      this.content.findProperty('id', actionTypeId).act();
+      this.get('content').findProperty('id', actionTypeId).act();
       return false;
     }
 
     if (actionTypeId = $target.data('undo')) {
-      this.content.findProperty('id', actionTypeId).undo();
+      this.get('content').findProperty('id', actionTypeId).undo();
       return false;
     }