July retail sales up 2.9%