#3 allow empty stream