Naked Killer

Kitty (Chingmy Yau) is a vicious young woman who has no qualms about stabbing girlfriend-bullying men in the genitals. Tinam (Simon Yam) is a cop who is undergoing a rather traumatic period: he shot his own brother by accident and as a result vomits every time he handles his gun.
When Kitty severely injures a man by stabbing him in the groin, Tinam attempts to arrest her but fails. Kitty later turns up at the police station and manipulates the facts to the point that Tinam has no choice but to start a relationship with her. This reveals Kitty as a subtle manipulator. Tinam, who has become impotent, finds that he no longer feels the same way about Kitty, who is content with leading him on.
Kitty's father is married to a new wife but the marriage is tense. One evening he catches her cheating on him with another man called Bee (Ken Lo). In the fight that follows, Kitty's father falls down the stairs and is killed.
Furiously determined to seek revenge, Kitty breaks into Bee's office and proceeds to kill him, his bodyguards and most of his staff (there is some indication that he is involved with organised crime). In the course of her escape she takes a woman hostage but, unexpectedly, the woman helps her out, disposing of many of the pursuers herself.
The woman turns out to be Sister Cindy (Wai Yiu) who is in fact a professional assassin. She was out to kill Bee herself before Kitty intercepted. Seeing that Kitty has potential, she proceeds to train her and gives her a new identity. The training includes the killing of enraged, chained-up paedophiles in Sister Cindy's cellar. Before long, the pupil outsmarts the teacher.
For her first mission, Kitty accompanies Sister Cindy and murders a member of the Japanese yakuza. This leads to a contract being placed on them and the assignment is entrusted to Princess (Carrie Ng), one of Sister Cindy's former protÃ©gÃ©s and a lesbian with an equally deadly young lover called Baby (Madoka Sugawara).
While investigating the murder himself, Tinam goes to check up on an air hostess whom the victim met prior to his death. The witness is Vivian Shang, who Tinam recognises as Kitty. She denies this but renews their relationship.
Sister Cindy proceeds to murder other people who could connect Kitty to Vivian Shang, including Tinam's superior and a witness to the groin-stabbing incident. Kitty does however stop her from killing Tinam himself. Kitty and Tinam consummate their relationship, but their different professions means that it will be difficult for things to go any further.
Sister Cindy for her part decides that Kitty has lost the killer touch, but on the other hand has found happiness with Tinam, and tells her to leave and make the most of it.
Princess, who is supposed to kill Kitty, becomes obsessed for her, leading to some conflict with Baby. They set about killing Sister Cindy who, with death approaching, puts up a good fight. But she is ultimately defeated due to a ploy used by Princess earlier that day. Princess had kissed Sister Cindy with poisonous lipstick, which, combined with some wine she has drunk, kills her.
Kitty goes into hiding but later confronts Princess, apparently willing to become her partner both in business and in bed. Princess subsequently falls into the same trap she set for Sister Cindy: when they kiss, Kitty passes on some poisoned lipstick of her own. Tinam then bursts in, shooting away at Princess' henchmen, apparently having overcome his vomiting problems.
In the battle, Tinam kills Baby and a furious Princess pursues him and Kitty back to Sister Cindy's home. The poison in her system catches up with her however and she dies with Kitty taunting her by claiming that she on the other hand will get to hospital in time to survive.
By this time, the poison inside Kitty has taken effect. Unwilling to lose her again, Tinam fires his gun into the gas oven causing the house to go up in flames with the two of them inside.

Question: Who killed Sister Cindy?
Answer: Princess