rotation is now optional argument