use (apply + ...) instead of reduce