91³Ô¹ÏÍø

Watch CBS News

Methuen spa manager accused of human trafficking, neighbor credited with helping investigation

A health spa in Methuen, Massachusetts has been shut down by police and the manager has been arrested and charged with trafficking two other women to perform sex acts there, police say.

Police said complaints from a neighbor led to an undercover investigation at Beauty Garden Spa on Wallace Street and the arrest of the manager, who lives in New York City.

Neighbor assisted in police investigation

Beth Foote, who lives across the street, said she's been working with police for about two years to stop the human trafficking that was allegedly going on. She said she saw men coming in and out of the spa, from 9 a.m. to 10 p.m., driving luxury cars and even company work vehicles. She also said she saw girls with suitcases being brought to the spa on buses multiple times a month.

"Did I think twice about reporting it? Yeah, I did," said Foote. "Because, quite frankly, these women are not here because this is what their dream was. They're here because they got caught up in something they couldn't control."

During the investigation, police said they found living quarters for two women in the building's basement. That's what ultimately got the business shut down.

"They live downstairs, these women didn't speak English, they're absolutely trafficked," said Foote. "They didn't come up except to leave or to come, you didn't see anybody out, like, having a Coke. You saw people bringing food, supplies in and it was pretty blatant. It's not a surprise that this was happening."

Spa manager charged

On Friday, police arrested 38-year-old Suping Zhu, the manager of the spa. She's been charged with deriving support from prostitution, keeper of a house of ill fame and trafficking a person for sexual servitude. She'll be arraigned Monday in Lawrence District Court.

In the meantime, Foote said she worries about the women who police said were victimized at the spa.

"They just got moved someplace else and until they start going after the guys that are doing this, we're never going to resolve it and these women are going to be trafficked someplace else," said Foote.

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