updated combinator