add cache, move API key to separate file