more work on combinators