use Q.spread instead of a closure-wrapper fn