make combinators composable