all work to make functional composition work