adding remaining API calls and implementing caching and cache timeout where necessary