Blank Park Zoo joins effort to save Florida coral reef from deadly disease
KCCI DISCOVERED A DISEASE OFF THE COAST OF MIAMI THAT WAS KILLING CORAL REALLY RAPIDLY. IT’S CALLED STONY CORAL TISSUE LOSS DISEASE. AND THAT DISEASE IS ATTACKING THE LARGEST CORAL REEF IN THE UNITED STATES. YOU CAN SEE IT HERE. IT STRETCHES MORE THAN 300 MILES FROM MARTIN COUNTY ALL THE WAY TO DRY TORTUGAS NATIONAL PARK. IT IS ESTIMATED THAT TENS OF MILLIONS OF STONY CORAL COLONIES HAVE BEEN KILLED. TONIGHT, I TAKE YOU BEHIND THE SCENES TO SHOW YOU THE SALT ROOM WHERE THE BLANK PARK ZOO IS WORKING TO SAVE THE FLORIDA CORAL REEF. SO THE MAGIC HAPPENS BEHIND THIS DOOR? ABSOLUTELY. COME ON IN. OKAY. AND TELL US WHAT WE’RE SEEING HERE. SO THIS IS OUR FLORIDA REEF TRACT RESCUE PROJECT SYSTEM. A MAN MADE LIFE SUPPORT SYSTEM, A BIO SECURE SYSTEM TRYING TO KEEP THINGS CLEAN BECAUSE IT’S ALL DESTINED TO GO RESTORE THE CORAL REEF. INSIDE EACH OF THESE VERY LARGE TOTES, HUNDREDS OF GALLONS OF SALT WATER AND CORAL RESCUED FROM THE FLORIDA COAST, BATHED IN BLUE LIGHT TO APPROXIMATE HOW THE CORAL EXPERIENCED SUNLIGHT UNDERWATER. WE GOT ABOUT TEN DIFFERENT SPECIES IN HERE AND ABOUT 60 CORAL COLONIES. THIS IS VERY SPECIAL CORAL. THESE ARE DIFFERENT BECAUSE THEY’RE CORAL SPECIES THAT HAD NEVER BEEN KEPT IN AN AQUARIUM OR IN A FACILITY LIKE THIS BEFORE. AND THAT CREATED A SPECIAL CHALLENGE FOR CORAL BIOLOGIST COLIN BURR OAK. SO THE FIRST STEP WAS FIGURING OUT HOW TO KEEP THEM ALIVE AND HOW TO TAKE CARE OF THEM. THE PROJECT DEMANDS A STEEP LEARNING CURVE. I’VE LEARNED, LIKE THE RIGHT PATTERN OF FEEDING. I’M GETTING TO KNOW THESE DIFFERENT SPECIES OF CORAL. THEY HAVE LEARNED A LOT SINCE BLANK PARK ZOO JOINED THE EFFORT IN 2019, BUT THE TEAM SAYS THERE IS SO MUCH THAT IS STILL NOT KNOWN. PART OF THE PROCESS OVER THE LAST COUPLE YEARS IS, YOU KNOW, HOW DO WE IDENTIFY WHAT NORMAL IS TO HELP DETERMINE WHAT IS NORMAL FOR A SPECIES? SENIOR VETERINARIAN DOCTOR GALL USES THE ULTRASOUND TO IDENTIFY ANATOMICAL STRUCTURES OF THE CORAL. SO THAT SPOT RIGHT IN THE MIDDLE IS ACTUALLY THE MOUTH OF THE CORAL. IT’S NONINVASIVE. HE DOESN’T EVEN HAVE TO TAKE THE CORAL OUT OF THE WATER. AND HE DOESN’T HAVE TO TOUCH THE ANIMAL TO SEE WHAT’S GOING ON INSIDE. IF WE HAVE QUESTIONS ABOUT WHETHER SOMETHING’S ABNORMAL, CAN WE ALSO USE AN ULTRASOUND TO EVALUATE IT, TO IDENTIFY LIKE, OKAY, THAT IS ABNORMAL FROM WHAT WE’RE USED TO AS NORMAL. BUT IT TAKES TIME TO GO THROUGH AND EVALUATE EVERY, EVERY SINGLE CORAL. LEARNING MORE ABOUT THE CORAL MAY UNLOCK THE MYSTERY BEHIND THE DISEASE THAT’S KILLING STONY CORAL IN THE OCEAN. THEY THOUGHT IT WAS A VIRUS AT FIRST, BUT NOW THEY’RE NOT SURE. I’M NOT SURE WHAT’S WHAT CAUSES THAT. SO STILL ONGOING RESEARCH. AND THAT MAKES THE WORK OF BLANK PARK ZOO EVEN MORE CRITICAL. WE’RE KIND OF SERVE AS LIKE A CORAL NURSERY OR LIKE A GENE BANK TO MAINTAIN OUR GENETIC POOL OF CORAL, WITH THE GOAL TO SPAWN THOSE CORAL AND PUT BACK THE YOUNG, THE YOUNG RECRUITS, THE BABY CORAL THAT WE CAN GROW UP. THE TEAM AT THE BLANK PARK ZOO. THE WORK IS CHALLENGING, BUT IT’S ALSO REWARDING KNOWING THAT THEY ARE MAKING A DIFFERENCE. SUPER IMPORTANT JUST TO RESTORE THE CORAL REEFS AND RESPOND TO THIS, YOU KNOW, DEVASTATING DISEASE THAT’S OUT IN THE OUT IN FLORIDA. AND HOPEFULLY WE GET TO PROPAGATE CORAL AND DO A TON OF COOL CONSERVATION WORK HERE IN CENTRAL IOWA. YEAH. WHO WOULD HAVE THOUGHT THAT FLORIDA CORAL REEF, FLORIDA CORAL COULD SURVIVE HERE IN CENTRAL IOWA? THEY DO FASCINATING WORK. BLANK PARK ZOO IS ONE OF 21 AZA INSTITUTIONS PARTICIPATING IN THE FLORIDA REEF TRACT RESCUE PROJECT. AND IF YOU’D LIKE TO SEE THE CONSERVATION WORK AT BLANK PARK ZOO, YOU CAN ACTUALLY BOOK A BEHIND THE SCENES TOUR ON THE ZOO’S WEBSITE. SO REALLY COOL. AND BY THE WAY, THE NATIONAL MISSISSIPPI RIVER MUSEUM AND AQUARIUM I
Updated: 6:35 PM CDT Jul 7, 2026
Editorial Standards ⓘ
Blank Park Zoo joins effort to save Florida coral reef from deadly disease
Updated: 6:35 PM CDT Jul 7, 2026
Editorial Standards ⓘ
A deadly disease called stony coral tissue loss disease is rapidly killing coral off the coast of Miami, threatening the largest coral reef in the United States, which stretches over 300 miles from Martin County to Dry Tortugas National Park. Blank Park Zoo in Des Moines is part of the Florida Reef Tract Rescue Project, working to save the coral through its “Salt Room,” a bio-secure, man-made life support system. “It’s a bio-secure system, trying to keep things clean because it’s all destined to restore the coral reef,” said Colin Brocka, a coral biologist at Blank Park Zoo.Inside the facility, hundreds of gallons of saltwater house coral rescued from the Florida coast are bathed in blue light to simulate underwater sunlight. “We’ve got about 10 different species in here and about 60 coral colonies,” Brocka said. These coral species are unique because they had never been kept in an aquarium or similar facility before, presenting a challenge for the Blank Park Zoo’s aquatics team. “The first step was figuring out how to keep them alive and how to take care of them,” Brocka said.The project has required a steep learning curve. “I’ve learned, like the right pattern of feeding, getting to know these different species of coral,” Brocka said. Since joining the effort in 2019, the team has made progress, but acknowledges there is still much to learn. “Part of the process over the last couple of years is, you know, how do we identify what normal is?” said Dr. Drew Gall, senior veterinarian at Blank Park Zoo. Gall uses ultrasound technology to study the coral’s anatomy, identifying structures like the mouth of the coral without removing it from the water or touching the animal. “If we have questions about whether something’s abnormal, can we also use an ultrasound to evaluate it, to identify like, OK, that is abnormal from what we’re used to as normal,” Gall said. “But it takes time to go through and evaluate every, every single coral.” The ongoing research may help uncover the mystery behind the disease killing stony coral in the ocean. “They thought it was a virus at first, but now they’re not sure,” Brocka said. “So still ongoing research.” The work at Blank Park Zoo is critical to preserving coral species and restoring the reef. “So we kind of serve as, like a coral nursery or like a gene bank, to maintain our genetic pool of coral, with the goal to spawn those coral and put back the young, the young recruits, the baby coral that we can grow up,” Brocka said. For the team, the effort is both challenging and rewarding. “It’s super important just to restore the coral reefs and, to respond to this, you know, devastating disease that’s out in, out in Florida,” Brocka said. “And hopefully we get to propagate coral and do a ton of cool conservation work here in central Iowa.” Blank Park Zoo is one of 21 Association of Zoos and Aquariums institutions participating in the Florida Reef Tract Rescue Project.To see this conservation work at Blank Park Zoo, you can book a behind-the-scenes tour on the zoo’s website.
DES MOINES, Iowa —
A deadly disease called stony coral tissue loss disease is rapidly killing coral off the coast of Miami, threatening the largest coral reef in the United States, which stretches over 300 miles from Martin County to Dry Tortugas National Park
Blank Park Zoo in Des Moines is part of the Florida Reef Tract Rescue Project, working to save the coral through its “Salt Room,” a bio-secure, man-made life support system
“It’s a bio-secure system, trying to keep things clean because it’s all destined to restore the coral reef,” said Colin Brocka, a coral biologist at Blank Park Zoo
Inside the facility, hundreds of gallons of saltwater house coral rescued from the Florida coast are bathed in blue light to simulate underwater sunlight
“We’ve got about 10 different species in here and about 60 coral colonies,” Brocka said
These coral species are unique because they had never been kept in an aquarium or similar facility before, presenting a challenge for the Blank Park Zoo’s aquatics team
“The first step was figuring out how to keep them alive and how to take care of them,” Brocka said
The project has required a steep learning curve
“I’ve learned, like the right pattern of feeding, getting to know these different species of coral,” Brocka said
Since joining the effort in 2019, the team has made progress, but acknowledges there is still much to learn
“Part of the process over the last couple of years is, you know, how do we identify what normal is?” said Dr. Drew Gall, senior veterinarian at Blank Park Zoo
Gall uses ultrasound technology to study the coral’s anatomy, identifying structures like the mouth of the coral without removing it from the water or touching the animal
“If we have questions about whether something’s abnormal, can we also use an ultrasound to evaluate it, to identify like, OK, that is abnormal from what we’re used to as normal,” Gall said. “But it takes time to go through and evaluate every, every single coral.”
The ongoing research may help uncover the mystery behind the disease killing stony coral in the ocean
“They thought it was a virus at first, but now they’re not sure,” Brocka said. “So still ongoing research.”
The work at Blank Park Zoo is critical to preserving coral species and restoring the reef
“So we kind of serve as, like a coral nursery or like a gene bank, to maintain our genetic pool of coral, with the goal to spawn those coral and put back the young, the young recruits, the baby coral that we can grow up,” Brocka said
For the team, the effort is both challenging and rewarding
“It’s super important just to restore the coral reefs and, to respond to this, you know, devastating disease that’s out in, out in Florida,” Brocka said. “And hopefully we get to propagate coral and do a ton of cool conservation work here in central Iowa.”
Blank Park Zoo is one of 21 Association of Zoos and Aquariums institutions participating in the Florida Reef Tract Rescue Project
To see this conservation work at Blank Park Zoo, you can book a behind-the-scenes tour on the zoo’s website
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


