more streamy, less eventemittery