defaults didn't work quite right - added parameter shifting