not using xrange