rework the news fetching function to make less db access and less loops