thanks to kevin123 lots of changes