used compose_all instead of the + hack