added lots of new stuff