Iowa’s first measles case of 2026 reflects a changing reality for doctors, health officials
RAINFALL STILL LEFT TONIGHT, AND WE’LL GET YOU TO THE WEEKEND COMING UP. THANK YOU. ZANE. IOWA’S FIRST MEASLES CASE OF THE YEAR HAS HEALTH OFFICIALS URGING PEOPLE TO STAY VIGILANT. THE POLK COUNTY ADULT WAS VACCINATED AND HAD RECENTLY TRAVELED OUT OF THE COUNTRY. KCCI S AURORA TALKED WITH THE HEALTH DEPARTMENT ABOUT THIS CASE. HEALTH OFFICIALS SAY CASES LIKE THIS ARE BECOMING MORE COMMON. THEY ARE BENTON STACEY, IOWA SAW NINE CASES LAST YEAR AND ONE OF THEM WAS IN POLK COUNTY. IT WAS THE FIRST FOR THE AREA IN YEARS. BUT ACROSS THE COUNTRY, CASES ARE GROWING. SO HEALTH OFFICIALS SAY WHILE IT IS STILL RARE, IT’S LESS SURPRISING TO SEE. WE’RE PREPARED FOR THIS TO BE A PART OF OUR LIVES FOR THE LONG HAUL. NOW, UNFORTUNATELY, ALTHOUGH IOWA’S HAD LOWER CASES THIS YEAR, IT IS STILL BECOMING ENDEMIC THROUGHOUT THE NATION. WE ARE STILL SEEING POCKETS OF THIS CIRCULATING IN A NUMBER OF STATES, AND WE DON’T ANTICIPATE THAT GOING AWAY ANYTIME SOON. LAST YEAR WAS THE NATION’S WORST FOR MEASLES IN DECADES, WITH MORE THAN 2200 REPORTED CASES. THIS YEAR IS ALREADY APPROACHING THAT TOTAL, AND HEALTH OFFICIALS SAY SUMMER TRAVEL COULD PUSH THE NUMBERS EVEN HIGHER. IN SUMMER, THEY TEND TO TRAVEL QUITE A BIT, YOU KNOW, AND THAT IS TYPICALLY THE TIME WHEN WE DO SEE SPORADIC CASES FROM PEOPLE WHO TRAVEL ABROAD AND BRING IT BACK IN. THAT’S HOW POLK COUNTY HEALTH OFFICIALS BELIEVE. IOWA’S FIRST CASE THIS YEAR WAS CONTRACTED. BUT AS MEASLES BECOME MORE COMMON NATIONWIDE, SOME HOSPITALS ARE CHANGING HOW THEY RESPOND. WELL, UNITYPOINT, WE HAVE A NOTIFICATION SET UP ON OUR MEDICAL RECORD SYSTEM WHERE IF YOU COME IN WITH A FEVER, COUGH, COLD AND A RASH, WE HAVE A HIGH DEGREE OF SUSPICION FOR MEASLES, AND WE TAKE PRECAUTIONS OURSELVES AND OUR STAFF WHEN WE SEE YOU, JUST TO MAKE SURE WE DON’T EXPOSE OURSELVES AND THEREFORE DON’T EXPOSE OTHER PATIENTS. HEALTH OFFICIALS SAY PREVENTING THE NEXT CASE STARTS LONG BEFORE SOMEONE WALKS INTO A HOSPITAL. IN POLK COUNTY, THE NUMBER OF SCHOOL CHILDREN NOT FULLY VACCINATED HAS GROWN SINCE 2020. POLK COUNTY HEALTH SAYS LESS THAN 95% OF ELIGIBLE PEOPLE HAVE THE MMR SHOT, SO THE COMMUNITY IS VULNERABLE TO THE DISEASE SPREADING. WE REALLY NEED THAT HERD IMMUNITY TO BE CLOSER TO 95% VACCINATION RATE. SO JUST BY NATURE OF THAT GOING DOWN HERE AND KIDS RESUMING SCHOOL AGAIN, AS WAS MENTIONED IN A MONTH OR TWO, THAT WILL LIKELY CONTINUE TO REAR ITS HEAD AGAIN, AND THE PERSON WHO WAS DIAGNOSED IS NOW RECOVERING AT HOME. HEALTH OFFICIALS SAY IT’S UNCOMMON THAT SOMEBODY WHO HAS BEEN VACCINATED TO CONTRACT THE DISEASE, BUT THEY EXPECT THAT VACCINATION WILL HELP TO REDUCE THE RISK OF ANY FURTHER SPREAD. BENTON STACEY. ALL RIGHT. WELL, THAT’S GOOD NEWS. THANK YOU. THE POLK COUNTY HEALTH DEPARTMENT SAYS THAT PERSON VISITED MULTIPLE PLACES AROUND CENTRAL IOWA BEFORE REALIZING THEY WERE SICK. A LIST OF THE LOCATIONS. A SCROLLING ON YOUR SCREEN. IT’S ALSO AVAILABLE ON OUR WEBSITE. THE HEALTH DEPARTMENT IS ASKING ANYONE WHO IS AT ANY OF THESE LOCATIONS AT THE CORRESPONDING DAYS AND TIMES LISTED BETWEEN JULY 1ST FOR THE FIFTH. FILL OUT A SHORT SURVEY THAT WILL HELP TRACK
Updated: 10:25 PM CDT Jul 8, 2026
Editorial Standards ⓘ
Iowa’s first measles case of 2026 reflects a changing reality for doctors, health officials
Updated: 10:25 PM CDT Jul 8, 2026
Editorial Standards ⓘ
When Iowa confirmed its first measles case of 2026 this week, public health officials saw more than an isolated case linked to international travel. They saw evidence of a trend that’s forcing doctors and health departments to prepare for measles as a recurring threat.The infected person, a vaccinated adult who contracted measles during international travel, is recovering at home. The case comes as measles continues to surge nationwide after the United States experienced its worst year for the disease in decades.”We’re prepared for this to be a part of our lives for the long haul now, unfortunately,” Polk County Health Director Juliann Van Liew said. “Although Iowa’s had lower cases this year, it is still becoming endemic throughout the nation. We are still seeing pockets of this circulating in a number of states, and we don’t anticipate that going away anytime soon.”A disease doctors rarely saw is becoming part of routine planningFor years, measles was something many physicians rarely encountered.Now, some hospitals are adjusting how they care for patients with symptoms that could indicate the highly contagious virus.At UnityPoint Health, infectious disease physician Dr. Dhruv Patel said the hospital system has added electronic alerts to help clinicians quickly identify possible measles cases.”We have notifications set up on our medical record system where if you come in with a fever, cough, cold and a rash, we have a high degree of suspicion for measles,” Patel said. “We take precautions ourselves and our staff when we see you, just to make sure we don’t expose ourselves and therefore don’t expose other patients.”Those extra precautions reflect how easily measles spreads. Patel says the virus can remain in the air for up to two hours after an infected person leaves a room, making rapid identification critical.Summer travel can bring measles homeThe Polk County patient contracted measles while traveling internationally, a pattern Patel said often becomes more common during the summer months.”In summer, people tend to travel quite a bit,” Patel said. “That is typically the time where we do see sporadic cases from people who travel abroad and bring it back in.”Health officials say that’s why they encourage travelers to make sure they’re up to date on their MMR vaccination before leaving the country.Although vaccinated people can still contract measles, they’re more likely to experience milder illness and are less likely to spread the virus.A national trend with local implicationsAccording to Iowa HHS, the United States reported 2,289 confirmed measles cases in 2025, resulting in 243 hospitalizations and three deaths.As of July 2, a total of 2,170 confirmed cases had already been reported nationwide in 2026. Iowa recorded nine measles cases in 2025, including one in Polk County, after several years with few reported infections. Vaccination rates remain below the level health officials want to seeWhile this week’s case was linked to international travel, Polk County health leaders say local vaccination rates leave the community more susceptible.Van Liew said the county has not reached the 95% vaccination rate generally considered necessary to achieve herd immunity.”We really need that herd immunity to be closer to 95% vaccination rates,” she said. “So just by nature of that going down here, and kids resuming school again in a month or two, that will likely continue to rear its head again.”The county’s 2024 School Immunization Audit shows the number of students who were not fully vaccinated has more than doubled since 2020, increasing from 2,682 students to 5,516. What happens nextHealth officials continue to monitor anyone who may have been exposed after the infected person visited multiple public locations across central Iowa between July 1 and July 5.Anyone who was at one of those locations during the listed times is encouraged to complete the Polk County Health Department’s online exposure survey, even if they have no symptoms.Officials say the survey allows public health workers to provide recommendations based on a person’s age, vaccination status and other risk factors, since measles symptoms can take up to 21 days to develop after exposure.
DES MOINES, Iowa —
When Iowa confirmed its first measles case of 2026 this week, public health officials saw more than an isolated case linked to international travel. They saw evidence of a trend that’s forcing doctors and health departments to prepare for measles as a recurring threat
The infected person, a vaccinated adult who contracted measles during international travel, is recovering at home. The case comes as measles continues to surge nationwide after the United States experienced its worst year for the disease in decades
“We’re prepared for this to be a part of our lives for the long haul now, unfortunately,” Polk County Health Director Juliann Van Liew said. “Although Iowa’s had lower cases this year, it is still becoming endemic throughout the nation. We are still seeing pockets of this circulating in a number of states, and we don’t anticipate that going away anytime soon.”
A disease doctors rarely saw is becoming part of routine planning
For years, measles was something many physicians rarely encountered
Now, some hospitals are adjusting how they care for patients with symptoms that could indicate the highly contagious virus
At UnityPoint Health, infectious disease physician Dr. Dhruv Patel said the hospital system has added electronic alerts to help clinicians quickly identify possible measles cases
“We have notifications set up on our medical record system where if you come in with a fever, cough, cold and a rash, we have a high degree of suspicion for measles,” Patel said. “We take precautions ourselves and our staff when we see you, just to make sure we don’t expose ourselves and therefore don’t expose other patients.”
Those extra precautions reflect how easily measles spreads. Patel says the virus can remain in the air for up to two hours after an infected person leaves a room, making rapid identification critical
Summer travel can bring measles home
The Polk County patient contracted measles while traveling internationally, a pattern Patel said often becomes more common during the summer months
“In summer, people tend to travel quite a bit,” Patel said. “That is typically the time where we do see sporadic cases from people who travel abroad and bring it back in.”
Health officials say that’s why they encourage travelers to make sure they’re up to date on their MMR vaccination before leaving the country
Although vaccinated people can still contract measles, they’re more likely to experience milder illness and are less likely to spread the virus
A national trend with local implications
According to Iowa HHS, the United States reported 2,289 confirmed measles cases in 2025, resulting in 243 hospitalizations and three deaths
As of July 2, a total of 2,170 confirmed cases had already been reported nationwide in 2026. Iowa recorded nine measles cases in 2025, including one in Polk County, after several years with few reported infections
Vaccination rates remain below the level health officials want to see
While this week’s case was linked to international travel, Polk County health leaders say local vaccination rates leave the community more susceptible
Van Liew said the county has not reached the 95% vaccination rate generally considered necessary to achieve herd immunity
“We really need that herd immunity to be closer to 95% vaccination rates,” she said. “So just by nature of that going down here, and kids resuming school again in a month or two, that will likely continue to rear its head again.”
The county’s 2024 School Immunization Audit shows the number of students who were not fully vaccinated has more than doubled since 2020, increasing from 2,682 students to 5,516
What happens next
Health officials continue to monitor anyone who may have been exposed after the infected person visited multiple public locations across central Iowa between July 1 and July 5
Anyone who was at one of those locations during the listed times is encouraged to complete the Polk County Health Department’s online exposure survey, even if they have no symptoms
Officials say the survey allows public health workers to provide recommendations based on a person’s age, vaccination status and other risk factors, since measles symptoms can take up to 21 days to develop after exposure
Weather Information
‘
+ ‘
‘;
var gptLayer = window.gptLayer;
if (gptLayer && typeof gptLayer.insertAds === ‘function’) {
var slotsBefore = gptLayer.adSlots ? gptLayer.adSlots.length : 0;
gptLayer.insertAds();
if ((gptLayer.adSlots ? gptLayer.adSlots.length : 0) > slotsBefore) {
if (typeof gptLayer.callAdSlots === ‘function’) {
gptLayer.callAdSlots(‘imm’);
}
}
}
}
}
function closeRadarOverlay(containerId) {
var overlay = document.getElementById(containerId + ‘-radar-overlay’);
if (!overlay) return;
overlay.classList.remove(‘is-open’);
overlay.setAttribute(‘aria-hidden’, ‘true’);
document.body.classList.remove(‘weather-radar-overlay-active’);
var adSlot = overlay.querySelector(‘.weather-radar-overlay__ad-slot’);
if (adSlot) {
adSlot.innerHTML = ”;
}
}
function trackRadarOverlayInteraction(containerId) {
var now = Date.now();
var key = ‘radar_overlay_last_interaction_’ + containerId;
if (!window[key] || now – window[key] > 10000) {
window[key] = now;
dispatchWeatherGA4Event(‘radar_overlayinteraction’, ‘interaction’, containerId);
}
}
function isMobileOrTabletViewport(breakpoint = 980) {
const w = window.innerWidth || document.documentElement.clientWidth || 0;
return w < breakpoint;
}
function removeUnusedWeatherModule() {
const desktopClass = ‘sidelist-weather’;
const mobileClass = ‘mobile-weather’;
if (isMobileOrTabletViewport()) {
console.log(‘[WEATHER-BOX] Mobile/tablet viewport detected, removing desktop weather module if it exists’);
const desktopModule = document.querySelector(‘.’ + desktopClass);
if (desktopModule) {
console.log(‘[WEATHER-BOX] Removing desktop weather module’);
desktopModule.remove();
}
} else {
console.log(‘[WEATHER-BOX] Desktop viewport detected, removing mobile weather module if it exists’);
const mobileModule = document.querySelector(‘.’ + mobileClass);
if (mobileModule) {
console.log(‘[WEATHER-BOX] Removing mobile weather module’);
mobileModule.remove();
}
}
}
document.addEventListener(‘DOMContentLoaded’, function() {
removeUnusedWeatherModule();
function generateForecastItem(data) {
var ariaLabel = data.timeLabel + ‘, ‘ + data.primaryTemp + ‘ degrees, ‘ +
data.secondaryInfo + ‘ percent chance of precipitation’;
return `
`;
}
function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=’ + Date.now();
}
}
function initializeWeatherBox(container) {
var containerId = container.getAttribute(‘data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;
function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});
clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);
container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});
var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}
function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}
var location = { zip: window.DEFAULT_ZIPCODE };
try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}
var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;
if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}
function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;
var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);
if (weatherData.alerts_count > 0) {
weatherWatchHeader.className = ‘weather-watch-header has-alerts’;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, ‘/alerts’);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, ‘/alerts’);”);
}
} else {
weatherWatchHeader.className = ‘weather-watch-header’;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}
function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;
var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}
var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className = ‘weather-grid–current-icon weather-current-icon icon icon-weather-‘ + weatherData.current.icon_name;
}
var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}
var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}
var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}
updateWeatherBackground(weatherData.current.icon_name);
}
}
function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage = ‘url(‘ + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}
function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;
if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html = ”;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);
for (var i = 0; i < maxHours; i++) {
var hour = weatherData.hourly[i];
html += generateForecastItem({
timeLabel: hour.hour_display,
iconName: hour.icon_name,
primaryTemp: hour.temp_f,
secondaryInfo: hour.precip_chance + ‘%’
});
}
hourlyContainer.innerHTML = html;
}
}
if (weatherData.daily) {
var dailyContainer = container.querySelector(‘.weather-daily-forecast’);
if (dailyContainer) {
var html = ”;
var maxDays = Math.min(visibleItems, weatherData.daily.length);
for (var i = 0; i < maxDays; i++) {
var day = weatherData.daily[i];
var dayName = getShortDayName(day.day);
html += generateForecastItem({
timeLabel: dayName,
iconName: day.icon_name,
primaryTemp: day.high_f,
secondaryInfo: day.precip_chance + ‘%’
});
}
dailyContainer.innerHTML = html;
}
}
}
function getShortDayName(dayName) {
switch (dayName) {
case ‘Today’:
return ‘Today’;
case ‘Tomorrow’:
return ‘Tmrw’;
case ‘Sunday’:
return ‘Sun’;
case ‘Monday’:
return ‘Mon’;
case ‘Tuesday’:
return ‘Tue’;
case ‘Wednesday’:
return ‘Wed’;
case ‘Thursday’:
return ‘Thu’;
case ‘Friday’:
return ‘Fri’;
case ‘Saturday’:
return ‘Sat’;
default:
return dayName;
}
}
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
var isActive = tab.classList.contains(‘open’);
tab.setAttribute(‘tabindex’, ‘0’); // Both tabs focusable for VoiceOver
tab.setAttribute(‘role’, ‘tab’);
tab.setAttribute(‘aria-selected’, isActive);
tab.addEventListener(‘keydown’, function(e) {
var tabs = Array.from(container.querySelectorAll(‘[data-tab-id]’));
var currentIndex = tabs.indexOf(this);
switch(e.key) {
case ‘ArrowLeft’:
e.preventDefault();
var prevIndex = currentIndex > 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex < tabs.length – 1 ? currentIndex + 1 : 0;
tabs[nextIndex].focus();
break;
case ‘Enter’:
case ‘ ‘:
e.preventDefault();
var tabId = this.getAttribute(‘data-tab-id’);
switchWeatherTab(tabId, this);
if (tabId === ‘hourly’) {
dispatchWeatherGA4Event(‘click_hourly’, ‘click’, containerId);
} else if (tabId === ‘daily’) {
dispatchWeatherGA4Event(‘click_daily’, ‘click’, containerId);
}
break;
}
});
tab.onclick = function() {
var tabId = this.getAttribute(‘data-tab-id’);
switchWeatherTab(tabId, this);
if (tabId === ‘hourly’) {
dispatchWeatherGA4Event(‘click_hourly’, ‘click’, containerId);
} else if (tabId === ‘daily’) {
dispatchWeatherGA4Event(‘click_daily’, ‘click’, containerId);
}
return false;
};
});
loadWeatherData();
window.addEventListener(‘pageshow’, function(event) {
if (event.persisted) {
// Fix for weather radar iframe appearing gray after browser back/forward navigation
// When user navigates back, the page loads from browser cache but the iframe
// content doesn’t restore properly, showing a gray screen instead of the radar map
// This forces a fresh reload of the iframe by adding a timestamp parameter
setTimeout(function() {
refreshWeatherIframe(containerId);
}, 300);
}
});
}
document.querySelectorAll(‘.weather-sidebar’).forEach(function(weatherBox) {
initializeWeatherBox(weatherBox);
});
});
![]()

Make KCCI a preferred source on Google


