diff --git a/lib/diaspora/federated/relayable_retraction.rb b/lib/diaspora/federated/relayable_retraction.rb
index ab7be6528b023a8859b843ce22c4139f12c48d00..3d48f676322c65203ef2b5fa04d7ba1ef40f72f4 100644
--- a/lib/diaspora/federated/relayable_retraction.rb
+++ b/lib/diaspora/federated/relayable_retraction.rb
@@ -60,4 +60,8 @@ class RelayableRetraction < SignedRetraction
   def parent_author_signature_valid?
     verify_signature(self.parent_author_signature, self.parent.author)
   end
+
+  def parent_diaspora_handle
+    target.author.diaspora_handle
+  end
 end
diff --git a/lib/postzord/receiver/public.rb b/lib/postzord/receiver/public.rb
index 0243b72f526208c08160af078613186af9270900..d3f27be77900b0d2f1c8e436550d7fa4c1c1390e 100644
--- a/lib/postzord/receiver/public.rb
+++ b/lib/postzord/receiver/public.rb
@@ -26,15 +26,15 @@ class Postzord::Receiver::Public < Postzord::Receiver
     return false unless save_object
 
     FEDERATION_LOGGER.info("received a #{@object.inspect}")
-    if @object.respond_to?(:relayable?)
-      receive_relayable
-    elsif @object.is_a?(AccountDeletion)
-      #nothing
-    elsif @object.is_a?(SignedRetraction) # feels like a hack
+    if @object.is_a?(SignedRetraction) # feels like a hack
       self.recipient_user_ids.each do |user_id|
         user = User.where(id: user_id).first
         @object.perform user if user
       end
+    elsif @object.respond_to?(:relayable?)
+      receive_relayable
+    elsif @object.is_a?(AccountDeletion)
+      #nothing
     else
       Workers::ReceiveLocalBatch.perform_async(@object.class.to_s, @object.id, self.recipient_user_ids)
       true
diff --git a/spec/lib/diaspora/federated/relayable_retraction_spec.rb b/spec/lib/diaspora/federated/relayable_retraction_spec.rb
index baf88a6eb56ec3d86a7485e06f7a3a7c95c64bd6..6e8635a24819f0329b87a85067226e8f4e1546ad 100644
--- a/spec/lib/diaspora/federated/relayable_retraction_spec.rb
+++ b/spec/lib/diaspora/federated/relayable_retraction_spec.rb
@@ -98,6 +98,13 @@ describe RelayableRetraction do
         expect(Postzord::Dispatcher).not_to receive(:build)
         @retraction.receive(@recipient, @remote_raphael)
       end
+
+      it 'performs through postzord' do
+        xml = Salmon::Slap.create_by_user_and_activity(@local_luke, @retraction.to_diaspora_xml).xml_for(nil)
+        expect {
+          Postzord::Receiver::Public.new(xml).perform!
+        }.to change(Comment, :count).by(-1)
+      end
     end
   end