91³Ô¹ÏÍø

Watch CBS News

Judge sends case of man charged in Clinton Township explosion back to district court

A Macomb County Circuit Court judge has sent the case of the man charged in a fatal 2024 explosion in Clinton Township, Michigan, back to district court, according to legal records filed on Friday.

Noor Kestou, 33, of Commerce, Michigan, is charged with involuntary manslaughter in connection with the March 4, 2024, incident, which killed 19-year-old Turner Salter. The Macomb County Prosecutor's Office said a building he owned and operated, which had thousands of nitrous oxide and butane canisters, caught fire. 

According to the prosecutor's office, the blaze propelled some of the canisters into the air and caused a massive explosion. One of the nitrous oxide canisters, according to prosecutors, reportedly traveled a quarter of a mile before hitting Salter in the head. He later died from his injuries.

Prosecutors argue that Kestou's improper storage of the cannisters was a "proximate cause" of Salter's death and that he "reasonably could foresee flammable and oxidizing hazardous chemicals igniting, exploding, and potentially injuring or killing others," according to court documents. They also said his "excessive storage" of the cannisters "foreseeably would intensify a building fire to such a catastrophic degree that the inferno likely would expel projectiles at great range."

The case was bound over to the circuit court in October after a preliminary exam in Clinton Township's 41-B District Court.

According to the Macomb County Prosecutor's Office, Kestou filed a motion last December to dismiss the charge, arguing the fire, not his storage of the canisters, caused Salter's death. 

In January, prosecutors filed a response opposing the motion, Kestou filed a brief in support of it and the court heard arguments from both parties, court documents said. Judge Michael E. Servitto issued his opinion on the motion and ordered the case back to the district court on Friday. 

Servitto said probable cause exists that Kestou's storage of butane and nitrous oxide "factually caused" Salter's death, but preliminary exam evidence did not establish that his storage of hazardous materials "proximately" caused it, according to court documents. 

"Proximate cause requires that a defendant's actions be closely enough connected to a victim's injury to hold the defendant legally responsible," the prosecutor's office said. "The court found this element lacking and concluded that the district court abused its discretion in finding the storage of hazardous materials proximately caused the victim's death."

Macomb County Prosecutor Peter J. Lucido said prosecutors at future hearings in the district court will need to establish that Kestou's storage of the canisters presented a hazard that was the proximate cause of Salter's death.

NOTE: The attached video first aired on Nov. 3, 2025.

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(); } }); }); }); });