Simple event-based publish-subscribe library