don't use xrange