public CallStruct call(Key key) throws Exception{
			timeCalled = System.currentTimeMillis();
			InputStream is;
			URL temp = new URL(url.concat(key.use()));
			try{
				is = temp.openStream();
			}
			catch(Exception e){
				if(e instanceof UnknownHostException)
					throw new Exception("Problem connecting to host - please check your internet connection");
				if(e instanceof FileNotFoundException)
					throw new Exception("404 error: " + e.getMessage());
				if(e.getMessage().contains("429")){
					if(silent) silentWaitForCall(key);
					else waitForCall(key);
				}
				else if(e.getMessage().contains("401"))
					synchronized(key.WAIT_LOCK){
						key.WAIT_LOCK.wait(1000);
					}
				this.call(key);
				return this;
			}
			Scanner s = new Scanner(is).useDelimiter("\\A");
			json = s.hasNext() ? s.next() : "";
			is.close();
			return this;
		}