untested, looks alright though!, the service may need to spin up a thread