clients can subscribe to mainloop events on their own independently from a plugin