added loads of stuff