implement rate limiting, change the request API, use semver(ish?)