The House on Carroll Street

Emily Crane (Kelly McGillis), a picture editor for Life magazine], is fired after refusing to give names to a 1951 House Un-American Activities Committee and takes a part-time job as companion to an old lady. One day her attention is drawn to a noisy argument being conducted in a neighboring house. She eavesdrops through an open window, seeing that one of those involved is her main senator prosecutor, Ray Salwen (Mandy Patinkin). His opponent is an elderly man who speaks only German; a younger man named Stefan (Christopher Buchholz), whom Emily had earlier asked for directions, is interpreting their confrontation.
Emily meets Stefan on the street again and attempts to press him for information; when he rebuffs her, she follows him to a cemetery, where he demands to know why she is interested. They arrange a later meeting at a book shop, but are accosted by two men claiming to be US Immigration agents, which a panicked Stefan denies. He and Emily escape their pursuit, but before Stefan can tell Emily more, he is murdered by a knife-wielding assassin. During the crime scene investigation, the police find a list of four names in Stefan's pocket, and Emily insists that they search the house where she overheard the argument.
The police are skeptical of Emily's story, so she decides to search the house herself; the assassin reappears, but is thwarted by FBI agent Cochran (Jeff Daniels), who has been keeping an eye on Emily for several days. After a scuffle, the assassin flees, and Cochran takes Emily home â but not before she picks up a book with a woman's name and a date written inside the cover. Cochran and his partner, Hackett (Kenneth Welsh), deduce that the name is actually that of a ship, and that it will be arriving in the Port of New York City the next day. Cochran and Emily observe the ship's arrival, but the intrigue grows when Cochran notes government officials present to receive some of the passengers.
Rather than take immediate action, they follow the passengers to a wedding party, where Emily recognises one of the group as the man who had the heated argument with Salwen â only he now speaks fluent English and introduces himself as Teperson, one of the names on Stefan's list. Emily slips away, eavesdrops on another conversation and learns that the group will be leaving on a train for Chicago the next evening. This time, she is intercepted by bodyguards and taken to a restaurant where Salwen is waiting to meet her.
Cochran, meanwhile, views a series of intelligence photographs featuring the men who are named on the list; they are all Nazi war criminals travelling under false names, being smuggled into the United States to participate in top-secret anti-Soviet scientific programs. Salwen cryptically reveals as much to Emily, who returns home to find Cochran trying to disarm a bomb rigged to several of her kitchen appliances. They escape Emily's apartment seconds before the bomb explodes, and though Cochran is removed from the investigation, Emily goes ahead to Grand Central Terminal to catch the party before their departure.
Cochran disobeys orders and meets Emily at the station; the assassin makes another attempt on Emily, but is subdued by Cochran and Hackett. Outrunning Salwen's other henchmen, Emily is finally cornered by Salwen in the framework of the station's ceiling, where he makes one last attempt to convince her of the greater good of the smuggling operation. When he tries to restrain her physically, she kicks him off a catwalk, whereupon Salwen crashes through the ceiling and falls to his death.
Cochran and Emily board the train carrying the criminals in the nick of time, where Cochran places the entire party under arrest. He loudly reveals to the other people on the train that Teperson is actually a physician who performed deadly experiments on prisoners at Auschwitz. Case closed, Emily returns to her part-time job as Cochran informs her that he is being transferred to Butte, Montana, and it is not likely that they will see each other again.

Question: Who killed Salwen?
Answer: Emily