91³Ô¹ÏÍø

Watch CBS News

Pennsylvania State Police Cpl. Timothy O'Connor remembered as hero at funeral: "Tim's legacy will live on"

Funeral services were held Wednesday for Pennsylvania State Police Trooper Timothy O'Connor, who died in the line of duty after being shot during a traffic stop in Chester County earlier this month.

Family, friends and fellow troopers filled St. Joseph's Parish in Downingtown on Wednesday to honor O'Connor. Outside, hundreds of law enforcement officers from around the country gathered to pay their respects. The word repeatedly said by family members and state police leaders was hero.

"Tim's legacy will live on in this department, in the communities he protected and in the lives he touched," Lt. Col. George Bivens, acting commander of the PSP, said.

"My husband was a steady man," Casey O'Connor said. "A reliable man."

Pennsylvania State Police Cpl. Timothy O'Connor Jr.
Pennsylvania State Police Cpl. Timothy O'Connor Jr. Pennsylvania State Police

Casey O'Connor said her husband was a proud and devoted trooper who relished his role of mentoring young cadets. But above all else, he was a family man, a loving husband and father to their 7-year-old daughter.

"From cutting the grass to working on house projects, she was by his side," Casey O'Connor said. "He made sure that Kenzi never wanted for anything, and he gave his whole heart to her. And that love will carry on."

Investigators say on March 8, O'Connor pulled over an erratic driver in West Caln Township. When he approached the driver's door, officials say that the driver shot the trooper, killing him.

Many of those community members lined Manor Avenue, holding signs and American flags as the procession came by. Though most didn't know O'Connor personally, they felt a need to be here.

"I think it's really important to show the community's support," Patty Cleveland of Lindale said.

"I have a brother who is in law enforcement in New Jersey and a nephew who's an Alaskan state trooper," Don Klingen of Honey Brook said. "And in their name, I'm here too."

While the family continues to grieve this devastating loss, Casey O'Connor has a message for her husband's fellow troopers.

"Do not let the bad of the world tarnish your mission of protecting with integrity," she said.

Cpl. O'Connor had been with the Pennsylvania State Police since he enlisted in 2010. He was laid to rest Wednesday in a private family ceremony.

If you or someone you know is in emotional distress or suicidal crisis, call or text the National Suicide Prevention Hotline at 988. CBS News Philadelphia also has a list of mental health resources.

For more information about mental health care resources and support, The National Alliance on Mental Illness (NAMI) HelpLine can be reached Monday through Friday, 10 a.m.–6 p.m. ET, at 1-800-950-NAMI (6264) or email info@nami.org.

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=50747257b890e014813016b79ece0fb2'; 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(); } }); }); }); });