added lots of stuff