add rate limiting and support for multiple api keys