It would be better have an explicit gen_server instead of an agent, since we are integrating it in a supervisor tree, shutting the worker down, starting it over again, etc