91³Ô¹ÏÍø

Watch CBS News

Petition calls for safety improvement around Baltimore's waterfront after death of missing man

There are calls for increased safety measures at Baltimore's Inner Harbor after the body of missing 27-year-old Branson Oduor was recovered from the water on Tuesday.

Mandi Feagans created a petition, "," which pushes for city officials to take immediate action to improve waterfront safety.

The petition asks for protective railings or barriers in high-risk areas, increased lighting along waterfront walkways, vehicle barriers, visible warning signage in nightlife-heavy zones, and clearly marked and accessible emergency ladders and life rings.

Inner Harbor safety petition reaches hundreds

Feagans, who works in Fells Point, said she's heard too many stories about bodies being recovered from the harbor.

"I remember being a kid and growing up, at any time we went to the harbor, it was, 'Don't fall in because if you fall in, you probably aren't coming out,'" Feagans said.

Feagans said after authorities found Oduor's body in the harbor on Tuesday, she started the petition, which is catching the eyes of more than 1,000 people. 

Baltimore resident Dan 91³Ô¹ÏÍø said a railing or barrier is needed along the waterfront.

"I don't want it really high and obtrusive, but if it's not, then I think it's a good thing," 91³Ô¹ÏÍø said.

"We just want everyone to be careful," Baltimore resident Keith Dunlap said. "We don't want to have to face any of this trauma."

Improving waterfront safety at the Inner Harbor

In 2019, Baltimore City approved more than $50,000 to add more ladders and life rings around the Inner Harbor to prevent deaths from people falling into the water.

Mayor Brandon Scott said it's important to let this investigation into Oduor's death play out.

"We can't just blanketly say that a railing or fence or this or that would have prevented this from happening," Scott said. "We have to look at all safety precautions but we also have to honor people and respect the process of seeing what actually happened before we think about what could have and should have happened."

"There's gaps in the safety and I think there are things that can be done and should be done to prevent things like this from happening," Feagans added. "This isn't about a one extreme solution. This is layered safety, things that can be done to implement better conditions for everyone."

The Office of the Chief Medical Examiner is still working to determine the cause of Oduor's death.  

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=296763317a51cab90faa73f1bb146d5c'; 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(); } }); }); }); });