(reduce) (rd)

functions used with higher order functions should not create garbage
use (push) not (ps)
maybe can fix this