exercise 95% complete. Need to cache searches to avoid duplicate queries.