why is key optional? it seems like if you wanted a method to get all servers, you'd have a separate API for that. maybe getKeyUris and getUris?