Rather than exposing state we could maybe leverage the `AbstractService` listener mechanism provided by Guava and add our events.