diff --git a/app/controllers/v1/feed_controller.rb b/app/controllers/v1/feed_controller.rb
index 98892dbb38a345b005d38689b62bf4651b4250bb..e33e03b62ddeba8b4211a90be0c61a22357e4b85 100644
--- a/app/controllers/v1/feed_controller.rb
+++ b/app/controllers/v1/feed_controller.rb
@@ -33,24 +33,22 @@ class V1::FeedController < ApplicationController
   private
 
   def activities_followed
-    query = ""
+    query = "privacy = 'public' and ("
     values = [""]
 
     # builds a query string to find all relevant activities
     current_user.watching.each do |watching|
-        if !watching.respond_to?(:state) || watching.state == "published"
-          # Activities that are made by, owned by, or change the object you follow should be found
-          query += " (trackable_type = ? and trackable_id = ?) or (owner_type = ? and owner_id = ?) or (recipient_type = ? and recipient_id = ?) or"
-          values << watching.class.to_s
-          values << watching.id
-          values << watching.class.to_s
-          values << watching.id
+      if !watching.respond_to?(:state) || watching.state == "published"
+        # Activities that are made by, owned by, or change the object you follow should be found
+        query += " (trackable_type = ? and trackable_id = ?) or (owner_type = ? and owner_id = ?) or (recipient_type = ? and recipient_id = ?) or"
+        3.times do
           values << watching.class.to_s
           values << watching.id
         end
+      end
     end
 
-    values[0] = query[0..-3] # remove trailing "or" on the query
+    values[0] = query[0..-3]+")" # remove trailing "or" on the query
     return PublicActivity::Activity.where(key: activities_filter).where(values).order(created_at: :desc)
   end
 
diff --git a/app/models/concerns/trackable.rb b/app/models/concerns/trackable.rb
index 44289aee76f8b232ca12bd9869e4ffa3d8a9ae7a..346e46a7e3973a4519deb96fa8478af8af151bed 100644
--- a/app/models/concerns/trackable.rb
+++ b/app/models/concerns/trackable.rb
@@ -69,6 +69,7 @@ module Trackable
   end
 
   def activity_privacy
-    proc { |_controller, model| model.try(:privacy) || 'public' }
+    proc { |_controller, model| model.try(:privacy) || model.try(:recipient).try(:privacy) || 'public' }
   end
+
 end
diff --git a/app/policies/activity_policy.rb b/app/policies/activity_policy.rb
index 8d98a493fbc40a7072d9bf09132ee9f7b35d18f7..2d1b16d69fb23d79aba973baff1b2f5db799b38c 100644
--- a/app/policies/activity_policy.rb
+++ b/app/policies/activity_policy.rb
@@ -31,7 +31,7 @@ class ActivityPolicy < ApplicationPolicy
       if user_can_edit?
         scope.includes(:owner,:recipient).order('created_at DESC').all
       else
-        scope.includes(:owner,:recipient).where("privacy = 'public'").where(key: activities_filter).order('created_at DESC').all
+        scope.includes(:owner,:recipient).where(privacy: 'public').where(key: activities_filter).order('created_at DESC').all
       end
     end