MAJOR UPDATE: reworked structure to support multiple concurrent requests