Two boxers in the ring, wearing headgear, oversize gloves and groin protectors over top of their trunks, the way they do when sparring. They punched and parried, ducked and clinched, working instinctively but with purpose.
It's a scene that plays out daily in thousands of gyms around the world, an essential feature of every boxer's training regime. There was nothing unusual about it.
The unusual part came when the round-ending bell sounded and the boxers returned to their corners for a minute's rest and a sip of water.
Waiting for one of them was a 7-year-old boy, not much taller than the middle strand of ring rope. It was the boxer's son, the only person available that day to work his father's corner.
Such is the topsy-turvy life of Danny O'Connor, a blue-collar boxer with a telltale dented nose who finally got the break he feared would never come.
"Danny O," as he's called back home in Framingham, Massachusetts, is getting an improbable shot at junior welterweight titleholder Jose Ramirez on Saturday.
The fight will be staged at Save Mart Arena in Fresno, California, Ramirez's home turf, where almost 14,000 fans showed up the last time Ramirez fought at the venue. Make no mistake: O'Connor was chosen to make the local hero look good.
But O'Connor doesn't see it that way. Sure, O'Connor knows he is lucky to get a title shot, but he also believes he deserves to be there. And maybe he does.
Most honest workaday fighters think that way. The grind is so punishing both physically and mentally, they have a right to feel vindicated when good fortune comes their way.
How O'Connor ended up preparing for the most important fight of his life, with his son filling in for his regular trainer, is a story of one man's struggle to keep his family together and his championship dream alive.
So far, his career has been a study in frustration born of misfortune, bad timing and perhaps goals beyond reach -- a condition common among boxers. But it's also a story of how perseverance itself can be a victory, regardless of where it takes you.
"You can bet your ass I'm ready. I've been waiting for this and working toward it my whole life. You don't know how many times I thought this day would never come." Danny O'Connor
O'Connor is an accomplished boxer, but he always seems to fall just sort of his aspirations.
He was an alternate on the United States' 2008 Olympic boxing team, a well-regarded stand-in for a role that never materialized.
After returning to his hometown of Framingham, O'Connor turned pro that September. He got off to a good start and won his first 14 fights. Those were the good times. Everything and anything seemed possible.
Then came a reality check in the form of Gabriel Bracero, a tough Puerto Rican from Brooklyn, who beat him by a wide unanimous decision in April 2011.
Things were never quite the same after that. They seldom are after the thin cloak of invincibility has had a couple of holes punched through it.
"My first pro loss was incredibly crushing," O'Connor said.
He also had his first taste of a situation that would eventually pull him in so many different directions at once it became borderline farcical.
"I went through a whole pregnancy with a girl I had just met," O'Connor said. "My kid was only a month old when I fought Bracero."
Getting married, becoming a father and losing a fight were both new to him, so he turned to what he knew best and was back in the ring in less than five months.
It was decided that a fresh start with a new trainer was in order, and O'Connor moved to Texas to work with Ronnie Shields. But the distance between O'Connor and his wife was such a strain, they were on the verge of divorce.
"My family isn't going to take a backseat to anything," O'Connor said, "so I quit the sport of boxing, went home and got a job at Trader Joe's."
It took a while to get use to the stares of customers who must of wondered why a well-known local boxer was working in a grocery store. But O'Connor learned to deal with it.
"I didn't care because I was doing what I had to do," O'Connor said. "I'm a father and a husband and have two young kids. They're my priority. I stayed at Trader Joe's until my family was in a good place, and then came back to boxing."
O'Connor started winning again, fighting almost exclusively in New England in order to be close to home.
He also became of member of the Framingham Fire Department.
"It's scarier than boxing," O'Connor explained. "It's more of a real feeling because at any moment things can go wrong. Your life is on the line. But firefighting is the only thing I found in my life I love as much as boxing."
By October 2013, he had won 12 of the 13 bouts he fought since the Bracero loss, and the time seemed ripe for a rematch. But it turned out to be an even bigger disaster than their first encounter.
Early in the first round, Bracero fired a short right hand that landed flush on his O'Connor's jaw. O'Connor crashed down on his back with such a resounding thud that the referee stopped the fight without bothering to count.
O'Connor laid there motionless for about five minutes before regaining his feet. It was about as definitive a knockout as you get. His chance of redemption was all over in just 41 seconds.
Who can define what makes a fighter keep going after enduring such a traumatic defeat? Pride, stubbornness, money, not knowing what else to do? Then there's suspension of disbelief and craziness, lots of craziness. It's what fighters do until they can't do it any more.
"It hasn't been the most traditional training camp where I seclude myself and just focus on boxing. I've had to be a dad, a husband and a fighter. But do you know what? That makes me even more of a savage." Danny O'Connor
O'Connor launched his latest comeback the following year, and four victories later, he had gained enough traction to be deemed just what the matchmaker needed -- a respectable but relatively easy challenger for Ramirez's first defense.
But O'Connor knew it might be opportunity's last knock and embraced the chance -- to hell with the odds.
Then life, as it has an uncomfortable habit of doing, got complicated.
"I was a firefighter until about a month and a half ago," O'Connor said this week, regret still lingering in his voice. "But my wife wanted something different out of life, wanted to move out of Massachusetts."
"Resigning from the fire department was one of the hardest things I've ever had to do, but ultimately, it was what I did," he said. "My wife has always supported me in whatever I wanted to do, so I fully support something she wanted to do.
"She wanted to go to Austin, Texas, and we were in the midst of moving when I was offered this huge fight against Ramirez. I knew if my family wasn't situated, I wouldn't be able to train the way I needed to, so I packed up my whole life into a car and drove from Boston to Austin with my wife and two young kids."
That trip, however, wasn't the end of O'Connor's long, circuitous journey to a title fight in Fresno. It was soon time to gas up the car.
About a week before he was scheduled to go to training camp in Colorado Springs, Colorado, his wife decided she didn't really love Austin as much as she thought she would. It was time to hit the road again.
The O'Connor family found a new home in Colorado Springs.
But just as the O'Connor was finally ready to get down to some serious work, his trainer, A.J. Thomas, was busy with another fighter and had yet to arrive at camp.
There was no alternative but to recruit his son to temporarily carry the spit bucket and wield the towel. American painter Norman Rockwell could have done wonders with the scene.
It's all going to get terribly real on Saturday. O'Connor (30-3, 11 KOs) is a prohibitive underdog, so you can't help but wonder, after all the turmoil leading up to the fight, whether he is ready for the chance of a lifetime.
"You can bet your ass I'm ready," O'Connor said. "I've been waiting for this and working toward it my whole life. You don't know how many times I thought this day would never come.
"It hasn't been the most traditional training camp where I seclude myself and just focus on boxing. I've had to be a dad, a husband and a fighter. But do you know what? That makes me even more of a savage."
It's bound to be an uphill battle for O'Connor. Ramirez (22-0, 16 KOs) is rated No. 2 welterweight in the world by ESPN.com and is an extremely popular figure in central California; he's supposed to be the fighter with a future.
Boxing has plenty of guys like O'Connor, good but probably not good enough. But it is his turn Saturday to try to change all that. He has a sliver of a chance, no bigger than the crack of light under a closed door, but it's better than no chance at all.
Besides, O'Connor has a delightfully straightforward plan to take Ramirez's belt:
"I'm going to punch him in the face more times than he punches me."