91³Ô¹ÏÍø

Watch CBS News

Buckthorn threatens Eden Prairie spring, but a volunteer group is fighting back

EDEN PRAIRIE, Minn. — A group of dedicated volunteers are fighting for a true marvel of nature in Eden Prairie.

The Fredrick-Miller Spring has a steady stream of visitors who make regular trips to the groundwater tap to fill up whatever containers they can. The spring has been in continuous use since the 1800s. It's always running and is completely free.

Willow Halonen has enjoyed the well water since 2008.

"I don't drink coffee, tea, anything else," she said. "I just drink this water."

Now, Halonen is helping lead the fight to preserve the spring and the surrounding land.

A few years ago, she helped push back against a subdivision development proposal. Halonen says the project is now in litigation.

The latest encroachment is the invasive species, buckthorn.

"The traditional process of buckthorn removal will contaminate the groundwater, because it puts herbicide down to kill the buckthorn," Halonen said.

For months, Halonen and others have visited on their own time to cut as much buckthorn down as they can.

"It's almost an Indigenous way of being, saying, 'Hey, we're here to care for the land,'" said Jeff Borowiak, another volunteer. "We're doing a long-term approach to it in terms of stewardship."

Halonen says she'll move if the water gets contaminated. Her passion isn't as contagious as she and the volunteers would like. They're always looking for people to help.

"This environment has to matter to everybody, especially the water-drinkers," Halonen said.

Borowiak says his work as a volunteer steward has been immensely rewarding.

"Part of the fulfillment of life, at least for me, is caring for a chunk of land and committing to it," he said.

The city of Eden Prairie says it's happy the volunteers are cutting the buckthorn. If they weren't, the city says it wouldn't be using herbicides near the spring, even though it does use herbicides in other places.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=fd53910ecf4604072044ab7c46d9b028'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });