A soon to be "retired" agent of the Department of public safety Errol Babbage (Richard Gere) is forced to train his protege Allison Lowdy (Claire Danes) before he is forced out of his job. When a 17 year old girl Harriet Wells goes missing, Babbage vows to find her before he leaves the job, becoming more and more obsessed.
It turns out that one of Babbage's "flock" Viola Faye (Kadee Strickland) had partnered up with two other offenders Glenn Custis and Edmund Grooms to kidnap and murder girls for their own fetishes. Custis is killed by Faye. Babbage and Lowdy go to Faye's old residence and think they found Wells' body. But it is actually the body of Beatrice Bell (Arvil Lavigne), Edmund's abused girlfriend.
Babbage and Lowdy track down the two killers/rapists as they are about to kill Harriet. Viola kills Edmund and tries to spin a self defense story but Babbage sees through that. Babbage takes her away and forces Viola to show him where her other victims are (one being Allison, a former case Babbage couldn't close). Viola goads Babbage to kill her but Babbage ultimately resists and takes her into custody.
Babbage is able to give Abagail's family closure and they bury their daughter, which Babbage and Lowdy attend . Babbage retires a hero and finally recieves respect from his colleagues for saving Harriet's life.