Compositional event streams