step should default to x*y