added a loading spinner, and some edge cases, like 0 results