In the last seconds before the crash, some kids on the school bus saw the semi-truck coming.
"It was pretty scary," said Sierra Clarke, 13, who was sitting near the back of bus No. 369 on Monday morning when it crossed the highway centre line and slammed into a semi-truck in northern Alberta.
LISTEN: Sierra Clarke describes the bus crash.
"My friend, she was looking toward the front, she was looking toward the windshield," Clarke said a few hours after the crash. "She had a couple of seconds to brace herself for the impact, because she saw it coming. She didn't have time to warn us."
The bus driver was killed and 14 students were sent to hospital.
Clarke was near the back, but her younger brother and sister were sitting up front, with the elementary school kids.
Right after the crash, she said: "Everybody was quiet for a second. I started yelling for my sister. And I got up and looked around. The back part of the bus was still OK. The front was all twisted and messed up."
She helped a friend with a broken foot who remembered having breakfast that morning but nothing after that. Someone got the back door open and she helped her little sister off the bus.
"I went back to the front of the bus, and my brother, he was stuck, really stuck. I had to wiggle him free. I sort of had to half-drag him, half-lift him down the aisle to get him to the back."
She got off the bus and looked around. "There was blood all over my friends. It was pretty freaky. I don't know how I kept it together."
RCMP say the bus was travelling south on Highway 35, north of Grimshaw, Alta., when it appeared to cross into an opposing lane, where it collided with the truck just before 8:30 a.m..
The 60-year-old bus driver died on the way to hospital. Fourteen elementary and high school students on the bus were injured. One was flown to hospital in Edmonton with non-life-threatening injuries, while seven were taken to hospital with broken limbs and other serious wounds.
The remainder were treated for minor injuries. The 36-year-old driver of the truck was also seriously injured and taken to hospital.
Clarke said the driver had only been driving the route for the past week. "He was a nice guy. He was quiet though. He was really friendly to anyone he met."
Nathan Sorenson lives in Dixonville, a tiny hamlet about 40 kilometres north of Grimshaw.
He said his 13-year-old son, Cody, was also seated near the back with the older kids.
"He was asleep," Sorenson said of his son, "and the next thing he knew he was thrown to the floor."
Sorenson said his son, who was not injured, told him that other drivers on the road were quick to stop and offer help.
Cpl. Carol McKinley told CBC News the students were on their way to schools in the Peace River area.
Crash investigators are now trying to determine the cause of the collision.
Paul Bennett, superintendent Peace River School Division, went to the scene shortly after the crash.
"Some kids had already left by ambulance," he said.
Others were with their parents, who rushed to the scene in their cars and trucks.
"Folks were quite distraught," Bennett said. "Some appeared to be in shock."
Students still at the scene were being interviewed by RCMP, he said. "Most of the kids were still in shock. Or didn't know really what had happened."
Nine of the students attended public schools in his division. The others attended Catholic schools from the Holy Family Separate School Division.
Bennett said his school board sent letters home to parents Monday afternoon to tell them what happened. The school board has already arranged for counsellors to be available in all schools.
"Given that this has just happened today, we're doing as much as we can as quickly as we can."
The man at the wheel of the bus was a spare driver who took shifts with the school division, Bennett said. He lived in Grimshaw.
The injured students ranged in age from 8 to 18.
"A sudden death of this sort has a significant impact on a community," he said. "We see ourselves as one big extended family."
The Peace River School Division has 3,000 students spread among 20 schools.