added Purity::Mouse and did more porting