func key positions start at 1, not 0