BREAKING refactor to be a stream