moved to server and caching API calls