:) modified greatly so it is my own work