use noop stream if none provided