added a poop load of stuff