the proper composition function is now selected through predicates