Mahri Stáinnak at Fisherman’s Point in South Portland on Wednesday. Brianna Soukup/Portland Press Herald
Mahri Stáinnak fell in love with being a federal worker after more than a decade spent overseeing sewage systems and keeping public waterways clean with the Environmental Protection Agency.
Stáinnak, who lives in the Portland area, was honored in 2021 to join the Office of Personnel Management, which oversees the federal workforce, and then was shocked earlier this year when they learned they were being placed on paid administrative leave following a pair of executive orders targeting programs related to diversity, equity and inclusion.
Especially because Stáinnak’s current job had nothing to do with DEI.
Advertisement
“I just felt fear,” Stáinnak said in a phone interview Wednesday, recalling when they received the news in the middle of dinner. “My wife was there, my toddler was picking up on the stress and crying. I started panicking because I’m the sole breadwinner right now.”
Stáinnak, who uses they/them pronouns, had just taken the job in talent recruitment less than a month before and is now appealing their removal in a complaint filed Wednesday before the Merit Systems Protection Board.
Stáinnak argues that their firing was an attempt to unlawfully punish them for their perceived political affiliations and their previous work on DEI, “without regard to the worker’s skills or current job assignment.”
President Donald Trump signed two executive orders on Jan. 20: one for “Ending Illegal Discrimination and Restoring Merit Based Opportunities” and the other for “Ending Radical and Wasteful Government DEI Programs and Preferences.” Trump has accused these programs of being discriminatory against non-minority groups, such as white men, and unnecessary.
Stáinnak’s lawyers say this violates Stáinnak’s First Amendment rights, and that the firings had an impact on marginalized workers in particular.
Advertisement
“The First Amendment prohibits retaliating against people for their political beliefs or their perceived political beliefs,” said Scott Michelman from the American Civil Liberties Union of Washington, D.C. “He went after folks like Mahri, not for what they were doing when they were put on leave and then fired, but for what they used to do.”
At least three other people plan to join Stáinnak’s appeal, including two fired employees from the Department of Labor and one from the Federal Aviation Administration. None of whom were working in DEI-related jobs when they were fired.
Their attorneys suspect the actual number of plaintiffs will be much higher if they are granted class-action status.
In addition to an appeal hearing, Stáinnak’s lawyers have also requested that the government turn over its lists of employees who were fired under Trump’s DEI orders, as well as “communications and guidance from OPM to agencies related to the identification of positions” that were targeted.
When asked about Stáinnak’s appeal, a spokesperson for the Department of Justice wrote in an email that they have “vigorously defended President Trump’s actions, including the order to end radical wasteful government DEI programs, and will continue to do so.”
Advertisement
White House spokesperson Anna Kelly said that Trump has the authority to manage personnel across the executive branch.
It’s unclear how soon Stáinnak’s appeal will be considered. It will first be heard by the Merit Systems Protection Board, a quasi-judicial agency whose primary function is to protect federal workers “against partisan political and other prohibited personnel practices.”
“Unfortunately, the Merit Systems Protection Board is not the fastest moving agency, and they are likely to be flooded with claims, particularly right now, with all the disruptions to the federal work force brought about by Trump and Musk,” Michelman said.
If Stáinnak and the rest of the class are unsuccessful in their appeal, Michelman said they have a right to file their case in federal court.
In the meantime, Stáinnak said Wednesday was their last day of paid administrative leave. Over the last couple of months, they have worried about how they’ll afford their mortgage and support their family.
Advertisement
But Stáinnak also believes there’s a greater toll for thousands of nonpolitical career civil servants who have benefited from OPM’s work on expanding their health insurance benefits and working conditions.
“This is patently unfair, unjust,” Stáinnak said. “I want to get back to work on a job that I feel so passionate about, and excited for. I am a proud federal employee, and I know so many other proud federal employees. Let us get back to work.”
For decades, I have walked the beat, patrolled our roads, and worked within our halls of justice to keep Maine families safe. From my early days as a deputy sheriff in Kennebec County to my time in the State Senate, my guiding star has always been the rule of law.
But today, I look at our state and see a growing shadow. Maine is in real trouble, and if we do not act decisively, the safety and security we once took for granted will become a relic of the past.
We are currently facing a convergence of crises: an unchecked drug epidemic, a rise in organized crime, and a legal system that too often prioritizes the comfort of the offender over the protection of the victim. Our law enforcement officers are being asked to do more with less, facing recruitment shortages and a political climate that often feels more hostile than supportive. Maine doesn’t just need a manager in the governor’s office; we need a proven crime fighter. That is why I am proudly endorsing Bobby Charles for governor.
Advertisement
A Career Built on Justice
My endorsement isn’t based on political convenience; it’s based on a shared lifetime of service. My own career has been defined by the front lines—serving as one of Kennebec County’s most decorated deputies, receiving the Valor and Life Saving awards, and spending years as a D.A.R.E. coordinator to keep our kids off drugs. I know what professional, effective law enforcement looks like.
Bobby Charles doesn’t just talk about “law and order”—he has lived it at the highest levels. Bobby served as the Assistant Secretary of State for International Narcotics and Law Enforcement Affairs. He led the fight against global drug cartels and worked as chief counsel in the U.S. House of Representatives, overseeing national security and criminal justice. He understands the mechanics of crime from the street level to the federal level.
The Stakes for Maine
The statistics are sobering. While Maine remains a beautiful place to live, our small towns are being hollowed out by fentanyl, and we are now being targeted by sophisticated international crime syndicates. We are seeing hundreds of illegal, Chinese-owned marijuana houses popping up in our quiet neighborhoods, bringing with them a wave of foreign money laundering and a direct slap in the face to our sovereignty.
Advertisement
Bobby Charles has made a clear, no-nonsense promise: he will increase the law enforcement presence across all 16 counties and ensure that federal and state authorities are working together, not at cross-purposes, to shut these cartels down. He is the only candidate with the background to dismantle the trafficking networks that treat our state like an open market.
As I’ve often said, “Maine is at a crossroads where the safety of our citizens must come before the politics of the day.” We cannot afford to experiment with leadership. We need a governor who has stared down criminals and understands the weight of a badge.
Bobby Charles is a man of integrity, experience, and action. He is the crime fighter Maine needs to restore the peace and ensure that our state remains the safest place in the nation to raise a family. Join me in supporting a leader who will always have the backs of those who wear the uniform.
Scott Cyrway is a Republican State Senator from Albion and a former Kennebec County Deputy Sheriff.
Maine Mariners clinch home ice for first round of playoffs
Advertisement
NA
Advertisement
Maine Mariners clinch home ice for first round of playoffs
Updated: 10:38 PM EDT Apr 11, 2026
Editorial Standards ⓘ
Advertisement
The Maine Mariners will have home ice in the first round of the ECHL Playoffs. Games 1 and 2 in Portland will be on April 24th and 25th at 6:00pm.
The Maine Mariners will have home ice in the first round of the ECHL Playoffs. Games 1 and 2 in Portland will be on April 24th and 25th at 6:00pm.
Advertisement
Advertisement
`;
}
function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}
function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;
function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});
var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}
function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}
var location = { zip: window.DEFAULT_ZIPCODE };
try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}
Advertisement
var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;
if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}
function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;
var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);
if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.wmtw.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.wmtw.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}
Advertisement
function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;
var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}
var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}
var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}
var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}
Advertisement
var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}
function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;
if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);
Advertisement
for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex
`;
}
function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}
function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;
function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});
var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}
function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}
var location = { zip: window.DEFAULT_ZIPCODE };
Advertisement
try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}
var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;
if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}
function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;
var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);
Advertisement
if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.wmtw.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.wmtw.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}
function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;
var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}
var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}
var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}
Advertisement
var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}
var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}
function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;
Advertisement
if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);
for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex
HELPED MORE THAN 300,000 VETERANS VISIT THE MEMORIALS BUILT IN THEIR HONOR. YOU MAY KNOW HER FROM HER POPULAR GOAT YOGA CLASSES… OR THE INSPIRING ‘YOGA FOR GOOD’ SERIES. ASHLEY FLOWERS’ WORK IS ALL ABOUT BRINGING PEOPLE TOGETHER. JAMIE AZULAY INTRODUCES US TO THIS WEEK’S COMMUNITY CHAMPION. THIS MAY LOOK LIKE A CLOTHING STORE – IT IS… BUT IT’S ALSO A MAKESHIFT YOGA STUDIO. TOAD AND CO IN PORTLAND IS ONE OF SEVERAL SPOTS YOU CAN FIND ASHLEY FLOWERS LEADING LOCAL YOGIS IN THEIR PRACTICE. “I THINK HEALTHY COMMUNITIES ARE WELL CONNECTED COMMUNITIES.” AND IT’S HERE ON DIAMOND STREET WHERE ASHLEY LEADS ‘YOGA FOR GOOD’ – DONATION-BASED CLASSES THAT SUPPORT LOCAL NON-PROFITS. “EXPERIENCING THAT SENSE OF JOY AND HAPPINESS AND PEACEFULNESS THAT YOGA BRINGS, AND KNOWING THAT YOU’RE ALL COMING TOGETHER TO DO SOMETHING GOOD FOR YOURSELVES AND THE WORLD, I THINK, IS REALLY POWERFUL.” IN 2 YEARS — 2-THOUSAND DOLLARS HAS BEEN RAISED FOR 9 NON-PROFITS… AND SHE’S ADDING MORE TO THE LINE-UP. THIS WEEK… IT WAS ALL ABOUT THE ADAPTIVE OUTDOOR EDUCATION CENTER AND THEIR MISSION TO PROVIDE RECREATION PROGRAMMING FOR PEOPLE WITH DIFFERENT ABILITIES. “IF YOU CAN BREATHE, YOU CAN DO YOGA. YOGA IS ACCESSIBLE TO EVERYONE.” “SHE ALWAYS HAS SUCH GREAT MESSAGES AS A PART OF BEING IN THE YOGA CLASS. IT’S NOT JUST COMING TO YOGA AND STRETCHING AND BREATHING, BUT ALSO WHAT CAN YOU GIVE BACK TO THE COMMUNITY AND HOW CAN WE WORK TOGETHER TO SUPPORT EACH OTHER?” COMMUNITY… AND MAKING THE WORLD A BETTER PLACE… IS WHAT ASHLEY SAYS YOGA IS ALL ABOUT. “IF YOU COULD HELP PEOPLE TO CULTIVATE A SENSE OF RESPECT FOR THEMSELVES, THEN MAYBE YOU COULD HAVE THAT SENSE OF RESPECT TO BUBBLE OUT INTO THE WORLD, AND HEAL THE WORLD
Advertisement
Yoga for Good: Maine woman raising money through movement
Updated: 11:49 AM EDT Apr 11, 2026
Editorial Standards ⓘ
Advertisement
Ashley Flowers started “Yoga for Good,” a donation-based class series in support of local nonprofits, in 2024. Since then, she’s raised $2,000 for nine organizations.Flowers said, “Experiencing that sense of joy and happiness and peacefulness that yoga brings, and knowing that you’re all coming together to do something good for yourselves and the world, I think, is really powerful.”Toad & Co hosts “Yoga for Good” in the back of their Portland clothing store. After class, they collect payment, which is a suggested $15 donation. However, attendees are encouraged to pay what they can. “I don’t ever want to turn someone away from yoga because money is an issue,” Flowers said. All proceeds go directly to the cause. The most recent class on April 10 was held in support of the Adaptive Outdoor Education Center. The AOEC is a nonprofit aimed at providing recreation programming for people with different abilities. Inclusivity is a priority in Flowers’ practice. “If you can breathe, you can do yoga,” she said. “Yoga is accessible to everyone.” The AOEC has been the beneficiary of five Yoga for Good classes. When asked about working with Flowers, the nonprofit’s program and development coordinator, Alessa Foley, said, “She always has such great messages as a part of being in the yoga class. It’s not just coming to yoga and stretching and breathing, but also what can you give back to the community, and how can we work together to support each other?”That’s what Flowers thinks yoga is all about. She said, “If you could help people to cultivate a sense of respect for themselves, then maybe you could have that sense of respect to bubble out into the world and heal the world.” When Flowers is not teaching at Toad & Co, you may find her leading goat yoga at Smiling Hill Farm, online classes, or workshops at other local farms. She feels operating without a brick-and-mortar studio is a good way to support her community by drawing people into local businesses. “I think healthy communities are well-connected communities,” she said. Flowers has already lined up the next five Yoga for Good classes, which will run through September. RSVPs can be made on her website. Fri. May 8 at 8 a.m. — Adaptive Outdoor Education CenterSat. June 13 at 9 a.m. — Dempsey CenterSat. July 11 at 11 a.m. — Impact HorseSat. August 8 at 9 a.m. — Dempsey Center Fri. Sept 11 at 8 a.m. — Sea Change Yoga
PORTLAND, Maine —
Ashley Flowers started “Yoga for Good,” a donation-based class series in support of local nonprofits, in 2024. Since then, she’s raised $2,000 for nine organizations.
Flowers said, “Experiencing that sense of joy and happiness and peacefulness that yoga brings, and knowing that you’re all coming together to do something good for yourselves and the world, I think, is really powerful.”
Advertisement
Toad & Co hosts “Yoga for Good” in the back of their Portland clothing store. After class, they collect payment, which is a suggested $15 donation. However, attendees are encouraged to pay what they can. “I don’t ever want to turn someone away from yoga because money is an issue,” Flowers said.
All proceeds go directly to the cause. The most recent class on April 10 was held in support of the Adaptive Outdoor Education Center. The AOEC is a nonprofit aimed at providing recreation programming for people with different abilities.
Inclusivity is a priority in Flowers’ practice. “If you can breathe, you can do yoga,” she said. “Yoga is accessible to everyone.”
Advertisement
The AOEC has been the beneficiary of five Yoga for Good classes. When asked about working with Flowers, the nonprofit’s program and development coordinator, Alessa Foley, said, “She always has such great messages as a part of being in the yoga class. It’s not just coming to yoga and stretching and breathing, but also what can you give back to the community, and how can we work together to support each other?”
That’s what Flowers thinks yoga is all about. She said, “If you could help people to cultivate a sense of respect for themselves, then maybe you could have that sense of respect to bubble out into the world and heal the world.”
When Flowers is not teaching at Toad & Co, you may find her leading goat yoga at Smiling Hill Farm, online classes, or workshops at other local farms. She feels operating without a brick-and-mortar studio is a good way to support her community by drawing people into local businesses.
“I think healthy communities are well-connected communities,” she said.
Flowers has already lined up the next five Yoga for Good classes, which will run through September. RSVPs can be made on her website.
Advertisement
Fri. May 8 at 8 a.m. — Adaptive Outdoor Education Center