generalizing combinator stream sources