added scan combinator