Broke performSearch function into three separate functions to divide the work and have each function focusing on a single task. The original reason for this separation was to have a dedicated for infinite scrolling and one for the search. Added helper functions to Search service as well. Note: still needs more testing and improvements