make predicates infer their types right, they can be composed now