keyPosition is optional