Simple pub/sub implementation