re-implement with public_activity.