add Return; refactor combinators