Finished Search function. TODO: Catch empty search request vs Empty Results - Currenty they are both handled the same