is String(i) necessary? JS coerces all object keys to strings.